updated code
This commit is contained in:
parent
e998cb829e
commit
9124dc99ed
13 changed files with 920 additions and 58 deletions
3
ev_station/.gitignore
vendored
3
ev_station/.gitignore
vendored
|
@ -19,4 +19,5 @@ web-build/
|
|||
expo-env.d.ts
|
||||
# @end expo-cli
|
||||
|
||||
.env
|
||||
.env
|
||||
app/misc/FirebaseConfig.js
|
|
@ -3,7 +3,6 @@ import React from 'react'
|
|||
import {createBottomTabNavigator} from "@react-navigation/bottom-tabs";
|
||||
import HomeScreen from "../screen/HomeScreen"
|
||||
import SaveScreen from "../screen/SaveScreen"
|
||||
import ProfileScreen from "../screen/ProfileScreen"
|
||||
import {Entypo, MaterialIcons, AntDesign} from '@expo/vector-icons';
|
||||
|
||||
|
||||
|
@ -38,19 +37,6 @@ const HomeNavigator = () => {
|
|||
)
|
||||
}}
|
||||
/>
|
||||
<Tab.Screen name='profile' component={ProfileScreen}
|
||||
options={{
|
||||
tabBarLabel: "Profile",
|
||||
tabBarActiveTintColor: '#379777',
|
||||
tabBarInactiveTintColor: 'gray',
|
||||
tabBarIcon:({focused}) =>
|
||||
focused? (
|
||||
<AntDesign name="user" size={26} color="#379777" style={{marginTop: 5, marginBottom: 5}}/>
|
||||
) : (
|
||||
<AntDesign name="user" size={26} color="gray" style={{marginTop: 5, marginBottom: 5}}/>
|
||||
)
|
||||
}}
|
||||
/>
|
||||
</Tab.Navigator>
|
||||
)
|
||||
}
|
||||
|
|
3
ev_station/app/context/MakerContext.jsx
Normal file
3
ev_station/app/context/MakerContext.jsx
Normal file
|
@ -0,0 +1,3 @@
|
|||
import { createContext } from "react";
|
||||
|
||||
export const MarkerContext = createContext(null);
|
|
@ -12,7 +12,8 @@ const config = {
|
|||
'places.formattedAddress',
|
||||
'places.location',
|
||||
'places.evChargeOptions',
|
||||
'places.photos'
|
||||
'places.photos',
|
||||
'places.id'
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,11 +6,15 @@ import HomeSearch from './HomeSearch';
|
|||
import { UserLocationContext } from '../context/UserLocationContext';
|
||||
import GlobalApi from '../misc/GlobalApi';
|
||||
import EVListView from '../screen/googleList/EVListView';
|
||||
import { MarkerContext } from '../context/MakerContext';
|
||||
|
||||
|
||||
const HomeScreen = () => {
|
||||
const {location, setLocation} = useContext(UserLocationContext);
|
||||
const [placeList, setPlaceList] = useState([]);
|
||||
|
||||
const [selectedMarker, setSelectedMarker] = useState('');
|
||||
|
||||
useEffect(() => {
|
||||
location && GetNearByPlace();
|
||||
},[location])
|
||||
|
@ -38,16 +42,18 @@ const HomeScreen = () => {
|
|||
}
|
||||
|
||||
return (
|
||||
<View style={{flex: 1, backgroundColor: 'white'}}>
|
||||
<View style={{position: 'absolute', zIndex: 10, width: '100%'}}>
|
||||
<HomeHeader />
|
||||
<HomeSearch searchedLocation={(location) => console.log(location)}/>
|
||||
<MarkerContext.Provider value={{selectedMarker, setSelectedMarker}}>
|
||||
<View style={{flex: 1, backgroundColor: 'white'}}>
|
||||
<View style={{position: 'absolute', zIndex: 10, width: '100%'}}>
|
||||
<HomeHeader />
|
||||
<HomeSearch searchedLocation={(location) => setLocation({latitude: location.lat, longitude: location.lng})}/>
|
||||
</View>
|
||||
{placeList && <MapViewScreen placeList={placeList}/>}
|
||||
<View style={{position: 'absolute', bottom: 0, zIndex: 20, width: '100%'}}>
|
||||
{placeList && <EVListView placeList={placeList}/>}
|
||||
</View>
|
||||
</View>
|
||||
{placeList && <MapViewScreen placeList={placeList}/>}
|
||||
<View style={{position: 'absolute', bottom: 0, zIndex: 20, width: '100%'}}>
|
||||
{placeList && <EVListView placeList={placeList}/>}
|
||||
</View>
|
||||
</View>
|
||||
</MarkerContext.Provider>
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
import { StyleSheet, Text, View } from 'react-native'
|
||||
import React from 'react'
|
||||
|
||||
const ProfileScreen = () => {
|
||||
return (
|
||||
<View style={{flex: 1, backgroundColor: 'white'}}>
|
||||
<View style={{margin: 20}}>
|
||||
<Text>ProfileScreen</Text>
|
||||
</View>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
export default ProfileScreen
|
||||
|
||||
const styles = StyleSheet.create({})
|
|
@ -1,12 +1,54 @@
|
|||
import { StyleSheet, Text, View } from 'react-native'
|
||||
import React from 'react'
|
||||
import { ActivityIndicator, FlatList, StyleSheet, Text, View } from 'react-native'
|
||||
import { collection, query, where, getDocs, getFirestore } from "firebase/firestore";
|
||||
import React, { useEffect, useState } from 'react'
|
||||
import { useUser } from '@clerk/clerk-expo';
|
||||
import { app } from '../misc/FirebaseConfig';
|
||||
import ItemList from './googleList/ItemList';
|
||||
|
||||
const SaveScreen = () => {
|
||||
const {user} = useUser();
|
||||
const [saveList, setSaveList] = useState([]);
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
|
||||
db = getFirestore(app);
|
||||
|
||||
useEffect(() => {
|
||||
user && getSaveList();
|
||||
}, [user])
|
||||
|
||||
const getSaveList = async() => {
|
||||
setIsLoading(true);
|
||||
setSaveList([])
|
||||
const q = query(collection(db, "ev-save"), where("email", "==", user?.primaryEmailAddress?.emailAddress));
|
||||
|
||||
const querySnapshot = await getDocs(q);
|
||||
querySnapshot.forEach((doc) => {
|
||||
// doc.data() is never undefined for query doc snapshots
|
||||
console.log(doc.id, " => ", doc.data());
|
||||
setSaveList(saveList => [...saveList, doc.data()]);
|
||||
setIsLoading(false);
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<View style={{flex: 1, backgroundColor: 'white'}}>
|
||||
<View style={{margin: 20}}>
|
||||
<Text>SaveScreen</Text>
|
||||
</View>
|
||||
{!saveList?
|
||||
<View style={{flexDirection: 'column', alignItems: 'center', justifyContent: 'center', height: '100%'}}>
|
||||
<ActivityIndicator size={'large'} color={'#379777'}/>
|
||||
<Text style={{marginTop: 10}}>Loading</Text>
|
||||
|
||||
</View> : null
|
||||
}
|
||||
<FlatList
|
||||
onRefresh={() => getSaveList()}
|
||||
refreshing={isLoading}
|
||||
data={saveList}
|
||||
renderItem={({item, index}) => (
|
||||
<View key={index} style={{marginVertical: 5, marginHorizontal: 5, borderColor: 'gray', borderWidth: 1}}>
|
||||
<ItemList place={item.place} isSave={true} markedSave={() => getSaveList()}/>
|
||||
</View>
|
||||
)}
|
||||
/>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,13 +1,20 @@
|
|||
import { Dimensions, FlatList, StyleSheet, Text, View } from 'react-native'
|
||||
import React, { useEffect, useRef } from 'react'
|
||||
import React, { useContext, useEffect, useRef, useState } from 'react'
|
||||
import ItemList from './ItemList'
|
||||
import { MarkerContext } from '@/app/context/MakerContext';
|
||||
import { collection, query, where, getDocs, getFirestore } from "firebase/firestore";
|
||||
import { app } from '@/app/misc/FirebaseConfig';
|
||||
import { useUser } from '@clerk/clerk-expo';
|
||||
|
||||
const EVListView = ({placeList}) => {
|
||||
const {user} = useUser();
|
||||
const [saveList, setSaveList] = useState([]);
|
||||
const flatListRef = useRef(null);
|
||||
const {selectedMarker, setSelectedMarker} = useContext(MarkerContext);
|
||||
|
||||
useEffect(() => {
|
||||
//scrollToIndex();
|
||||
}, [])
|
||||
selectedMarker && scrollToIndex(selectedMarker);
|
||||
}, [selectedMarker])
|
||||
|
||||
const scrollToIndex = (index) => {
|
||||
flatListRef.current?.scrollToIndex({animated: true, index})
|
||||
|
@ -19,6 +26,29 @@ const EVListView = ({placeList}) => {
|
|||
index
|
||||
});
|
||||
|
||||
|
||||
const db = getFirestore(app);
|
||||
useEffect(() => {
|
||||
user && getSaveList();
|
||||
}, [user])
|
||||
|
||||
const getSaveList = async() => {
|
||||
setSaveList([])
|
||||
const q = query(collection(db, "ev-save"), where("email", "==", user?.primaryEmailAddress?.emailAddress));
|
||||
|
||||
const querySnapshot = await getDocs(q);
|
||||
querySnapshot.forEach((doc) => {
|
||||
// doc.data() is never undefined for query doc snapshots
|
||||
console.log(doc.id, " => ", doc.data());
|
||||
setSaveList(saveList => [...saveList, doc.data()]);
|
||||
});
|
||||
}
|
||||
|
||||
const isSave = (place) => {
|
||||
const result = saveList.find(item => item.place.id == place.id);
|
||||
return result?true : false;
|
||||
}
|
||||
|
||||
return (
|
||||
<View>
|
||||
<FlatList horizontal={true}
|
||||
|
@ -28,7 +58,7 @@ const EVListView = ({placeList}) => {
|
|||
ref={flatListRef}
|
||||
renderItem={({item, index}) => (
|
||||
<View key={index}>
|
||||
<ItemList place={item}/>
|
||||
<ItemList place={item} isSave={isSave(item)} markedSave={() => getSaveList()}/>
|
||||
</View>
|
||||
)}
|
||||
/>
|
||||
|
|
|
@ -1,12 +1,49 @@
|
|||
import { Dimensions, Image, Pressable, StyleSheet, Text, View } from 'react-native'
|
||||
import { Dimensions, Image, Linking, Platform, Pressable, StyleSheet, Text, View } from 'react-native'
|
||||
import React from 'react'
|
||||
import GlobalApi from '@/app/misc/GlobalApi'
|
||||
import AntDesign from '@expo/vector-icons/AntDesign';
|
||||
import MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';
|
||||
import { getFirestore } from "firebase/firestore";
|
||||
import { app } from "../../misc/FirebaseConfig";
|
||||
import { doc, setDoc, deleteDoc} from "firebase/firestore";
|
||||
import { useUser } from '@clerk/clerk-expo';
|
||||
|
||||
const ItemList = ({place}) => {
|
||||
const ItemList = ({place, isSave, markedSave}) => {
|
||||
const placePhoto_Base_Url = 'https://places.googleapis.com/v1/'
|
||||
const {user} = useUser();
|
||||
const db = getFirestore(app);
|
||||
const onSave = async(place) => {
|
||||
await setDoc(doc(db, 'ev-save', (place.id).toString()), {
|
||||
place: place,
|
||||
email: user?.primaryEmailAddress?.emailAddress
|
||||
});
|
||||
markedSave();
|
||||
};
|
||||
const onRemoveSave = async(placeId) => {
|
||||
await deleteDoc(doc(db, 'ev-save', placeId.toString()));
|
||||
markedSave();
|
||||
}
|
||||
|
||||
const onStartClick = () => {
|
||||
const url = Platform.select({
|
||||
ios: "maps:"+place?.location?.latitude+","+place?.location?.longitude+"?q="+place?.formattedAddress,
|
||||
});
|
||||
Linking.openURL(url);
|
||||
}
|
||||
|
||||
|
||||
return (
|
||||
<View style={{width: Dimensions.get('screen').width *0.85, height: 280, backgroundColor: 'white', marginLeft: 10, marginVertical: 5 ,borderRadius: 5, flexDirection: 'column', justifyContent: 'space-between'}}>
|
||||
<View style={{width: Dimensions.get('screen').width *0.92, height: 280, backgroundColor: 'white', marginLeft: 10, marginVertical: 5 ,borderRadius: 5, flexDirection: 'column', justifyContent: 'space-between'}}>
|
||||
{!isSave?
|
||||
<Pressable onPress={() => onSave(place)}
|
||||
style={{position: 'absolute', zIndex: 20, right: 0, margin: 10, width: 40, height: 40, backgroundColor: '#379777', alignItems: 'center', justifyContent: 'center', borderRadius: '50%'}}>
|
||||
<AntDesign name="pluscircleo" size={30} color="white" />
|
||||
</Pressable> :
|
||||
<Pressable onPress={() => onRemoveSave(place.id)}
|
||||
style={{position: 'absolute', zIndex: 20, right: 0, margin: 10, width: 40, height: 40, backgroundColor: '#379777', alignItems: 'center', justifyContent: 'center', borderRadius: '50%'}}>
|
||||
<MaterialCommunityIcons name="map-marker-star" size={30} color="white" />
|
||||
</Pressable>
|
||||
}
|
||||
<Image source={place?.photos?{uri:placePhoto_Base_Url+place.photos[0].name+"/media?key="+GlobalApi.API_KEY+"&maxHeightPx=500&maxWidthPx=500"}
|
||||
: require('../../../assets/images/ev_images/EV.png')} style={{width: '100%', height: 120, objectFit: 'cover', borderTopLeftRadius: 5, borderTopRightRadius: 5}}/>
|
||||
<View style={{padding: 10, flexDirection: 'column', justifyContent: 'space-between'}}>
|
||||
|
@ -15,7 +52,8 @@ const ItemList = ({place}) => {
|
|||
<Text style={{marginTop: 5, color: '#45474B', fontWeight: 600, fontSize: 15}}>Total chargers: {place?.evChargeOptions?.connectorCount}</Text>
|
||||
<Text style={{marginVertical: 5, color: '#45474B', fontSize: 15}}>{place?.formattedAddress}</Text>
|
||||
</View>
|
||||
<Pressable style={{backgroundColor: '#379777', alignItems: 'center', justifyContent: 'center', padding: 5, marginTop: 10, borderRadius: 5}}>
|
||||
<Pressable onPress={() => onStartClick()}
|
||||
style={{backgroundColor: '#379777', alignItems: 'center', justifyContent: 'center', padding: 5, marginTop: 10, borderRadius: 5}}>
|
||||
<Text style={{color: 'white', fontSize: 18, fontWeight: 500}}>Start</Text>
|
||||
</Pressable>
|
||||
</View>
|
||||
|
|
|
@ -16,8 +16,8 @@ const {location, setLocation} = useContext(UserLocationContext)
|
|||
region={{
|
||||
latitude: location?.latitude,
|
||||
longitude: location?.longitude,
|
||||
latitudeDelta: 0.1,
|
||||
longitudeDelta: 0.1
|
||||
latitudeDelta: 0.2,
|
||||
longitudeDelta: 0.2
|
||||
}}
|
||||
>
|
||||
{location? <Marker coordinate={{latitude: location?.latitude, longitude: location?.longitude}}>
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
import { Image, StyleSheet, Text, View } from 'react-native'
|
||||
import React from 'react'
|
||||
import React, { useContext } from 'react'
|
||||
import { Marker } from 'react-native-maps'
|
||||
import { MarkerContext } from '@/app/context/MakerContext'
|
||||
|
||||
const MarkerList = ({index, place}) => {
|
||||
const {selectedMarker, setSelectedMarker} = useContext(MarkerContext);
|
||||
|
||||
return place && (
|
||||
<Marker onPress={() => {}}
|
||||
<Marker onPress={() => setSelectedMarker(index)}
|
||||
coordinate={{
|
||||
latitude: place.location?.latitude,
|
||||
longitude: place.location?.longitude
|
||||
|
|
767
ev_station/package-lock.json
generated
767
ev_station/package-lock.json
generated
|
@ -23,6 +23,7 @@
|
|||
"expo-status-bar": "~1.12.1",
|
||||
"expo-system-ui": "~3.0.7",
|
||||
"expo-web-browser": "~13.0.3",
|
||||
"firebase": "^10.12.4",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"react-native": "0.74.3",
|
||||
|
@ -3547,6 +3548,575 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/@fastify/busboy": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
|
||||
"integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/analytics": {
|
||||
"version": "0.10.6",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.6.tgz",
|
||||
"integrity": "sha512-sB59EwcAvLt0fINGfMWmcRKcdUiYhE4AJNdDXSCSDo4D/ZXFRmb6qwX9YesKHXFB59XTLT03mAjqQcDrdym9qA==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/installations": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"safevalues": "0.6.0",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/analytics-compat": {
|
||||
"version": "0.2.12",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.12.tgz",
|
||||
"integrity": "sha512-rXWnOAdEHbvBPLNjFLu3U0yDZVIAi+C0DL+RkUEOirfSqAeQaKzBCATeBw6+K7FVpEnknhm4tZrvVUVtJjShMw==",
|
||||
"dependencies": {
|
||||
"@firebase/analytics": "0.10.6",
|
||||
"@firebase/analytics-types": "0.8.2",
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app-compat": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/analytics-types": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.2.tgz",
|
||||
"integrity": "sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw=="
|
||||
},
|
||||
"node_modules/@firebase/app": {
|
||||
"version": "0.10.7",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.7.tgz",
|
||||
"integrity": "sha512-7OCd53B+wnk/onbMLn/vM10pDjw97zzWUD8m3swtLYKJIrL+gDZ7HZ4xcbBLw7OB8ikzu8k1ORNjRe2itgAy4g==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"idb": "7.1.1",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/app-check": {
|
||||
"version": "0.8.6",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.6.tgz",
|
||||
"integrity": "sha512-uSzl0/SDw54hwuORWHDtldb9kK/QEVZOcoPn2mlIjMrJOLDug/6kcqnIN3IHzwmPyf23Epg0AGBktvG2FugW4w==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"safevalues": "0.6.0",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/app-check-compat": {
|
||||
"version": "0.3.13",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.13.tgz",
|
||||
"integrity": "sha512-1sbS5Apq7dLys1KYdNQsmZLFIjJoFP9Mv4bzIcdXuTkWQjr3X2qAvwiTslC6prVAUMiTV0eM9eicdQIXVsiSRw==",
|
||||
"dependencies": {
|
||||
"@firebase/app-check": "0.8.6",
|
||||
"@firebase/app-check-types": "0.5.2",
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app-compat": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/app-check-interop-types": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz",
|
||||
"integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ=="
|
||||
},
|
||||
"node_modules/@firebase/app-check-types": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.2.tgz",
|
||||
"integrity": "sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA=="
|
||||
},
|
||||
"node_modules/@firebase/app-compat": {
|
||||
"version": "0.2.37",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.37.tgz",
|
||||
"integrity": "sha512-yiQLYT9LYQHuJGu/msuBLFtdWWTJ3Pz04E9gSeWykSB+8s0XXJJqfqQlghH7CcQ3KnJZR+Wuc3zSMcY3a+dn6Q==",
|
||||
"dependencies": {
|
||||
"@firebase/app": "0.10.7",
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/app-types": {
|
||||
"version": "0.9.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz",
|
||||
"integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ=="
|
||||
},
|
||||
"node_modules/@firebase/auth": {
|
||||
"version": "1.7.5",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.5.tgz",
|
||||
"integrity": "sha512-DMFR1OA/f1/voeuFbSORg9AP36pMgOoSb/DRgiDalLmIJsDTlQNMCu+givjMP4s/XL85+tBk2MerYnK/AscJjw==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0",
|
||||
"undici": "5.28.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app": "0.x",
|
||||
"@react-native-async-storage/async-storage": "^1.18.1"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@react-native-async-storage/async-storage": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/auth-compat": {
|
||||
"version": "0.5.10",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.10.tgz",
|
||||
"integrity": "sha512-epDhgNIXmhl9DPuTW9Ec5NDJJKMFIdXBXiQI9O0xNHveow/ETtBCY86srzF7iCacqsd30CcpLwwXlhk8Y19Olg==",
|
||||
"dependencies": {
|
||||
"@firebase/auth": "1.7.5",
|
||||
"@firebase/auth-types": "0.12.2",
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0",
|
||||
"undici": "5.28.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app-compat": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/auth-compat/node_modules/undici": {
|
||||
"version": "5.28.4",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
|
||||
"integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
|
||||
"dependencies": {
|
||||
"@fastify/busboy": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/auth-interop-types": {
|
||||
"version": "0.2.3",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz",
|
||||
"integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ=="
|
||||
},
|
||||
"node_modules/@firebase/auth-types": {
|
||||
"version": "0.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.2.tgz",
|
||||
"integrity": "sha512-qsEBaRMoGvHO10unlDJhaKSuPn4pyoTtlQuP1ghZfzB6rNQPuhp/N/DcFZxm9i4v0SogjCbf9reWupwIvfmH6w==",
|
||||
"peerDependencies": {
|
||||
"@firebase/app-types": "0.x",
|
||||
"@firebase/util": "1.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/auth/node_modules/undici": {
|
||||
"version": "5.28.4",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
|
||||
"integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
|
||||
"dependencies": {
|
||||
"@fastify/busboy": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/component": {
|
||||
"version": "0.6.8",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.8.tgz",
|
||||
"integrity": "sha512-LcNvxGLLGjBwB0dJUsBGCej2fqAepWyBubs4jt1Tiuns7QLbXHuyObZ4aMeBjZjWx4m8g1LoVI9QFpSaq/k4/g==",
|
||||
"dependencies": {
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/database": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.6.tgz",
|
||||
"integrity": "sha512-nrexUEG/fpVlHtWKkyfhTC3834kZ1WS7voNyqbBsBCqHXQOvznN5Z0L3nxBqdXSJyltNAf4ndFlQqm5gZiEczQ==",
|
||||
"dependencies": {
|
||||
"@firebase/app-check-interop-types": "0.3.2",
|
||||
"@firebase/auth-interop-types": "0.2.3",
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"faye-websocket": "0.11.4",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/database-compat": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.6.tgz",
|
||||
"integrity": "sha512-1OGA0sLY47mkXjhICCrUTXEYFnSSXoiXWm1SHsN62b+Lzs5aKA3aWTjTUmYIoK93kDAMPkYpulSv8jcbH4Hwew==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/database": "1.0.6",
|
||||
"@firebase/database-types": "1.0.4",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/database-types": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.4.tgz",
|
||||
"integrity": "sha512-mz9ZzbH6euFXbcBo+enuJ36I5dR5w+enJHHjy9Y5ThCdKUseqfDjW3vCp1YxE9zygFCSjJJ/z1cQ+zodvUcwPQ==",
|
||||
"dependencies": {
|
||||
"@firebase/app-types": "0.9.2",
|
||||
"@firebase/util": "1.9.7"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/firestore": {
|
||||
"version": "4.6.4",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.6.4.tgz",
|
||||
"integrity": "sha512-vk2MoH5HxYEhiNg1l+yBXq1Fkhue/11bFg4HdlTv6BJHcTnnAj2a+/afPpatcW4MOdYA3Tv+d5nGzWbbOC1SHw==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"@firebase/webchannel-wrapper": "1.0.1",
|
||||
"@grpc/grpc-js": "~1.9.0",
|
||||
"@grpc/proto-loader": "^0.7.8",
|
||||
"tslib": "^2.1.0",
|
||||
"undici": "5.28.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.10.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/firestore-compat": {
|
||||
"version": "0.3.33",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.33.tgz",
|
||||
"integrity": "sha512-i42a2l31N95CwYEB7zmfK0FS1mrO6pwOLwxavCrwu1BCFrVVVQhUheTPIda/iGguK/2Nog0RaIR1bo7QkZEz3g==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/firestore": "4.6.4",
|
||||
"@firebase/firestore-types": "3.0.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app-compat": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/firestore-types": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.2.tgz",
|
||||
"integrity": "sha512-wp1A+t5rI2Qc/2q7r2ZpjUXkRVPtGMd6zCLsiWurjsQpqPgFin3AhNibKcIzoF2rnToNa/XYtyWXuifjOOwDgg==",
|
||||
"peerDependencies": {
|
||||
"@firebase/app-types": "0.x",
|
||||
"@firebase/util": "1.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/firestore/node_modules/undici": {
|
||||
"version": "5.28.4",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
|
||||
"integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
|
||||
"dependencies": {
|
||||
"@fastify/busboy": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/functions": {
|
||||
"version": "0.11.6",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.6.tgz",
|
||||
"integrity": "sha512-GPfIBPtpwQvsC7SQbgaUjLTdja0CsNwMoKSgrzA1FGGRk4NX6qO7VQU6XCwBiAFWbpbQex6QWkSMsCzLx1uibQ==",
|
||||
"dependencies": {
|
||||
"@firebase/app-check-interop-types": "0.3.2",
|
||||
"@firebase/auth-interop-types": "0.2.3",
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/messaging-interop-types": "0.2.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0",
|
||||
"undici": "5.28.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/functions-compat": {
|
||||
"version": "0.3.12",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.12.tgz",
|
||||
"integrity": "sha512-r3XUb5VlITWpML46JymfJPkK6I9j4SNlO7qWIXUc0TUmkv0oAfVoiIt1F83/NuMZXaGr4YWA/794nVSy4GV8tw==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/functions": "0.11.6",
|
||||
"@firebase/functions-types": "0.6.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app-compat": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/functions-types": {
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.2.tgz",
|
||||
"integrity": "sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w=="
|
||||
},
|
||||
"node_modules/@firebase/functions/node_modules/undici": {
|
||||
"version": "5.28.4",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
|
||||
"integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
|
||||
"dependencies": {
|
||||
"@fastify/busboy": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/installations": {
|
||||
"version": "0.6.8",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.8.tgz",
|
||||
"integrity": "sha512-57V374qdb2+wT5v7+ntpLXBjZkO6WRgmAUbVkRfFTM/4t980p0FesbqTAcOIiM8U866UeuuuF8lYH70D3jM/jQ==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/util": "1.9.7",
|
||||
"idb": "7.1.1",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/installations-compat": {
|
||||
"version": "0.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.8.tgz",
|
||||
"integrity": "sha512-pI2q8JFHB7yIq/szmhzGSWXtOvtzl6tCUmyykv5C8vvfOVJUH6mP4M4iwjbK8S1JotKd/K70+JWyYlxgQ0Kpyw==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/installations": "0.6.8",
|
||||
"@firebase/installations-types": "0.5.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app-compat": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/installations-types": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.2.tgz",
|
||||
"integrity": "sha512-que84TqGRZJpJKHBlF2pkvc1YcXrtEDOVGiDjovP/a3s6W4nlbohGXEsBJo0JCeeg/UG9A+DEZVDUV9GpklUzA==",
|
||||
"peerDependencies": {
|
||||
"@firebase/app-types": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/logger": {
|
||||
"version": "0.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.2.tgz",
|
||||
"integrity": "sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/messaging": {
|
||||
"version": "0.12.10",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.10.tgz",
|
||||
"integrity": "sha512-fGbxJPKpl2DIKNJGhbk4mYPcM+qE2gl91r6xPoiol/mN88F5Ym6UeRdMVZah+pijh9WxM55alTYwXuW40r1Y2Q==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/installations": "0.6.8",
|
||||
"@firebase/messaging-interop-types": "0.2.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"idb": "7.1.1",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/messaging-compat": {
|
||||
"version": "0.2.10",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.10.tgz",
|
||||
"integrity": "sha512-FXQm7rcowkDm8kFLduHV35IRYCRo+Ng0PIp/t1+EBuEbyplaKkGjZ932pE+owf/XR+G/60ku2QRBptRGLXZydg==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/messaging": "0.12.10",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app-compat": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/messaging-interop-types": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.2.tgz",
|
||||
"integrity": "sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA=="
|
||||
},
|
||||
"node_modules/@firebase/performance": {
|
||||
"version": "0.6.8",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.8.tgz",
|
||||
"integrity": "sha512-F+alziiIZ6Yn8FG47mxwljq+4XkgkT2uJIFRlkyViUQRLzrogaUJW6u/+6ZrePXnouKlKIwzqos3PVJraPEcCA==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/installations": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/performance-compat": {
|
||||
"version": "0.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.8.tgz",
|
||||
"integrity": "sha512-o7TFClRVJd3VIBoY7KZQqtCeW0PC6v9uBzM6Lfw3Nc9D7hM6OonqecYvh7NwJ6R14k+xM27frLS4BcCvFHKw2A==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/performance": "0.6.8",
|
||||
"@firebase/performance-types": "0.2.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app-compat": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/performance-types": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.2.tgz",
|
||||
"integrity": "sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA=="
|
||||
},
|
||||
"node_modules/@firebase/remote-config": {
|
||||
"version": "0.4.8",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.8.tgz",
|
||||
"integrity": "sha512-AMLqe6wfIRnjc6FkCWOSUjhc1fSTEf8o+cv1NolFvbiJ/tU+TqN4pI7pT+MIKQzNiq5fxLehkOx+xtAQBxPJKQ==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/installations": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/remote-config-compat": {
|
||||
"version": "0.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.8.tgz",
|
||||
"integrity": "sha512-UxSFOp6dzFj2AHB8Bq/BYtbq5iFyizKx4Rd6WxAdaKYM8cnPMeK+l2v+Oogtjae+AeyHRI+MfL2acsfVe5cd2A==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/remote-config": "0.4.8",
|
||||
"@firebase/remote-config-types": "0.3.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app-compat": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/remote-config-types": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.2.tgz",
|
||||
"integrity": "sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA=="
|
||||
},
|
||||
"node_modules/@firebase/storage": {
|
||||
"version": "0.12.6",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.6.tgz",
|
||||
"integrity": "sha512-Zgb9WuehJxzhj7pGXUvkAEaH+3HvLjD9xSZ9nepuXf5f8378xME7oGJtREr/RnepdDA5YW0XIxe0QQBNHpe1nw==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0",
|
||||
"undici": "5.28.4"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/storage-compat": {
|
||||
"version": "0.3.9",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.9.tgz",
|
||||
"integrity": "sha512-WWgAp5bTW961oIsCc9+98m4MIVKpEqztAlIngfHfwO/x3DYoBPRl/awMRG3CAXyVxG+7B7oHC5IsnqM+vTwx2A==",
|
||||
"dependencies": {
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/storage": "0.12.6",
|
||||
"@firebase/storage-types": "0.8.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app-compat": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/storage-types": {
|
||||
"version": "0.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.2.tgz",
|
||||
"integrity": "sha512-0vWu99rdey0g53lA7IShoA2Lol1jfnPovzLDUBuon65K7uKG9G+L5uO05brD9pMw+l4HRFw23ah3GwTGpEav6g==",
|
||||
"peerDependencies": {
|
||||
"@firebase/app-types": "0.x",
|
||||
"@firebase/util": "1.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/storage/node_modules/undici": {
|
||||
"version": "5.28.4",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz",
|
||||
"integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==",
|
||||
"dependencies": {
|
||||
"@fastify/busboy": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/util": {
|
||||
"version": "1.9.7",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.7.tgz",
|
||||
"integrity": "sha512-fBVNH/8bRbYjqlbIhZ+lBtdAAS4WqZumx03K06/u7fJSpz1TGjEMm1ImvKD47w+xaFKIP2ori6z8BrbakRfjJA==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/vertexai-preview": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/vertexai-preview/-/vertexai-preview-0.0.3.tgz",
|
||||
"integrity": "sha512-KVtUWLp+ScgiwkDKAvNkVucAyhLVQp6C6lhnVEuIg4mWhWcS3oerjAeVhZT4uNofKwWxRsOaB2Yec7DMTXlQPQ==",
|
||||
"dependencies": {
|
||||
"@firebase/app-check-interop-types": "0.3.2",
|
||||
"@firebase/component": "0.6.8",
|
||||
"@firebase/logger": "0.4.2",
|
||||
"@firebase/util": "1.9.7",
|
||||
"tslib": "^2.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@firebase/app": "0.x",
|
||||
"@firebase/app-types": "0.x"
|
||||
}
|
||||
},
|
||||
"node_modules/@firebase/webchannel-wrapper": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.1.tgz",
|
||||
"integrity": "sha512-jmEnr/pk0yVkA7mIlHNnxCi+wWzOFUg0WyIotgkKAb2u1J7fAeDBcVNSTjTihbAYNusCLQdW5s9IJ5qwnEufcQ=="
|
||||
},
|
||||
"node_modules/@floating-ui/core": {
|
||||
"version": "1.6.5",
|
||||
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.5.tgz",
|
||||
|
@ -3618,6 +4188,35 @@
|
|||
"graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@grpc/grpc-js": {
|
||||
"version": "1.9.15",
|
||||
"resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.15.tgz",
|
||||
"integrity": "sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==",
|
||||
"dependencies": {
|
||||
"@grpc/proto-loader": "^0.7.8",
|
||||
"@types/node": ">=12.12.47"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^8.13.0 || >=10.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@grpc/proto-loader": {
|
||||
"version": "0.7.13",
|
||||
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz",
|
||||
"integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==",
|
||||
"dependencies": {
|
||||
"lodash.camelcase": "^4.3.0",
|
||||
"long": "^5.0.0",
|
||||
"protobufjs": "^7.2.5",
|
||||
"yargs": "^17.7.2"
|
||||
},
|
||||
"bin": {
|
||||
"proto-loader-gen-types": "build/bin/proto-loader-gen-types.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/@hapi/hoek": {
|
||||
"version": "9.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
|
||||
|
@ -4562,6 +5161,60 @@
|
|||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/@protobufjs/aspromise": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
|
||||
"integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="
|
||||
},
|
||||
"node_modules/@protobufjs/base64": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
|
||||
"integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
|
||||
},
|
||||
"node_modules/@protobufjs/codegen": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
|
||||
"integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
|
||||
},
|
||||
"node_modules/@protobufjs/eventemitter": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
|
||||
"integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q=="
|
||||
},
|
||||
"node_modules/@protobufjs/fetch": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
|
||||
"integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
|
||||
"dependencies": {
|
||||
"@protobufjs/aspromise": "^1.1.1",
|
||||
"@protobufjs/inquire": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@protobufjs/float": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
|
||||
"integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="
|
||||
},
|
||||
"node_modules/@protobufjs/inquire": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
|
||||
"integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q=="
|
||||
},
|
||||
"node_modules/@protobufjs/path": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
|
||||
"integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="
|
||||
},
|
||||
"node_modules/@protobufjs/pool": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
|
||||
"integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="
|
||||
},
|
||||
"node_modules/@protobufjs/utf8": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
|
||||
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="
|
||||
},
|
||||
"node_modules/@radix-ui/react-compose-refs": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz",
|
||||
|
@ -10004,6 +10657,17 @@
|
|||
"reusify": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/faye-websocket": {
|
||||
"version": "0.11.4",
|
||||
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
|
||||
"integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
|
||||
"dependencies": {
|
||||
"websocket-driver": ">=0.5.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/fb-watchman": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
|
||||
|
@ -10221,6 +10885,40 @@
|
|||
"micromatch": "^4.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/firebase": {
|
||||
"version": "10.12.4",
|
||||
"resolved": "https://registry.npmjs.org/firebase/-/firebase-10.12.4.tgz",
|
||||
"integrity": "sha512-SQz49NMpwG4MLTPZ9C8jBp7IyS2haTvsIvjclgu+v/jvzNtjZoxIcoF6A13EIfBHmJ5eiuVlvttxElOf7LnJew==",
|
||||
"dependencies": {
|
||||
"@firebase/analytics": "0.10.6",
|
||||
"@firebase/analytics-compat": "0.2.12",
|
||||
"@firebase/app": "0.10.7",
|
||||
"@firebase/app-check": "0.8.6",
|
||||
"@firebase/app-check-compat": "0.3.13",
|
||||
"@firebase/app-compat": "0.2.37",
|
||||
"@firebase/app-types": "0.9.2",
|
||||
"@firebase/auth": "1.7.5",
|
||||
"@firebase/auth-compat": "0.5.10",
|
||||
"@firebase/database": "1.0.6",
|
||||
"@firebase/database-compat": "1.0.6",
|
||||
"@firebase/firestore": "4.6.4",
|
||||
"@firebase/firestore-compat": "0.3.33",
|
||||
"@firebase/functions": "0.11.6",
|
||||
"@firebase/functions-compat": "0.3.12",
|
||||
"@firebase/installations": "0.6.8",
|
||||
"@firebase/installations-compat": "0.2.8",
|
||||
"@firebase/messaging": "0.12.10",
|
||||
"@firebase/messaging-compat": "0.2.10",
|
||||
"@firebase/performance": "0.6.8",
|
||||
"@firebase/performance-compat": "0.2.8",
|
||||
"@firebase/remote-config": "0.4.8",
|
||||
"@firebase/remote-config-compat": "0.2.8",
|
||||
"@firebase/storage": "0.12.6",
|
||||
"@firebase/storage-compat": "0.3.9",
|
||||
"@firebase/util": "1.9.7",
|
||||
"@firebase/vertexai-preview": "0.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/flow-enums-runtime": {
|
||||
"version": "0.0.6",
|
||||
"resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz",
|
||||
|
@ -10772,6 +11470,11 @@
|
|||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/http-parser-js": {
|
||||
"version": "0.5.8",
|
||||
"resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz",
|
||||
"integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q=="
|
||||
},
|
||||
"node_modules/http-proxy-agent": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz",
|
||||
|
@ -10823,6 +11526,11 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/idb": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz",
|
||||
"integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ=="
|
||||
},
|
||||
"node_modules/ieee754": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
|
||||
|
@ -14023,6 +14731,11 @@
|
|||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"node_modules/lodash.camelcase": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
|
||||
"integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
|
||||
},
|
||||
"node_modules/lodash.debounce": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
||||
|
@ -14196,6 +14909,11 @@
|
|||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/long": {
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz",
|
||||
"integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q=="
|
||||
},
|
||||
"node_modules/loose-envify": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
||||
|
@ -15821,6 +16539,29 @@
|
|||
"react-is": "^16.13.1"
|
||||
}
|
||||
},
|
||||
"node_modules/protobufjs": {
|
||||
"version": "7.3.2",
|
||||
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz",
|
||||
"integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@protobufjs/aspromise": "^1.1.2",
|
||||
"@protobufjs/base64": "^1.1.2",
|
||||
"@protobufjs/codegen": "^2.0.4",
|
||||
"@protobufjs/eventemitter": "^1.1.0",
|
||||
"@protobufjs/fetch": "^1.1.0",
|
||||
"@protobufjs/float": "^1.0.2",
|
||||
"@protobufjs/inquire": "^1.1.0",
|
||||
"@protobufjs/path": "^1.1.2",
|
||||
"@protobufjs/pool": "^1.1.0",
|
||||
"@protobufjs/utf8": "^1.1.0",
|
||||
"@types/node": ">=13.7.0",
|
||||
"long": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/proxy-from-env": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
||||
|
@ -16769,6 +17510,11 @@
|
|||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/safevalues": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.6.0.tgz",
|
||||
"integrity": "sha512-MZ7DcTOcIoPXN36/UONVE9BT0pmwlCr9WcS7Pj/q4FxOwr33FkWC0CUWj/THQXYWxf/F7urbhaHaOeFPSqGqHA=="
|
||||
},
|
||||
"node_modules/sax": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz",
|
||||
|
@ -18410,6 +19156,27 @@
|
|||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/websocket-driver": {
|
||||
"version": "0.7.4",
|
||||
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
|
||||
"integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
|
||||
"dependencies": {
|
||||
"http-parser-js": ">=0.5.1",
|
||||
"safe-buffer": ">=5.1.0",
|
||||
"websocket-extensions": ">=0.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/websocket-extensions": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
|
||||
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
|
||||
"engines": {
|
||||
"node": ">=0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/whatwg-encoding": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz",
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
"expo-status-bar": "~1.12.1",
|
||||
"expo-system-ui": "~3.0.7",
|
||||
"expo-web-browser": "~13.0.3",
|
||||
"firebase": "^10.12.4",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"react-native": "0.74.3",
|
||||
|
|
Loading…
Add table
Reference in a new issue