State Management
parent
ead3de3e1a
commit
fd24e2e569
|
@ -5,7 +5,10 @@ import RideCard from '@/components/RideCard';
|
|||
import { icons, images } from '@/constants';
|
||||
import GoogleInputField from '@/components/GoogleTextInput';
|
||||
import Map from '@/components/Map';
|
||||
|
||||
import { useLocationStore } from '@/store';
|
||||
import { useEffect, useState } from 'react';
|
||||
import * as Location from "expo-location";
|
||||
import { router } from 'expo-router';
|
||||
const recentRides = [[
|
||||
{
|
||||
"ride_id": "1",
|
||||
|
@ -105,12 +108,43 @@ const recentRides = [[
|
|||
}
|
||||
]]
|
||||
export default function Page() {
|
||||
const { setUserLocation, setDestinationLocation } = useLocationStore();
|
||||
const { user } = useUser();
|
||||
const loading = true;
|
||||
|
||||
const handleSignOut = () => { };
|
||||
const handleDestinationPress = () => { };
|
||||
const [hasPermissions, setHasPermissions] = useState(false);
|
||||
|
||||
const handleSignOut = () => { };
|
||||
const handleDestinationPress = (location:{latitude:number;longitude:number;address:string;}) => {
|
||||
setDestinationLocation(location);
|
||||
router.push("/(root)/find-ride");
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
const requestLocation = async () => {
|
||||
let { status } = await Location.requestForegroundPermissionsAsync();
|
||||
if (status != "granted") {
|
||||
setHasPermissions(false)
|
||||
return;
|
||||
}
|
||||
|
||||
let location = await Location.getCurrentPositionAsync();
|
||||
const address = await Location.reverseGeocodeAsync({
|
||||
latitude: location.coords?.latitude!,
|
||||
longitude: location.coords?.longitude!,
|
||||
});
|
||||
setUserLocation({
|
||||
// latitude:location.coords.latitude,
|
||||
// longitude:location.coords.longitude,
|
||||
// latitude: 22.5645,
|
||||
// longitude: 72.9289,
|
||||
latitude: 37.78825,
|
||||
longitude: -122.4324,
|
||||
address: `${address[0].name}, ${address[0].region}`
|
||||
});
|
||||
};
|
||||
requestLocation();
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<SafeAreaView style={tw`bg-general-500`}>
|
||||
|
@ -141,12 +175,12 @@ export default function Page() {
|
|||
</View>
|
||||
<GoogleInputField icon={icons.search} containerStyle="bg-white shadow-neutral-300" handlePress={handleDestinationPress} />
|
||||
<>
|
||||
<Text style={tw`text-xl font-JakartaBold mt-5 mb-3`} >Your Current Location</Text>
|
||||
<View style={tw`flex flex-row items-center bg-transparent h-[300px] `} >
|
||||
<Map />
|
||||
</View>
|
||||
</>
|
||||
<Text style={tw`text-xl font-JakartaBold mt-5 mb-3`} >Recent Rides</Text>
|
||||
<Text style={tw`text-xl font-JakartaBold mt-5 mb-3`} >Your Current Location</Text>
|
||||
<View style={tw`flex flex-row items-center bg-transparent h-[300px] `} >
|
||||
<Map />
|
||||
</View>
|
||||
</>
|
||||
<Text style={tw`text-xl font-JakartaBold mt-5 mb-3`} >Recent Rides</Text>
|
||||
</>
|
||||
)}
|
||||
/>
|
||||
|
|
|
@ -4,6 +4,9 @@ const Layout=()=> {
|
|||
return (
|
||||
<Stack>
|
||||
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
|
||||
<Stack.Screen name="find-ride" options={{ headerShown: false }} />
|
||||
<Stack.Screen name="confirm-ride" options={{ headerShown: false }} />
|
||||
<Stack.Screen name="book-ride" options={{ headerShown: false }} />
|
||||
</Stack>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
import Ridelayout from "@/components/RideLayout";
|
||||
import { useLocationStore } from "@/store";
|
||||
import { Text, View } from "react-native";
|
||||
import tw from "twrnc";
|
||||
const FindRide=()=>{
|
||||
const {userAddress,destinationAddress,setDestinationLocation,setUserLocation,} = useLocationStore();
|
||||
return(
|
||||
<Ridelayout>
|
||||
<Text style={tw`text-2xl`}>Find Ride</Text>
|
||||
</Ridelayout>
|
||||
)
|
||||
}
|
||||
export default FindRide;
|
|
@ -1,10 +1,64 @@
|
|||
import { icons } from "@/constants";
|
||||
import { GoogleInputProps } from "@/types/type";
|
||||
import { Text, View } from "react-native";
|
||||
import { Image, View } from "react-native";
|
||||
import { GooglePlacesAutocomplete } from "react-native-google-places-autocomplete";
|
||||
import tw from "twrnc";
|
||||
const GoogleInputField =({icon,initialLocation,containerStyle,textInputBackgroundColor,handlePress}:GoogleInputProps)=>{
|
||||
return(
|
||||
<View style={tw`flex flex-row items-center justify-center relative z-50 rounded-xl ${containerStyle} mb-5`} >
|
||||
<Text>Search</Text>
|
||||
import 'react-native-get-random-values';
|
||||
const googlePlacesApikey = process.env.EXPO_PUBLIC_GOOGLE_API_KEY as string;
|
||||
const GoogleInputField = ({ icon, initialLocation, containerStyle, textInputBackgroundColor, handlePress }: GoogleInputProps) => {
|
||||
return (
|
||||
<View style={tw`flex flex-row items-center justify-center relative z-50 rounded-xl ${containerStyle || "" } mb-5`} >
|
||||
<GooglePlacesAutocomplete fetchDetails={true}
|
||||
placeholder="Where you want to go?"
|
||||
debounce={200}
|
||||
styles={{
|
||||
textInputContainer: {
|
||||
alignItems: "center",
|
||||
justifyContent: "center",
|
||||
borderRadius: 20,
|
||||
marginHorizontal: 20,
|
||||
position: "relative",
|
||||
shadowColor: "#d4d4d4",
|
||||
},
|
||||
textInput: {
|
||||
backgroundColor: textInputBackgroundColor || "white",
|
||||
fontSize: 16,
|
||||
fontWeight: 600,
|
||||
marginTop: 5,
|
||||
width: "100%",
|
||||
borderRadius: 200,
|
||||
},
|
||||
listView: {
|
||||
backgroundColor: textInputBackgroundColor || "white",
|
||||
position: "relative",
|
||||
top: 0,
|
||||
width: "100%",
|
||||
borderRadius: 10,
|
||||
shadowColor: "#d4d4d4",
|
||||
zIndex: 99,
|
||||
},
|
||||
}}
|
||||
onPress={(data,details = null)=>{
|
||||
handlePress({
|
||||
latitude:details?.geometry.location.lat!,
|
||||
longitude: details?.geometry.location.lng!,
|
||||
address:data.description,
|
||||
});
|
||||
}}
|
||||
query={{
|
||||
key:googlePlacesApikey,
|
||||
language:"en",
|
||||
}}
|
||||
renderLeftButton={()=>(
|
||||
<View style={tw`justify-center items-center w-6 h-6`}>
|
||||
<Image source={icon ? icon:icons.search} style={tw`w-6 h-6`} resizeMode="contain" />
|
||||
</View>
|
||||
)}
|
||||
textInputProps={{
|
||||
placeholderTextColor:"gray",
|
||||
placeholder: initialLocation ?? "where do you want to go?",
|
||||
}}
|
||||
/>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,13 +1,77 @@
|
|||
import { View,Text } from "react-native";
|
||||
import MapView, { PROVIDER_DEFAULT } from "react-native-maps";
|
||||
import { useDriverStore, useLocationStore } from "@/store";
|
||||
import { View, Text } from "react-native";
|
||||
import { calculateRegion, generateMarkersFromData } from "@/lib/map";
|
||||
import MapView, { Marker, PROVIDER_DEFAULT } from "react-native-maps";
|
||||
import tw from "twrnc";
|
||||
|
||||
import { useEffect, useState } from "react";
|
||||
import { MarkerData } from "@/types/type";
|
||||
import { icons } from "@/constants";
|
||||
const drivers = [
|
||||
{
|
||||
"id": "1",
|
||||
"first_name": "James",
|
||||
"last_name": "Wilson",
|
||||
"profile_image_url": "https://ucarecdn.com/dae59f69-2c1f-48c3-a883-017bcf0f9950/-/preview/1000x666/",
|
||||
"car_image_url": "https://ucarecdn.com/a2dc52b2-8bf7-4e49-9a36-3ffb5229ed02/-/preview/465x466/",
|
||||
"car_seats": 4,
|
||||
"rating": "4.80"
|
||||
},
|
||||
{
|
||||
"id": "2",
|
||||
"first_name": "David",
|
||||
"last_name": "Brown",
|
||||
"profile_image_url": "https://ucarecdn.com/6ea6d83d-ef1a-483f-9106-837a3a5b3f67/-/preview/1000x666/",
|
||||
"car_image_url": "https://ucarecdn.com/a3872f80-c094-409c-82f8-c9ff38429327/-/preview/930x932/",
|
||||
"car_seats": 5,
|
||||
"rating": "4.60"
|
||||
},
|
||||
{
|
||||
"id": "3",
|
||||
"first_name": "Michael",
|
||||
"last_name": "Johnson",
|
||||
"profile_image_url": "https://ucarecdn.com/0330d85c-232e-4c30-bd04-e5e4d0e3d688/-/preview/826x822/",
|
||||
"car_image_url": "https://ucarecdn.com/289764fb-55b6-4427-b1d1-f655987b4a14/-/preview/930x932/",
|
||||
"car_seats": 4,
|
||||
"rating": "4.70"
|
||||
},
|
||||
{
|
||||
"id": "4",
|
||||
"first_name": "Robert",
|
||||
"last_name": "Green",
|
||||
"profile_image_url": "https://ucarecdn.com/fdfc54df-9d24-40f7-b7d3-6f391561c0db/-/preview/626x417/",
|
||||
"car_image_url": "https://ucarecdn.com/b6fb3b55-7676-4ff3-8484-fb115e268d32/-/preview/930x932/",
|
||||
"car_seats": 4,
|
||||
"rating": "4.90"
|
||||
}
|
||||
]
|
||||
const Map = () => {
|
||||
return(
|
||||
<MapView provider={PROVIDER_DEFAULT} style={tw`w-full h-full rounded-2xl `} >
|
||||
<Text>Map</Text>
|
||||
const { userLongitude, userLatitude, destinationLatitude, destinationLongitude } = useLocationStore();
|
||||
const { selectedDriver, setDrivers } = useDriverStore();
|
||||
const [markers, setMarkers] = useState<MarkerData[]>();
|
||||
const region = calculateRegion({
|
||||
userLongitude, userLatitude, destinationLatitude, destinationLongitude,
|
||||
});
|
||||
useEffect(() => {
|
||||
if (Array.isArray(drivers)) {
|
||||
if (!userLatitude || !userLongitude) return;
|
||||
const newMarkers = generateMarkersFromData({ data : drivers, userLatitude, userLongitude, });
|
||||
setMarkers(newMarkers)
|
||||
}
|
||||
}, [drivers])
|
||||
return (
|
||||
<MapView provider={PROVIDER_DEFAULT} style={tw`w-full h-full rounded-2xl `} tintColor="black" mapType="standard" showsPointsOfInterest={false} initialRegion={region} showsUserLocation={true} userInterfaceStyle="light" >
|
||||
{markers?.map((marker) => (
|
||||
<Marker key={marker.id}
|
||||
coordinate={{
|
||||
latitude: marker.latitude,
|
||||
longitude: marker.longitude,
|
||||
}}
|
||||
title={marker.title}
|
||||
image={selectedDriver === marker.id ? icons.selectedMarker : icons.marker}
|
||||
/>
|
||||
))}
|
||||
</MapView>
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export default Map;
|
|
@ -0,0 +1,12 @@
|
|||
import { Text, View } from "react-native";
|
||||
|
||||
const Ridelayout = ({children}:{children:React.ReactNode}) => {
|
||||
return(
|
||||
<View>
|
||||
|
||||
{children}
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
export default Ridelayout;
|
|
@ -0,0 +1,123 @@
|
|||
import { Driver, MarkerData } from "@/types/type";
|
||||
|
||||
const directionsAPI = process.env.EXPO_PUBLIC_GOOGLE_API_KEY;
|
||||
|
||||
export const generateMarkersFromData = ({
|
||||
data,
|
||||
userLatitude,
|
||||
userLongitude,
|
||||
}: {
|
||||
data: Driver[];
|
||||
userLatitude: number;
|
||||
userLongitude: number;
|
||||
}): MarkerData[] => {
|
||||
return data.map((driver) => {
|
||||
const latOffset = (Math.random() - 0.5) * 0.01; // Random offset between -0.005 and 0.005
|
||||
const lngOffset = (Math.random() - 0.5) * 0.01; // Random offset between -0.005 and 0.005
|
||||
|
||||
return {
|
||||
latitude: userLatitude + latOffset,
|
||||
longitude: userLongitude + lngOffset,
|
||||
title: `${driver.first_name} ${driver.last_name}`,
|
||||
...driver,
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
export const calculateRegion = ({
|
||||
userLatitude,
|
||||
userLongitude,
|
||||
destinationLatitude,
|
||||
destinationLongitude,
|
||||
}: {
|
||||
userLatitude: number | null;
|
||||
userLongitude: number | null;
|
||||
destinationLatitude?: number | null;
|
||||
destinationLongitude?: number | null;
|
||||
}) => {
|
||||
if (!userLatitude || !userLongitude) {
|
||||
return {
|
||||
// latitude: 22.5645,
|
||||
// longitude: 72.9289,
|
||||
latitude: 37.78825,
|
||||
longitude: -122.4324,
|
||||
latitudeDelta: 0.01,
|
||||
longitudeDelta: 0.01,
|
||||
};
|
||||
}
|
||||
|
||||
if (!destinationLatitude || !destinationLongitude) {
|
||||
return {
|
||||
latitude: userLatitude,
|
||||
longitude: userLongitude,
|
||||
latitudeDelta: 0.01,
|
||||
longitudeDelta: 0.01,
|
||||
};
|
||||
}
|
||||
|
||||
const minLat = Math.min(userLatitude, destinationLatitude);
|
||||
const maxLat = Math.max(userLatitude, destinationLatitude);
|
||||
const minLng = Math.min(userLongitude, destinationLongitude);
|
||||
const maxLng = Math.max(userLongitude, destinationLongitude);
|
||||
|
||||
const latitudeDelta = (maxLat - minLat) * 1.3; // Adding some padding
|
||||
const longitudeDelta = (maxLng - minLng) * 1.3; // Adding some padding
|
||||
|
||||
const latitude = (userLatitude + destinationLatitude) / 2;
|
||||
const longitude = (userLongitude + destinationLongitude) / 2;
|
||||
|
||||
return {
|
||||
latitude,
|
||||
longitude,
|
||||
latitudeDelta,
|
||||
longitudeDelta,
|
||||
};
|
||||
};
|
||||
|
||||
export const calculateDriverTimes = async ({
|
||||
markers,
|
||||
userLatitude,
|
||||
userLongitude,
|
||||
destinationLatitude,
|
||||
destinationLongitude,
|
||||
}: {
|
||||
markers: MarkerData[];
|
||||
userLatitude: number | null;
|
||||
userLongitude: number | null;
|
||||
destinationLatitude: number | null;
|
||||
destinationLongitude: number | null;
|
||||
}) => {
|
||||
if (
|
||||
!userLatitude ||
|
||||
!userLongitude ||
|
||||
!destinationLatitude ||
|
||||
!destinationLongitude
|
||||
)
|
||||
return;
|
||||
|
||||
try {
|
||||
const timesPromises = markers.map(async (marker) => {
|
||||
const responseToUser = await fetch(
|
||||
`https://maps.googleapis.com/maps/api/directions/json?origin=${marker.latitude},${marker.longitude}&destination=${userLatitude},${userLongitude}&key=${directionsAPI}`,
|
||||
);
|
||||
const dataToUser = await responseToUser.json();
|
||||
const timeToUser = dataToUser.routes[0].legs[0].duration.value; // Time in seconds
|
||||
|
||||
const responseToDestination = await fetch(
|
||||
`https://maps.googleapis.com/maps/api/directions/json?origin=${userLatitude},${userLongitude}&destination=${destinationLatitude},${destinationLongitude}&key=${directionsAPI}`,
|
||||
);
|
||||
const dataToDestination = await responseToDestination.json();
|
||||
const timeToDestination =
|
||||
dataToDestination.routes[0].legs[0].duration.value; // Time in seconds
|
||||
|
||||
const totalTime = (timeToUser + timeToDestination) / 60; // Total time in minutes
|
||||
const price = (totalTime * 0.5).toFixed(2); // Calculate price based on time
|
||||
|
||||
return { ...marker, time: totalTime, price };
|
||||
});
|
||||
|
||||
return await Promise.all(timesPromises);
|
||||
} catch (error) {
|
||||
console.error("Error calculating driver times:", error);
|
||||
}
|
||||
};
|
|
@ -14,28 +14,31 @@
|
|||
"@neondatabase/serverless": "^0.10.4",
|
||||
"@react-navigation/bottom-tabs": "^7.2.0",
|
||||
"@react-navigation/native": "^7.0.14",
|
||||
"expo": "~52.0.39",
|
||||
"expo": "52.0.42",
|
||||
"expo-blur": "~14.0.3",
|
||||
"expo-constants": "~17.0.8",
|
||||
"expo-font": "~13.0.4",
|
||||
"expo-haptics": "~14.0.1",
|
||||
"expo-linking": "~7.0.5",
|
||||
"expo-local-authentication": "^15.0.2",
|
||||
"expo-location": "^18.0.10",
|
||||
"expo-router": "~4.0.19",
|
||||
"expo-secure-store": "^14.0.1",
|
||||
"expo-splash-screen": "~0.29.22",
|
||||
"expo-status-bar": "~2.0.1",
|
||||
"expo-symbols": "~0.2.2",
|
||||
"expo-system-ui": "~4.0.8",
|
||||
"expo-system-ui": "4.0.9",
|
||||
"expo-web-browser": "~14.0.2",
|
||||
"maps": "^0.3.3",
|
||||
"nativewind": "^4.1.23",
|
||||
"pg": "^8.14.1",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
"react-native": "^0.76.7",
|
||||
"react-native": "0.76.8",
|
||||
"react-native-animatable": "^1.4.0",
|
||||
"react-native-gesture-handler": "~2.20.2",
|
||||
"react-native-get-random-values": "^1.11.0",
|
||||
"react-native-google-places-autocomplete": "^2.5.7",
|
||||
"react-native-maps-directions": "^1.9.0",
|
||||
"react-native-modal": "^14.0.0-rc.1",
|
||||
"react-native-reanimated": "3.16.2",
|
||||
|
@ -45,7 +48,8 @@
|
|||
"react-native-web": "~0.19.13",
|
||||
"react-native-webview": "13.12.5",
|
||||
"tailwindcss": "^3.4.17",
|
||||
"twrnc": "^4.6.1"
|
||||
"twrnc": "^4.6.1",
|
||||
"zustand": "^5.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
|
@ -150,13 +154,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/generator": {
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz",
|
||||
"integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==",
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
|
||||
"integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.26.10",
|
||||
"@babel/types": "^7.26.10",
|
||||
"@babel/parser": "^7.27.0",
|
||||
"@babel/types": "^7.27.0",
|
||||
"@jridgewell/gen-mapping": "^0.3.5",
|
||||
"@jridgewell/trace-mapping": "^0.3.25",
|
||||
"jsesc": "^3.0.2"
|
||||
|
@ -499,12 +503,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz",
|
||||
"integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==",
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
|
||||
"integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.26.10"
|
||||
"@babel/types": "^7.27.0"
|
||||
},
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
|
@ -2173,14 +2177,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/template": {
|
||||
"version": "7.26.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
|
||||
"integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
|
||||
"integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.26.2",
|
||||
"@babel/parser": "^7.26.9",
|
||||
"@babel/types": "^7.26.9"
|
||||
"@babel/parser": "^7.27.0",
|
||||
"@babel/types": "^7.27.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
|
@ -2206,16 +2210,16 @@
|
|||
},
|
||||
"node_modules/@babel/traverse--for-generate-function-map": {
|
||||
"name": "@babel/traverse",
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz",
|
||||
"integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==",
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
|
||||
"integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.26.2",
|
||||
"@babel/generator": "^7.26.10",
|
||||
"@babel/parser": "^7.26.10",
|
||||
"@babel/template": "^7.26.9",
|
||||
"@babel/types": "^7.26.10",
|
||||
"@babel/generator": "^7.27.0",
|
||||
"@babel/parser": "^7.27.0",
|
||||
"@babel/template": "^7.27.0",
|
||||
"@babel/types": "^7.27.0",
|
||||
"debug": "^4.3.1",
|
||||
"globals": "^11.1.0"
|
||||
},
|
||||
|
@ -2224,9 +2228,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz",
|
||||
"integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==",
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
|
||||
"integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-string-parser": "^7.25.9",
|
||||
|
@ -2781,9 +2785,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@expo/cli": {
|
||||
"version": "0.22.20",
|
||||
"resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.22.20.tgz",
|
||||
"integrity": "sha512-BU2ASlw0Gaj3ou/TxVsgvzK+XK8Z14Yq3mmLyvMcMAQrdExZLNmvMZ3A3x6q2uMgSJM3aoQBUuVXS/Ny+lYgDA==",
|
||||
"version": "0.22.23",
|
||||
"resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.22.23.tgz",
|
||||
"integrity": "sha512-LXFKu2jnk9ClVD+kw0sJCQ89zei01wz2t4EJwc9P7EwYb8gabC8FtPyM/X7NIE5jtrnTLTUtjW5ovxQSBL7pJQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@0no-co/graphql.web": "^1.0.8",
|
||||
|
@ -2799,12 +2803,12 @@
|
|||
"@expo/osascript": "^2.1.6",
|
||||
"@expo/package-manager": "^1.7.2",
|
||||
"@expo/plist": "^0.2.2",
|
||||
"@expo/prebuild-config": "^8.0.29",
|
||||
"@expo/prebuild-config": "^8.0.30",
|
||||
"@expo/rudder-sdk-node": "^1.1.1",
|
||||
"@expo/spawn-async": "^1.7.2",
|
||||
"@expo/ws-tunnel": "^1.0.1",
|
||||
"@expo/xcpretty": "^4.3.0",
|
||||
"@react-native/dev-middleware": "0.76.7",
|
||||
"@react-native/dev-middleware": "0.76.8",
|
||||
"@urql/core": "^5.0.6",
|
||||
"@urql/exchange-retry": "^1.3.0",
|
||||
"accepts": "^1.3.8",
|
||||
|
@ -3260,9 +3264,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@expo/prebuild-config": {
|
||||
"version": "8.0.29",
|
||||
"resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-8.0.29.tgz",
|
||||
"integrity": "sha512-CoZBxUQLZpGwbnPREr2sFnObOn4j+Mp7AHxX6Rz5jhSSz2VifC1jMM4NFiXrZe6LZyjYNqBGRe3D8bAqdpVGkg==",
|
||||
"version": "8.0.30",
|
||||
"resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-8.0.30.tgz",
|
||||
"integrity": "sha512-xNHWGh0xLZjxBXwVbDW+TPeexuQ95FZX2ZRrzJkALxhQiwYQswQSFE7CVUFMC2USIKVklCcgfEvtqnguTBQVxQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/config": "~10.0.11",
|
||||
|
@ -3270,7 +3274,7 @@
|
|||
"@expo/config-types": "^52.0.5",
|
||||
"@expo/image-utils": "^0.6.5",
|
||||
"@expo/json-file": "^9.0.2",
|
||||
"@react-native/normalize-colors": "0.76.7",
|
||||
"@react-native/normalize-colors": "0.76.8",
|
||||
"debug": "^4.3.1",
|
||||
"fs-extra": "^9.0.0",
|
||||
"resolve-from": "^5.0.0",
|
||||
|
@ -4226,30 +4230,30 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-native/assets-registry": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.76.7.tgz",
|
||||
"integrity": "sha512-o79whsqL5fbPTUQO9w1FptRd4cw1TaeOrXtQSLQeDrMVAenw/wmsjyPK10VKtvqxa1KNMtWEyfgxcM8CVZVFmg==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.76.8.tgz",
|
||||
"integrity": "sha512-vQQi3kabQpj21Iohy2ou3/laCRE5hlW4r122ZivqCIN/UMwr5vT2/fTgPOBQoJ5X3YhZBe58BmifIstZutm0Ew==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/babel-plugin-codegen": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.7.tgz",
|
||||
"integrity": "sha512-+8H4DXJREM4l/pwLF/wSVMRzVhzhGDix5jLezNrMD9J1U1AMfV2aSkWA1XuqR7pjPs/Vqf6TaPL7vJMZ4LU05Q==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.8.tgz",
|
||||
"integrity": "sha512-84RUEhDZS+q7vPtxKi0iMZLd5/W0VN7NOyqX5f+burV3xMYpUhpF5TDJ2Ysol7dJrvEZHm6ISAriO85++V8YDw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@react-native/codegen": "0.76.7"
|
||||
"@react-native/codegen": "0.76.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/babel-preset": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.7.tgz",
|
||||
"integrity": "sha512-/c5DYZ6y8tyg+g8tgXKndDT7mWnGmkZ9F+T3qNDfoE3Qh7ucrNeC2XWvU9h5pk8eRtj9l4SzF4aO1phzwoibyg==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.8.tgz",
|
||||
"integrity": "sha512-xrP+r3orRzzxtC2TrfGIP6IYi1f4AiWlnSiWf4zxEdMFzKrYdmxhD0FPtAZb77B0DqFIW5AcBFlm4grfL/VgfA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
|
@ -4293,7 +4297,7 @@
|
|||
"@babel/plugin-transform-typescript": "^7.25.2",
|
||||
"@babel/plugin-transform-unicode-regex": "^7.24.7",
|
||||
"@babel/template": "^7.25.0",
|
||||
"@react-native/babel-plugin-codegen": "0.76.7",
|
||||
"@react-native/babel-plugin-codegen": "0.76.8",
|
||||
"babel-plugin-syntax-hermes-parser": "^0.25.1",
|
||||
"babel-plugin-transform-flow-enums": "^0.0.2",
|
||||
"react-refresh": "^0.14.0"
|
||||
|
@ -4306,9 +4310,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-native/codegen": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.7.tgz",
|
||||
"integrity": "sha512-FAn585Ll65YvkSrKDyAcsdjHhhAGiMlSTUpHh0x7J5ntudUns+voYms0xMP+pEPt0XuLdjhD7zLIIlAWP407+g==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.8.tgz",
|
||||
"integrity": "sha512-qvKhcYBkRHJFkeWrYm66kEomQOTVXWiHBkZ8VF9oC/71OJkLszpTpVOuPIyyib6fqhjy9l7mHYGYenSpfYI5Ww==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.25.3",
|
||||
|
@ -4349,13 +4353,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-native/community-cli-plugin": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.76.7.tgz",
|
||||
"integrity": "sha512-lrcsY2WPLCEWU1pjdNV9+Ccj8vCEwCCURZiPa5aqi7lKB4C++1hPrxA8/CWWnTNcQp76DsBKGYqTFj7Ud4aupw==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.76.8.tgz",
|
||||
"integrity": "sha512-3rs6YehAVEootGpzchmj1ln2BCSTnIDTKqAYykUggEwpplg+CNTiBrvRrnjmlLXk3nOlIE8KOw4zRCd3PpI+bg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@react-native/dev-middleware": "0.76.7",
|
||||
"@react-native/metro-babel-transformer": "0.76.7",
|
||||
"@react-native/dev-middleware": "0.76.8",
|
||||
"@react-native/metro-babel-transformer": "0.76.8",
|
||||
"chalk": "^4.0.0",
|
||||
"execa": "^5.1.1",
|
||||
"invariant": "^2.2.4",
|
||||
|
@ -4370,10 +4374,10 @@
|
|||
"node": ">=18"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@react-native-community/cli-server-api": "*"
|
||||
"@react-native-community/cli": "*"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@react-native-community/cli-server-api": {
|
||||
"@react-native-community/cli": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
|
@ -4480,22 +4484,22 @@
|
|||
"license": "ISC"
|
||||
},
|
||||
"node_modules/@react-native/debugger-frontend": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.76.7.tgz",
|
||||
"integrity": "sha512-89ZtZXt7ZxE94i7T94qzZMhp4Gfcpr/QVpGqEaejAxZD+gvDCH21cYSF+/Rz2ttBazm0rk5MZ0mFqb0Iqp1jmw==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.76.8.tgz",
|
||||
"integrity": "sha512-kSukBw2C++5ENLUCAp/1uEeiFgiHi/MBa71Wgym3UD5qwu2vOSPOTSKRX7q2Jb676MUzTcrIaJBZ/r2qk25u7Q==",
|
||||
"license": "BSD-3-Clause",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/dev-middleware": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.76.7.tgz",
|
||||
"integrity": "sha512-Jsw8g9DyLPnR9yHEGuT09yHZ7M88/GL9CtU9WmyChlBwdXSeE3AmRqLegsV3XcgULQ1fqdemokaOZ/MwLYkjdA==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.76.8.tgz",
|
||||
"integrity": "sha512-KYx7hFME2uYQRCDCqb19ghw51TAdh48PZ5EMpoU2kPA1SKKO9c1bUbpsKRhVZ0bv1QqEX6fjox3c4/WYRozHQA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@isaacs/ttlcache": "^1.4.1",
|
||||
"@react-native/debugger-frontend": "0.76.7",
|
||||
"@react-native/debugger-frontend": "0.76.8",
|
||||
"chrome-launcher": "^0.15.2",
|
||||
"chromium-edge-launcher": "^0.2.0",
|
||||
"connect": "^3.6.5",
|
||||
|
@ -4536,31 +4540,31 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-native/gradle-plugin": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.76.7.tgz",
|
||||
"integrity": "sha512-gQI6RcrJbigU8xk7F960C5xQIgvbBj20TUvGecD+N2PHfbLpqR+92cj7hz3UcbrCONmTP40WHnbMMJ8P+kLsrA==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.76.8.tgz",
|
||||
"integrity": "sha512-rgocQRydHS8IkcyUs1VFhz+Q0OjL3QYI5/A7pMLRz6nEW8GAmoFnXqwujtPHivVrXbuCLIzGBKnsl2hsZsOopg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/js-polyfills": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.76.7.tgz",
|
||||
"integrity": "sha512-+iEikj6c6Zvrg1c3cYMeiPB+5nS8EaIC3jCtP6Muk3qc7c386IymEPM2xycIlfg04DPZvO3D4P2/vaO9/TCnUg==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.76.8.tgz",
|
||||
"integrity": "sha512-bZzPjpDQaWU+F//N/WZJfaglYgYga4oXl9rzXyKOJP7KcebkOKJbAsG1mo7RCOVIbHYQCKUvQXIpV3IQOWNOEg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/metro-babel-transformer": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.76.7.tgz",
|
||||
"integrity": "sha512-jDS1wR7q46xY5ah+jF714Mvss9l7+lmwW/tplahZgLKozkYDC8Td5o9TOCgKlv18acw9H1V7zv8ivuRSj8ICPg==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz",
|
||||
"integrity": "sha512-tEjNJo3Wwiig1OmI7H3cLOrAkAxT9lBqs1k+oanRm64o0Cay2ACH0PdXrk45sxENU3iTfxXeQ7mmY1u2XVYDpw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
"@react-native/babel-preset": "0.76.7",
|
||||
"@react-native/babel-preset": "0.76.8",
|
||||
"hermes-parser": "0.23.1",
|
||||
"nullthrows": "^1.1.1"
|
||||
},
|
||||
|
@ -4572,15 +4576,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@react-native/normalize-colors": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.76.7.tgz",
|
||||
"integrity": "sha512-ST1xxBuYVIXPdD81dR6+tzIgso7m3pa9+6rOBXTh5Xm7KEEFik7tnQX+GydXYMp3wr1gagJjragdXkPnxK6WNg==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.76.8.tgz",
|
||||
"integrity": "sha512-FRjRvs7RgsXjkbGSOjYSxhX5V70c0IzA/jy3HXeYpATMwD9fOR1DbveLW497QGsVdCa0vThbJUtR8rIzAfpHQA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@react-native/virtualized-lists": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.76.7.tgz",
|
||||
"integrity": "sha512-pRUf1jUO8H9Ft04CaWv76t34QI9wY0sydoYlIwEtqXjjMJgmgDoOCAWBjArgn2mk8/rK+u/uicI67ZCYCp1pJw==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.76.8.tgz",
|
||||
"integrity": "sha512-OsB+LoEFH80wL+qhQrNpJR3O3oNDmyZf0go7/MQiayZbT8IkD8aPdHmK4QIVoIwAbFWXw7RkcFdubhSWwi0wAQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"invariant": "^2.2.4",
|
||||
|
@ -6421,9 +6425,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/babel-preset-expo": {
|
||||
"version": "12.0.9",
|
||||
"resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-12.0.9.tgz",
|
||||
"integrity": "sha512-1c+ysrTavT49WgVAj0OX/TEzt1kU2mfPhDaDajstshNHXFKPenMPWSViA/DHrJKVIMwaqr+z3GbUOD9GtKgpdg==",
|
||||
"version": "12.0.10",
|
||||
"resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-12.0.10.tgz",
|
||||
"integrity": "sha512-6QE52Bxsp5XRE8t0taKRFTFsmTG0ThQE+PTgCgLY9s8v2Aeh8R+E+riXhSHX6hP+diDmBFBdvLCUTq7kroJb1Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/plugin-proposal-decorators": "^7.12.9",
|
||||
|
@ -6432,7 +6436,7 @@
|
|||
"@babel/plugin-transform-parameters": "^7.22.15",
|
||||
"@babel/preset-react": "^7.22.15",
|
||||
"@babel/preset-typescript": "^7.23.0",
|
||||
"@react-native/babel-preset": "0.76.7",
|
||||
"@react-native/babel-preset": "0.76.8",
|
||||
"babel-plugin-react-native-web": "~0.19.13",
|
||||
"react-refresh": "^0.14.2"
|
||||
},
|
||||
|
@ -8980,22 +8984,22 @@
|
|||
}
|
||||
},
|
||||
"node_modules/expo": {
|
||||
"version": "52.0.39",
|
||||
"resolved": "https://registry.npmjs.org/expo/-/expo-52.0.39.tgz",
|
||||
"integrity": "sha512-EOnrgj8MHSt0o0SIBhM7jCim2QpJJNonbSATn9LqNtVgKtotIg718G/OrP5/g0GUAOBDyxHH9PfNu/aq9c0vDw==",
|
||||
"version": "52.0.42",
|
||||
"resolved": "https://registry.npmjs.org/expo/-/expo-52.0.42.tgz",
|
||||
"integrity": "sha512-t+PRYIzzPFAlF99OVJOjZwM1glLhN85XGD6vmeg6uwpADDILl9yw4dfy0DXL4hot5GJkAGaZ+uOHUljV4kC2Bg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.20.0",
|
||||
"@expo/cli": "0.22.20",
|
||||
"@expo/cli": "0.22.23",
|
||||
"@expo/config": "~10.0.11",
|
||||
"@expo/config-plugins": "~9.0.17",
|
||||
"@expo/fingerprint": "0.11.11",
|
||||
"@expo/metro-config": "0.19.12",
|
||||
"@expo/vector-icons": "^14.0.0",
|
||||
"babel-preset-expo": "~12.0.9",
|
||||
"expo-asset": "~11.0.4",
|
||||
"babel-preset-expo": "~12.0.10",
|
||||
"expo-asset": "~11.0.5",
|
||||
"expo-constants": "~17.0.8",
|
||||
"expo-file-system": "~18.0.11",
|
||||
"expo-file-system": "~18.0.12",
|
||||
"expo-font": "~13.0.4",
|
||||
"expo-keep-awake": "~14.0.3",
|
||||
"expo-modules-autolinking": "2.0.8",
|
||||
|
@ -9005,7 +9009,9 @@
|
|||
"whatwg-url-without-unicode": "8.0.0-3"
|
||||
},
|
||||
"bin": {
|
||||
"expo": "bin/cli"
|
||||
"expo": "bin/cli",
|
||||
"expo-modules-autolinking": "bin/autolinking",
|
||||
"fingerprint": "bin/fingerprint"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@expo/dom-webview": "*",
|
||||
|
@ -9037,13 +9043,13 @@
|
|||
}
|
||||
},
|
||||
"node_modules/expo-asset": {
|
||||
"version": "11.0.4",
|
||||
"resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.0.4.tgz",
|
||||
"integrity": "sha512-CdIywU0HrR3wsW5c3n0cT3jW9hccZdnqGsRqY+EY/RWzJbDXtDfAQVEiFHO3mDK7oveUwrP2jK/6ZRNek41/sg==",
|
||||
"version": "11.0.5",
|
||||
"resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.0.5.tgz",
|
||||
"integrity": "sha512-TL60LmMBGVzs3NQcO8ylWqBumMh4sx0lmeJsn7+9C88fylGDhyyVnKZ1PyTXo9CVDBkndutZx2JUEQWM9BaiXw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@expo/image-utils": "^0.6.5",
|
||||
"expo-constants": "~17.0.7",
|
||||
"expo-constants": "~17.0.8",
|
||||
"invariant": "^2.2.4",
|
||||
"md5-file": "^3.2.3"
|
||||
},
|
||||
|
@ -9111,9 +9117,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/expo-file-system": {
|
||||
"version": "18.0.11",
|
||||
"resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.11.tgz",
|
||||
"integrity": "sha512-yDwYfEzWgPXsBZHJW2RJ8Q66ceiFN9Wa5D20pp3fjXVkzPBDwxnYwiPWk4pVmCa5g4X5KYMoMne1pUrsL4OEpg==",
|
||||
"version": "18.0.12",
|
||||
"resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.12.tgz",
|
||||
"integrity": "sha512-HAkrd/mb8r+G3lJ9MzmGeuW2B+BxQR1joKfeCyY4deLl1zoZ48FrAWjgZjHK9aHUVhJ0ehzInu/NQtikKytaeg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"web-streams-polyfill": "^3.3.2"
|
||||
|
@ -9181,6 +9187,15 @@
|
|||
"expo": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/expo-location": {
|
||||
"version": "18.0.10",
|
||||
"resolved": "https://registry.npmjs.org/expo-location/-/expo-location-18.0.10.tgz",
|
||||
"integrity": "sha512-R0Iioz0UZ9Ts8TACPngh8uDFbajJhVa5/igLqWB8Pq/gp8UHuwj7PC8XbZV7avsFoShYjaxrOhf4U7IONeKLgg==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"expo": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/expo-modules-autolinking": {
|
||||
"version": "2.0.8",
|
||||
"resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-2.0.8.tgz",
|
||||
|
@ -9342,12 +9357,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/expo-system-ui": {
|
||||
"version": "4.0.8",
|
||||
"resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-4.0.8.tgz",
|
||||
"integrity": "sha512-0AmWXJ3ObwMYxi2YGagwRQikydoUZJXLeK4A0FY1PsZpnlorSQ4IAfEVS38JmA54tf5CpP4TjBp5ZVEjRyv1rw==",
|
||||
"version": "4.0.9",
|
||||
"resolved": "https://registry.npmjs.org/expo-system-ui/-/expo-system-ui-4.0.9.tgz",
|
||||
"integrity": "sha512-hqBc0EWeK/BTB8i4H84vqNjje8GgxhapYrcWdg5qriaRA/u+bNNxhmpZXdAjFuhonOP4SmAbF+gjoJJWsTrhUg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@react-native/normalize-colors": "0.76.7",
|
||||
"@react-native/normalize-colors": "0.76.8",
|
||||
"debug": "^4.3.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
@ -9377,6 +9392,12 @@
|
|||
"integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/fast-base64-decode": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz",
|
||||
"integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fast-deep-equal": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||
|
@ -13062,9 +13083,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/metro": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro/-/metro-0.81.3.tgz",
|
||||
"integrity": "sha512-upilFs7z1uLKvdzFYHiVKrGT/uC7h7d53R0g/FaJoQvLfA8jQG2V69jeOcGi4wCsFYvl1zBSZvKxpQb0nA3giQ==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro/-/metro-0.81.4.tgz",
|
||||
"integrity": "sha512-78f0aBNPuwXW7GFnSc+Y0vZhbuQorXxdgqQfvSRqcSizqwg9cwF27I05h47tL8AzQcizS1JZncvq4xf5u/Qykw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.24.7",
|
||||
|
@ -13088,18 +13109,18 @@
|
|||
"jest-worker": "^29.7.0",
|
||||
"jsc-safe-url": "^0.2.2",
|
||||
"lodash.throttle": "^4.1.1",
|
||||
"metro-babel-transformer": "0.81.3",
|
||||
"metro-cache": "0.81.3",
|
||||
"metro-cache-key": "0.81.3",
|
||||
"metro-config": "0.81.3",
|
||||
"metro-core": "0.81.3",
|
||||
"metro-file-map": "0.81.3",
|
||||
"metro-resolver": "0.81.3",
|
||||
"metro-runtime": "0.81.3",
|
||||
"metro-source-map": "0.81.3",
|
||||
"metro-symbolicate": "0.81.3",
|
||||
"metro-transform-plugins": "0.81.3",
|
||||
"metro-transform-worker": "0.81.3",
|
||||
"metro-babel-transformer": "0.81.4",
|
||||
"metro-cache": "0.81.4",
|
||||
"metro-cache-key": "0.81.4",
|
||||
"metro-config": "0.81.4",
|
||||
"metro-core": "0.81.4",
|
||||
"metro-file-map": "0.81.4",
|
||||
"metro-resolver": "0.81.4",
|
||||
"metro-runtime": "0.81.4",
|
||||
"metro-source-map": "0.81.4",
|
||||
"metro-symbolicate": "0.81.4",
|
||||
"metro-transform-plugins": "0.81.4",
|
||||
"metro-transform-worker": "0.81.4",
|
||||
"mime-types": "^2.1.27",
|
||||
"nullthrows": "^1.1.1",
|
||||
"serialize-error": "^2.1.0",
|
||||
|
@ -13116,9 +13137,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/metro-babel-transformer": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.81.3.tgz",
|
||||
"integrity": "sha512-ENqtnPy2mQZFOuKrbqHRcAwZuaYe43X+30xIF0xlkLuMyCvc0CsFzrrSK9EqrQwexhVlqaRALb0GQbBMcE/y8g==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.81.4.tgz",
|
||||
"integrity": "sha512-WW0yswWrW+eTVK9sYD+b1HwWOiUlZlUoomiw9TIOk0C+dh2V90Wttn/8g62kYi0Y4i+cJfISerB2LbV4nuRGTA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
|
@ -13146,23 +13167,23 @@
|
|||
}
|
||||
},
|
||||
"node_modules/metro-cache": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.81.3.tgz",
|
||||
"integrity": "sha512-6UelMQYjlto/79tTXu0vsTxAX4e+Bkf0tgtDL1BNx3wd68pBg8qKIYpJPaUlOIaNUzFXTBDjYwUverkEW0KAtA==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.81.4.tgz",
|
||||
"integrity": "sha512-sxCPH3gowDxazSaZZrwdNPEpnxR8UeXDnvPjBF9+5btDBNN2DpWvDAXPvrohkYkFImhc0LajS2V7eOXvu9PnvQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"exponential-backoff": "^3.1.1",
|
||||
"flow-enums-runtime": "^0.0.6",
|
||||
"metro-core": "0.81.3"
|
||||
"metro-core": "0.81.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.18"
|
||||
}
|
||||
},
|
||||
"node_modules/metro-cache-key": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.81.3.tgz",
|
||||
"integrity": "sha512-KPsPSRUd6uRva7k7k/DqiiD8td7URQWx0RkX/Cj5+bed5zSXEg/XoQA+b+DmMxS5C7TqP61Fh3XvHx6TQRW82A==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.81.4.tgz",
|
||||
"integrity": "sha512-3SaWQybvf1ivasjBegIxzVKLJzOpcz+KsnGwXFOYADQq0VN4cnM7tT+u2jkOhk6yJiiO1WIjl68hqyMOQJRRLg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"flow-enums-runtime": "^0.0.6"
|
||||
|
@ -13172,42 +13193,42 @@
|
|||
}
|
||||
},
|
||||
"node_modules/metro-config": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.81.3.tgz",
|
||||
"integrity": "sha512-WpTaT0iQr5juVY50Y/cyacG2ggZqF38VshEQepT+ovPK8E/xUVxlbO5yxLSXUxxUXX3Hka9r6g64+y2WC6c/xQ==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.81.4.tgz",
|
||||
"integrity": "sha512-QnhMy3bRiuimCTy7oi5Ug60javrSa3lPh0gpMAspQZHY9h6y86jwHtZPLtlj8hdWQESIlrbeL8inMSF6qI/i9Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"connect": "^3.6.5",
|
||||
"cosmiconfig": "^5.0.5",
|
||||
"flow-enums-runtime": "^0.0.6",
|
||||
"jest-validate": "^29.7.0",
|
||||
"metro": "0.81.3",
|
||||
"metro-cache": "0.81.3",
|
||||
"metro-core": "0.81.3",
|
||||
"metro-runtime": "0.81.3"
|
||||
"metro": "0.81.4",
|
||||
"metro-cache": "0.81.4",
|
||||
"metro-core": "0.81.4",
|
||||
"metro-runtime": "0.81.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.18"
|
||||
}
|
||||
},
|
||||
"node_modules/metro-core": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.81.3.tgz",
|
||||
"integrity": "sha512-WZ+qohnpvvSWdPj1VJPUrZz+2ik29M+UUpMU6YrmzQUfDyZ6JYHhzlw5WVBtwpt/+2xTsIyrZ2C1fByT/DsLQA==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.81.4.tgz",
|
||||
"integrity": "sha512-GdL4IgmgJhrMA/rTy2lRqXKeXfC77Rg+uvhUEkbhyfj/oz7PrdSgvIFzziapjdHwk1XYq0KyFh/CcVm8ZawG6A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"flow-enums-runtime": "^0.0.6",
|
||||
"lodash.throttle": "^4.1.1",
|
||||
"metro-resolver": "0.81.3"
|
||||
"metro-resolver": "0.81.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.18"
|
||||
}
|
||||
},
|
||||
"node_modules/metro-file-map": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.81.3.tgz",
|
||||
"integrity": "sha512-F+t4lnVRoauJxtr9xmI4pWIOE77/vl0IrHDGeJSI9cW6LmuqxkpOlZHTKpbs/hMAo6+KhG2JMJACQDvXDLd/GA==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.81.4.tgz",
|
||||
"integrity": "sha512-qUIBzkiqOi3qEuscu4cJ83OYQ4hVzjON19FAySWqYys9GKCmxlKa7LkmwqdpBso6lQl+JXZ7nCacX90w5wQvPA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"debug": "^2.2.0",
|
||||
|
@ -13240,9 +13261,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/metro-minify-terser": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.81.3.tgz",
|
||||
"integrity": "sha512-912AYv3OmwcbUwzCdWbdQRk+RV6kXXluHKlhBdYFD3kr4Ece691rzlofU/Mlt9qZrhHtctD5Q8cFqOEf9Z69bQ==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.81.4.tgz",
|
||||
"integrity": "sha512-oVvq/AGvqmbhuijJDZZ9npeWzaVyeBwQKtdlnjcQ9fH7nR15RiBr5y2zTdgTEdynqOIb1Kc16l8CQIUSzOWVFA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"flow-enums-runtime": "^0.0.6",
|
||||
|
@ -13253,9 +13274,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/metro-resolver": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.81.3.tgz",
|
||||
"integrity": "sha512-XnjENY1c6jcsEfFVIjN/8McUIInCVgGxv5eva+9ZWeCTyiAE/L5HPj2ai/Myb349+6QuSMR0dscTkKCnOwWXdw==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.81.4.tgz",
|
||||
"integrity": "sha512-Ng7G2mXjSExMeRzj6GC19G6IJ0mfIbOLgjArsMWJgtt9ViZiluCwgWsMW9juBC5NSwjJxUMK2x6pC5NIMFLiHA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"flow-enums-runtime": "^0.0.6"
|
||||
|
@ -13265,9 +13286,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/metro-runtime": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.81.3.tgz",
|
||||
"integrity": "sha512-neuGRMC2pgGKIFPbmbrxW41/SmvL7OX4i1LN+saUY2t1cZfxf9haQHUMCGhO3498uEL2N+ulKRSlQrHt6XwGaw==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.81.4.tgz",
|
||||
"integrity": "sha512-fBoRgqkF69CwyPtBNxlDi5ha26Zc8f85n2THXYoh13Jn/Bkg8KIDCdKPp/A1BbSeNnkH/++H2EIIfnmaff4uRg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.25.0",
|
||||
|
@ -13278,9 +13299,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/metro-source-map": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.81.3.tgz",
|
||||
"integrity": "sha512-BHJJurmDQRn3hCbBawh/UHzPz3duMpwpE3ofImO2DoWHYzn6nSg/D4wfCN4y14d9fFLE4e0I+BAOX1HWNP4jsw==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.81.4.tgz",
|
||||
"integrity": "sha512-IOwVQ7mLqoqvsL70RZtl1EyE3f9jp43kVsAsb/B/zoWmu0/k4mwEhGLTxmjdXRkLJqPqPrh7WmFChAEf9trW4Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/traverse": "^7.25.3",
|
||||
|
@ -13288,9 +13309,9 @@
|
|||
"@babel/types": "^7.25.2",
|
||||
"flow-enums-runtime": "^0.0.6",
|
||||
"invariant": "^2.2.4",
|
||||
"metro-symbolicate": "0.81.3",
|
||||
"metro-symbolicate": "0.81.4",
|
||||
"nullthrows": "^1.1.1",
|
||||
"ob1": "0.81.3",
|
||||
"ob1": "0.81.4",
|
||||
"source-map": "^0.5.6",
|
||||
"vlq": "^1.0.0"
|
||||
},
|
||||
|
@ -13308,14 +13329,14 @@
|
|||
}
|
||||
},
|
||||
"node_modules/metro-symbolicate": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.81.3.tgz",
|
||||
"integrity": "sha512-LQLT6WopQmIz2SDSVh3Lw7nLzF58HpsrPYqRB7RpRXBYhYmPFIjiGaP8qqtKHXczM/5YAOJzpgt8t/OGZgh6Eg==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.81.4.tgz",
|
||||
"integrity": "sha512-rWxTmYVN6/BOSaMDUHT8HgCuRf6acd0AjHkenYlHpmgxg7dqdnAG1hLq999q2XpW5rX+cMamZD5W5Ez2LqGaag==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"flow-enums-runtime": "^0.0.6",
|
||||
"invariant": "^2.2.4",
|
||||
"metro-source-map": "0.81.3",
|
||||
"metro-source-map": "0.81.4",
|
||||
"nullthrows": "^1.1.1",
|
||||
"source-map": "^0.5.6",
|
||||
"vlq": "^1.0.0"
|
||||
|
@ -13337,9 +13358,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/metro-transform-plugins": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.81.3.tgz",
|
||||
"integrity": "sha512-4JMUXhBB5y4h3dyA272k7T7+U3+J4fSBcct0Y8Yur9ziZB/dK8fieEQg5ZPfEGsgOGI+54zTzOUqga6AgmZSNg==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.81.4.tgz",
|
||||
"integrity": "sha512-nlP069nDXm4v28vbll4QLApAlvVtlB66rP6h+ml8Q/CCQCPBXu2JLaoxUmkIOJQjLhMRUcgTyQHq+TXWJhydOQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
|
@ -13354,9 +13375,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/metro-transform-worker": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.81.3.tgz",
|
||||
"integrity": "sha512-KZqm9sVyBKRygUxRm+yP4DguE9R1EEv28KJhIxghNp5dcdVXBYUPe1xHoc3QVdzD9c3tf8JFzA2FBlKTlwMwNg==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.81.4.tgz",
|
||||
"integrity": "sha512-lKAeRZ8EUMtx2cA/Y4KvICr9bIr5SE03iK3lm+l9wyn2lkjLUuPjYVep159inLeDqC6AtSubsA8MZLziP7c03g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
|
@ -13364,13 +13385,13 @@
|
|||
"@babel/parser": "^7.25.3",
|
||||
"@babel/types": "^7.25.2",
|
||||
"flow-enums-runtime": "^0.0.6",
|
||||
"metro": "0.81.3",
|
||||
"metro-babel-transformer": "0.81.3",
|
||||
"metro-cache": "0.81.3",
|
||||
"metro-cache-key": "0.81.3",
|
||||
"metro-minify-terser": "0.81.3",
|
||||
"metro-source-map": "0.81.3",
|
||||
"metro-transform-plugins": "0.81.3",
|
||||
"metro": "0.81.4",
|
||||
"metro-babel-transformer": "0.81.4",
|
||||
"metro-cache": "0.81.4",
|
||||
"metro-cache-key": "0.81.4",
|
||||
"metro-minify-terser": "0.81.4",
|
||||
"metro-source-map": "0.81.4",
|
||||
"metro-transform-plugins": "0.81.4",
|
||||
"nullthrows": "^1.1.1"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -13481,9 +13502,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/mime-db": {
|
||||
"version": "1.53.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz",
|
||||
"integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==",
|
||||
"version": "1.54.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz",
|
||||
"integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.6"
|
||||
|
@ -13896,9 +13917,9 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/ob1": {
|
||||
"version": "0.81.3",
|
||||
"resolved": "https://registry.npmjs.org/ob1/-/ob1-0.81.3.tgz",
|
||||
"integrity": "sha512-wd8zdH0DWsn2iDVn2zT/QURihcqoc73K8FhNCmQ16qkJaoYJLNb/N+huOwdCgsbNP8Lk/s1+dPnDETx+RzsrWA==",
|
||||
"version": "0.81.4",
|
||||
"resolved": "https://registry.npmjs.org/ob1/-/ob1-0.81.4.tgz",
|
||||
"integrity": "sha512-EZLYM8hfPraC2SYOR5EWLFAPV5e6g+p83m2Jth9bzCpFxP1NDQJYXdmXRB2bfbaWQSmm6NkIQlbzk7uU5lLfgg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"flow-enums-runtime": "^0.0.6"
|
||||
|
@ -15145,6 +15166,18 @@
|
|||
"react": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/qs": {
|
||||
"version": "6.9.7",
|
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz",
|
||||
"integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==",
|
||||
"license": "BSD-3-Clause",
|
||||
"engines": {
|
||||
"node": ">=0.6"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/query-string": {
|
||||
"version": "7.1.3",
|
||||
"resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz",
|
||||
|
@ -15341,19 +15374,19 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/react-native": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.76.7.tgz",
|
||||
"integrity": "sha512-GPJcQeO3qUi1MvuhsC2DC6tH8gJQ4uc4JWPORrdeuCGFWE3QLsN8/hiChTEvJREHLfQSV61YPI8gIOtAQ8c37g==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.76.8.tgz",
|
||||
"integrity": "sha512-sVoAd/cDBdVoLjNz8Lp5DAg4l6Iag0l5AiChN2J/NGhM//PW6+MIW50TI8G1iZz4rquAgWtcCHwEp5P5FvMyDA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jest/create-cache-key-function": "^29.6.3",
|
||||
"@react-native/assets-registry": "0.76.7",
|
||||
"@react-native/codegen": "0.76.7",
|
||||
"@react-native/community-cli-plugin": "0.76.7",
|
||||
"@react-native/gradle-plugin": "0.76.7",
|
||||
"@react-native/js-polyfills": "0.76.7",
|
||||
"@react-native/normalize-colors": "0.76.7",
|
||||
"@react-native/virtualized-lists": "0.76.7",
|
||||
"@react-native/assets-registry": "0.76.8",
|
||||
"@react-native/codegen": "0.76.8",
|
||||
"@react-native/community-cli-plugin": "0.76.8",
|
||||
"@react-native/gradle-plugin": "0.76.8",
|
||||
"@react-native/js-polyfills": "0.76.8",
|
||||
"@react-native/normalize-colors": "0.76.8",
|
||||
"@react-native/virtualized-lists": "0.76.8",
|
||||
"abort-controller": "^3.0.0",
|
||||
"anser": "^1.4.9",
|
||||
"ansi-regex": "^5.0.0",
|
||||
|
@ -15469,6 +15502,46 @@
|
|||
"react-native": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-get-random-values": {
|
||||
"version": "1.11.0",
|
||||
"resolved": "https://registry.npmjs.org/react-native-get-random-values/-/react-native-get-random-values-1.11.0.tgz",
|
||||
"integrity": "sha512-4BTbDbRmS7iPdhYLRcz3PGFIpFJBwNZg9g42iwa2P6FOv9vZj/xJc678RZXnLNZzd0qd7Q3CCF6Yd+CU2eoXKQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fast-base64-decode": "^1.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react-native": ">=0.56"
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-google-places-autocomplete": {
|
||||
"version": "2.5.7",
|
||||
"resolved": "https://registry.npmjs.org/react-native-google-places-autocomplete/-/react-native-google-places-autocomplete-2.5.7.tgz",
|
||||
"integrity": "sha512-yWEJ31gsRptStEZDele9no0J6Z+MxtNpQKKwjvGmFrWmpYDEAzpRtxy1Xq0u+ckMepJfrg/EU+OL5LgtMbnCDA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"lodash.debounce": "^4.0.8",
|
||||
"prop-types": "^15.7.2",
|
||||
"qs": "~6.9.1",
|
||||
"uuid": "^10.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react-native": ">= 0.59"
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-google-places-autocomplete/node_modules/uuid": {
|
||||
"version": "10.0.0",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
|
||||
"integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
|
||||
"funding": [
|
||||
"https://github.com/sponsors/broofa",
|
||||
"https://github.com/sponsors/ctavan"
|
||||
],
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"uuid": "dist/bin/uuid"
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-helmet-async": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/react-native-helmet-async/-/react-native-helmet-async-2.0.4.tgz",
|
||||
|
@ -19059,6 +19132,35 @@
|
|||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/zustand": {
|
||||
"version": "5.0.3",
|
||||
"resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.3.tgz",
|
||||
"integrity": "sha512-14fwWQtU3pH4dE0dOpdMiWjddcH+QzKIgk1cl8epwSE7yag43k/AD/m4L6+K7DytAOr9gGBe3/EXj9g7cdostg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12.20.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": ">=18.0.0",
|
||||
"immer": ">=9.0.6",
|
||||
"react": ">=18.0.0",
|
||||
"use-sync-external-store": ">=1.2.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@types/react": {
|
||||
"optional": true
|
||||
},
|
||||
"immer": {
|
||||
"optional": true
|
||||
},
|
||||
"react": {
|
||||
"optional": true
|
||||
},
|
||||
"use-sync-external-store": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
12
package.json
12
package.json
|
@ -21,28 +21,31 @@
|
|||
"@neondatabase/serverless": "^0.10.4",
|
||||
"@react-navigation/bottom-tabs": "^7.2.0",
|
||||
"@react-navigation/native": "^7.0.14",
|
||||
"expo": "~52.0.39",
|
||||
"expo": "52.0.42",
|
||||
"expo-blur": "~14.0.3",
|
||||
"expo-constants": "~17.0.8",
|
||||
"expo-font": "~13.0.4",
|
||||
"expo-haptics": "~14.0.1",
|
||||
"expo-linking": "~7.0.5",
|
||||
"expo-local-authentication": "^15.0.2",
|
||||
"expo-location": "^18.0.10",
|
||||
"expo-router": "~4.0.19",
|
||||
"expo-secure-store": "^14.0.1",
|
||||
"expo-splash-screen": "~0.29.22",
|
||||
"expo-status-bar": "~2.0.1",
|
||||
"expo-symbols": "~0.2.2",
|
||||
"expo-system-ui": "~4.0.8",
|
||||
"expo-system-ui": "4.0.9",
|
||||
"expo-web-browser": "~14.0.2",
|
||||
"maps": "^0.3.3",
|
||||
"nativewind": "^4.1.23",
|
||||
"pg": "^8.14.1",
|
||||
"react": "18.3.1",
|
||||
"react-dom": "18.3.1",
|
||||
"react-native": "^0.76.7",
|
||||
"react-native": "0.76.8",
|
||||
"react-native-animatable": "^1.4.0",
|
||||
"react-native-gesture-handler": "~2.20.2",
|
||||
"react-native-get-random-values": "^1.11.0",
|
||||
"react-native-google-places-autocomplete": "^2.5.7",
|
||||
"react-native-maps-directions": "^1.9.0",
|
||||
"react-native-modal": "^14.0.0-rc.1",
|
||||
"react-native-reanimated": "3.16.2",
|
||||
|
@ -52,7 +55,8 @@
|
|||
"react-native-web": "~0.19.13",
|
||||
"react-native-webview": "13.12.5",
|
||||
"tailwindcss": "^3.4.17",
|
||||
"twrnc": "^4.6.1"
|
||||
"twrnc": "^4.6.1",
|
||||
"zustand": "^5.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
import { DriverStore, LocationStore, MarkerData } from "@/types/type";
|
||||
import { create } from "zustand";
|
||||
export const useLocationStore = create<LocationStore>((set) => ({
|
||||
userAddress: null,
|
||||
userLongitude: null,
|
||||
userLatitude: null,
|
||||
destinationLatitude: null,
|
||||
destinationLongitude: null,
|
||||
destinationAddress: null,
|
||||
setUserLocation: ({ latitude, longitude, address }: { latitude: number, longitude: number, address: string }) => {
|
||||
set(() => ({
|
||||
userLatitude: latitude,
|
||||
userLongitude: longitude,
|
||||
userAddress: address,
|
||||
}));
|
||||
},
|
||||
setDestinationLocation: ({ latitude, longitude, address }: { latitude: number, longitude: number, address: string }) => {
|
||||
set(() => ({
|
||||
destinationLatitude: latitude,
|
||||
destinationLongitude: longitude,
|
||||
destinationAddress: address,
|
||||
}));
|
||||
},
|
||||
}));
|
||||
export const useDriverStore = create<DriverStore>((set)=>({
|
||||
drivers:[] as MarkerData[],
|
||||
selectedDriver:null,
|
||||
setSelectedDriver:(driverId:number)=>set(()=>({selectedDriver:driverId})),
|
||||
setDrivers:(drivers:MarkerData[])=> set(()=>({drivers:drivers})),
|
||||
clearSelectedDriver:()=>set(()=>({selectedDriver:null})),
|
||||
}));
|
Loading…
Reference in New Issue