BookRide
parent
fd24e2e569
commit
742024ab35
|
@ -0,0 +1,95 @@
|
||||||
|
import {useUser} from "@clerk/clerk-expo";
|
||||||
|
import {Image, Text, View} from "react-native";
|
||||||
|
import tw from "twrnc";
|
||||||
|
import RideLayout from "@/components/RideLayout";
|
||||||
|
import {icons} from "@/constants";
|
||||||
|
import {formatTime} from "@/lib/utils";
|
||||||
|
import {useDriverStore, useLocationStore} from "@/store";
|
||||||
|
|
||||||
|
const BookRide = () => {
|
||||||
|
const {user} = useUser();
|
||||||
|
const {userAddress, destinationAddress} = useLocationStore();
|
||||||
|
const {drivers, selectedDriver} = useDriverStore();
|
||||||
|
console.log(drivers);
|
||||||
|
console.log(selectedDriver);
|
||||||
|
const driverDetails = drivers?.filter(
|
||||||
|
(driver) => +driver.id === selectedDriver,
|
||||||
|
)[0];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<RideLayout title="Book Ride">
|
||||||
|
<>
|
||||||
|
<Text style={tw`text-xl font-JakartaSemiBold mb-3`}>
|
||||||
|
Ride Information
|
||||||
|
</Text>
|
||||||
|
|
||||||
|
<View style={tw`flex flex-col w-full items-center justify-center mt-10`}>
|
||||||
|
<Image
|
||||||
|
source={{uri: driverDetails?.profile_image_url}}
|
||||||
|
style={tw`w-28 h-28 rounded-full`}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<View style={tw`flex flex-row items-center justify-center mt-5 space-x-2`}>
|
||||||
|
<Text style={tw`text-lg font-JakartaSemiBold`}>
|
||||||
|
{driverDetails?.title}
|
||||||
|
</Text>
|
||||||
|
|
||||||
|
<View style={tw`flex flex-row items-center space-x-0.5`}>
|
||||||
|
<Image
|
||||||
|
source={icons.star}
|
||||||
|
style={tw`w-5 h-5`}
|
||||||
|
resizeMode="contain"
|
||||||
|
/>
|
||||||
|
<Text style={tw`text-lg font-JakartaRegular`}>
|
||||||
|
{driverDetails?.rating}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<View
|
||||||
|
style={tw`flex flex-col w-full items-start justify-center py-3 px-5 rounded-3xl bg-general-600 mt-5`}>
|
||||||
|
<View style={tw`flex flex-row items-center justify-between w-full border-b border-white py-3`}>
|
||||||
|
<Text style={tw`text-lg font-JakartaRegular`}>Ride Price</Text>
|
||||||
|
<Text style={tw`text-lg font-JakartaRegular text-[#0CC25F]`}>
|
||||||
|
${driverDetails?.price}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<View style={tw`flex flex-row items-center justify-between w-full border-b border-white py-3`}>
|
||||||
|
<Text style={tw`text-lg font-JakartaRegular`}>Pickup Time</Text>
|
||||||
|
<Text style={tw`text-lg font-JakartaRegular`}>
|
||||||
|
{formatTime(driverDetails?.time || 5 ! )}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<View style={tw`flex flex-row items-center justify-between w-full py-3`}>
|
||||||
|
<Text style={tw`text-lg font-JakartaRegular`}>Car Seats</Text>
|
||||||
|
<Text style={tw`text-lg font-JakartaRegular`}>
|
||||||
|
{driverDetails?.car_seats}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<View style={tw`flex flex-col w-full items-start justify-center mt-5`}>
|
||||||
|
<View
|
||||||
|
style={tw`flex flex-row items-center justify-start mt-3 border-t border-b border-general-700 w-full py-3`}>
|
||||||
|
<Image source={icons.to} style={tw`w-6 h-6`}/>
|
||||||
|
<Text style={tw`text-lg font-JakartaRegular ml-2`}>
|
||||||
|
{userAddress}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<View style={tw`flex flex-row items-center justify-start border-b border-general-700 w-full py-3`}>
|
||||||
|
<Image source={icons.point} style={tw`w-6 h-6`}/>
|
||||||
|
<Text style={tw`text-lg font-JakartaRegular ml-2`}>
|
||||||
|
{destinationAddress}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
</>
|
||||||
|
</RideLayout>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default BookRide;
|
|
@ -0,0 +1,23 @@
|
||||||
|
import Ridelayout from "@/components/RideLayout";
|
||||||
|
import { FlatList, Text, View } from "react-native";
|
||||||
|
import DriverCard from "@/components/DriverCard";
|
||||||
|
import CustomButton from "@/components/CustomButton";
|
||||||
|
import tw from "twrnc";
|
||||||
|
import { router } from "expo-router";
|
||||||
|
import { useDriverStore } from "@/store";
|
||||||
|
const ConfirmRide =() => {
|
||||||
|
const {drivers,selectedDriver,setSelectedDriver} = useDriverStore();
|
||||||
|
return(
|
||||||
|
<Ridelayout title="Choose a Driver" snapPoints={["65%","85%"]} >
|
||||||
|
<FlatList data={drivers} renderItem={({item})=>
|
||||||
|
<DriverCard item={item} selected={selectedDriver!} setSelected={()=>setSelectedDriver(Number(item.id)!)} /> }
|
||||||
|
ListFooterComponent={()=>(
|
||||||
|
<View style={tw`mx-5 mt-10`} >
|
||||||
|
<CustomButton title="Select Ride" onPress={() => router.push("/(root)/book-ride")} />
|
||||||
|
</View>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</Ridelayout>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
export default ConfirmRide;
|
|
@ -1,12 +1,24 @@
|
||||||
import Ridelayout from "@/components/RideLayout";
|
import Ridelayout from "@/components/RideLayout";
|
||||||
|
import { icons } from "@/constants";
|
||||||
import { useLocationStore } from "@/store";
|
import { useLocationStore } from "@/store";
|
||||||
import { Text, View } from "react-native";
|
import { Text, View } from "react-native";
|
||||||
import tw from "twrnc";
|
import tw from "twrnc";
|
||||||
const FindRide=()=>{
|
import GoogleTextInput from "@/components/GoogleTextInput";
|
||||||
|
import CustomButton from "@/components/CustomButton";
|
||||||
|
import { router } from "expo-router";
|
||||||
|
const FindRide=() => {
|
||||||
const {userAddress,destinationAddress,setDestinationLocation,setUserLocation,} = useLocationStore();
|
const {userAddress,destinationAddress,setDestinationLocation,setUserLocation,} = useLocationStore();
|
||||||
return(
|
return(
|
||||||
<Ridelayout>
|
<Ridelayout title="Ride" snapPoints={["85%"]} >
|
||||||
<Text style={tw`text-2xl`}>Find Ride</Text>
|
<View style={tw`my-3`} >
|
||||||
|
<Text style={tw`text-lg font-JakartaSemiBold mb-3`} >From</Text>
|
||||||
|
<GoogleTextInput icon={icons.target} initialLocation={userAddress!} containerStyle="bg-neutral-100" textInputBackgroundColor="f5f5f5" handlePress={(location)=>setUserLocation(location)} />
|
||||||
|
</View>
|
||||||
|
<View style={tw`my-3`} >
|
||||||
|
<Text style={tw`text-lg font-JakartaSemiBold mb-3`} >To</Text>
|
||||||
|
<GoogleTextInput icon={icons.map} initialLocation={destinationAddress!} containerStyle="bg-neutral-100" textInputBackgroundColor="transparent" handlePress={(location)=>setDestinationLocation(location)} />
|
||||||
|
</View>
|
||||||
|
<CustomButton title="Find now" onPress={()=> router.push("/(root)/confirm-ride")} style={tw`mt-5`} />
|
||||||
</Ridelayout>
|
</Ridelayout>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
import React from "react";
|
||||||
|
import {Image, Text, TouchableOpacity, View} from "react-native";
|
||||||
|
import tw from "twrnc";
|
||||||
|
import {icons} from "@/constants";
|
||||||
|
import {formatTime} from "@/lib/utils";
|
||||||
|
import {DriverCardProps} from "@/types/type";
|
||||||
|
|
||||||
|
const DriverCard = ({item, selected, setSelected}: DriverCardProps) => {
|
||||||
|
return (
|
||||||
|
<TouchableOpacity
|
||||||
|
onPress={setSelected}
|
||||||
|
style={tw`${
|
||||||
|
selected === item.id ? "bg-general-600" : "bg-white"
|
||||||
|
} flex flex-row items-center justify-between py-5 px-3 rounded-xl`}
|
||||||
|
>
|
||||||
|
<Image
|
||||||
|
source={{uri: item.profile_image_url}}
|
||||||
|
style={tw`w-14 h-14 rounded-full`}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<View style={tw`flex-1 flex flex-col items-start justify-center mx-3`}>
|
||||||
|
<View style={tw`flex flex-row items-center justify-start mb-1`}>
|
||||||
|
<Text style={tw`text-lg font-JakartaRegular`}>{item.title}</Text>
|
||||||
|
|
||||||
|
<View style={tw`flex flex-row items-center space-x-1 ml-2`}>
|
||||||
|
<Image source={icons.star} style={tw`w-3.5 h-3.5`}/>
|
||||||
|
<Text style={tw`text-sm font-JakartaRegular`}>4</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<View style={tw`flex flex-row items-center justify-start`}>
|
||||||
|
<View style={tw`flex flex-row items-center`}>
|
||||||
|
<Image source={icons.dollar} style={tw`w-4 h-4`}/>
|
||||||
|
<Text style={tw`text-sm font-JakartaRegular ml-1`}>
|
||||||
|
${item.price}
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<Text style={tw`text-sm font-JakartaRegular text-general-800 mx-1`}>
|
||||||
|
|
|
||||||
|
</Text>
|
||||||
|
|
||||||
|
<Text style={tw`text-sm font-JakartaRegular text-general-800`}>
|
||||||
|
{formatTime(item.time!)}
|
||||||
|
</Text>
|
||||||
|
|
||||||
|
<Text style={tw`text-sm font-JakartaRegular text-general-800 mx-1`}>
|
||||||
|
|
|
||||||
|
</Text>
|
||||||
|
|
||||||
|
<Text style={tw`text-sm font-JakartaRegular text-general-800`}>
|
||||||
|
{item.car_seats} seats
|
||||||
|
</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<Image
|
||||||
|
source={{uri: item.car_image_url}}
|
||||||
|
style={tw`h-14 w-14`}
|
||||||
|
resizeMode="contain"
|
||||||
|
/>
|
||||||
|
</TouchableOpacity>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default DriverCard;
|
|
@ -52,6 +52,8 @@ const Map = () => {
|
||||||
userLongitude, userLatitude, destinationLatitude, destinationLongitude,
|
userLongitude, userLatitude, destinationLatitude, destinationLongitude,
|
||||||
});
|
});
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
// TODO:Remove
|
||||||
|
setDrivers(drivers);
|
||||||
if (Array.isArray(drivers)) {
|
if (Array.isArray(drivers)) {
|
||||||
if (!userLatitude || !userLongitude) return;
|
if (!userLatitude || !userLongitude) return;
|
||||||
const newMarkers = generateMarkersFromData({ data : drivers, userLatitude, userLongitude, });
|
const newMarkers = generateMarkersFromData({ data : drivers, userLatitude, userLongitude, });
|
||||||
|
|
|
@ -1,11 +1,32 @@
|
||||||
import { Text, View } from "react-native";
|
import { icons } from "@/constants";
|
||||||
|
import { router } from "expo-router";
|
||||||
const Ridelayout = ({children}:{children:React.ReactNode}) => {
|
import { Image, Text, TouchableOpacity, View } from "react-native";
|
||||||
|
import {GestureHandlerRootView} from "react-native-gesture-handler";
|
||||||
|
import tw from "twrnc";
|
||||||
|
import Map from "@/components/Map";
|
||||||
|
import { useRef } from "react";
|
||||||
|
import BottomSheet, { BottomSheetView } from "@gorhom/bottom-sheet";
|
||||||
|
const Ridelayout = ({title,children,snapPoints}:{snapPoints?:string[], title:string,children:React.ReactNode}) => {
|
||||||
|
const bottomSheetRef = useRef<BottomSheet>(null)
|
||||||
return(
|
return(
|
||||||
<View>
|
<GestureHandlerRootView>
|
||||||
|
<View style={tw`flex-1 bg-white`} >
|
||||||
{children}
|
<View style={tw`flex flex-col h-full bg-blue-500`} >
|
||||||
|
<View style={tw`flex flex-row absolute z-10 top-16 items-center justify-start px-5`} >
|
||||||
|
<TouchableOpacity onPress={() => router.back()}>
|
||||||
|
<View style={tw`w-10 h-10 bg-white rounded-full items-center justify-center`} >
|
||||||
|
<Image source={icons.backArrow} resizeMode="contain" style={tw`w-6 h-6`} />
|
||||||
|
</View>
|
||||||
|
</TouchableOpacity>
|
||||||
|
<Text style={tw`text-xl font-JakartaSemiBold ml-5` }> {title ||"Go Back"}</Text>
|
||||||
|
</View>
|
||||||
|
<Map />
|
||||||
|
</View>
|
||||||
|
<BottomSheet keyboardBehavior="extend" ref={bottomSheetRef} snapPoints={ snapPoints || ["40%","85%"]} index={0} >
|
||||||
|
<BottomSheetView style={{flex:1,padding:20}} >{children}</BottomSheetView>
|
||||||
|
</BottomSheet>
|
||||||
</View>
|
</View>
|
||||||
|
</GestureHandlerRootView>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
"@clerk/clerk-expo": "^2.9.0",
|
"@clerk/clerk-expo": "^2.9.0",
|
||||||
"@expo/metro-runtime": "~4.0.1",
|
"@expo/metro-runtime": "~4.0.1",
|
||||||
"@expo/vector-icons": "^14.0.2",
|
"@expo/vector-icons": "^14.0.2",
|
||||||
|
"@gorhom/bottom-sheet": "^5.1.2",
|
||||||
"@neondatabase/serverless": "^0.10.4",
|
"@neondatabase/serverless": "^0.10.4",
|
||||||
"@react-navigation/bottom-tabs": "^7.2.0",
|
"@react-navigation/bottom-tabs": "^7.2.0",
|
||||||
"@react-navigation/native": "^7.0.14",
|
"@react-navigation/native": "^7.0.14",
|
||||||
|
@ -22,7 +23,7 @@
|
||||||
"expo-linking": "~7.0.5",
|
"expo-linking": "~7.0.5",
|
||||||
"expo-local-authentication": "^15.0.2",
|
"expo-local-authentication": "^15.0.2",
|
||||||
"expo-location": "^18.0.10",
|
"expo-location": "^18.0.10",
|
||||||
"expo-router": "~4.0.19",
|
"expo-router": "~4.0.20",
|
||||||
"expo-secure-store": "^14.0.1",
|
"expo-secure-store": "^14.0.1",
|
||||||
"expo-splash-screen": "~0.29.22",
|
"expo-splash-screen": "~0.29.22",
|
||||||
"expo-status-bar": "~2.0.1",
|
"expo-status-bar": "~2.0.1",
|
||||||
|
@ -34,7 +35,7 @@
|
||||||
"pg": "^8.14.1",
|
"pg": "^8.14.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
"react-native": "0.76.8",
|
"react-native": "^0.76.9",
|
||||||
"react-native-animatable": "^1.4.0",
|
"react-native-animatable": "^1.4.0",
|
||||||
"react-native-gesture-handler": "~2.20.2",
|
"react-native-gesture-handler": "~2.20.2",
|
||||||
"react-native-get-random-values": "^1.11.0",
|
"react-native-get-random-values": "^1.11.0",
|
||||||
|
@ -3494,6 +3495,45 @@
|
||||||
"integrity": "sha512-SwPWfeRa5veb1hOIBMdzI+73te5puUBHmqqaF1Bu7FjvxlYSz/kJcZKSa9Cg60zL0uRNeJL2SbRxV6Jp6Q1nFQ==",
|
"integrity": "sha512-SwPWfeRa5veb1hOIBMdzI+73te5puUBHmqqaF1Bu7FjvxlYSz/kJcZKSa9Cg60zL0uRNeJL2SbRxV6Jp6Q1nFQ==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/@gorhom/bottom-sheet": {
|
||||||
|
"version": "5.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@gorhom/bottom-sheet/-/bottom-sheet-5.1.2.tgz",
|
||||||
|
"integrity": "sha512-5np8oL2krqAsVKLRE4YmtkZkyZeFiitoki72bEpVhZb8SRTNuAEeSbP3noq5srKpcRsboCr7uI+xmMyrWUd9kw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@gorhom/portal": "1.0.14",
|
||||||
|
"invariant": "^2.2.4"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/react": "*",
|
||||||
|
"@types/react-native": "*",
|
||||||
|
"react": "*",
|
||||||
|
"react-native": "*",
|
||||||
|
"react-native-gesture-handler": ">=2.16.1",
|
||||||
|
"react-native-reanimated": ">=3.16.0"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/react": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"@types/react-native": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@gorhom/portal": {
|
||||||
|
"version": "1.0.14",
|
||||||
|
"resolved": "https://registry.npmjs.org/@gorhom/portal/-/portal-1.0.14.tgz",
|
||||||
|
"integrity": "sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"nanoid": "^3.3.1"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": "*",
|
||||||
|
"react-native": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@humanwhocodes/config-array": {
|
"node_modules/@humanwhocodes/config-array": {
|
||||||
"version": "0.13.0",
|
"version": "0.13.0",
|
||||||
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
|
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
|
||||||
|
@ -4230,9 +4270,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@react-native/assets-registry": {
|
"node_modules/@react-native/assets-registry": {
|
||||||
"version": "0.76.8",
|
"version": "0.76.9",
|
||||||
"resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.76.8.tgz",
|
"resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.76.9.tgz",
|
||||||
"integrity": "sha512-vQQi3kabQpj21Iohy2ou3/laCRE5hlW4r122ZivqCIN/UMwr5vT2/fTgPOBQoJ5X3YhZBe58BmifIstZutm0Ew==",
|
"integrity": "sha512-pN0Ws5xsjWOZ8P37efh0jqHHQmq+oNGKT4AyAoKRpxBDDDmlAmpaYjer9Qz7PpDKF+IUyRjF/+rBsM50a8JcUg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
|
@ -4353,13 +4393,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@react-native/community-cli-plugin": {
|
"node_modules/@react-native/community-cli-plugin": {
|
||||||
"version": "0.76.8",
|
"version": "0.76.9",
|
||||||
"resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.76.8.tgz",
|
"resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.76.9.tgz",
|
||||||
"integrity": "sha512-3rs6YehAVEootGpzchmj1ln2BCSTnIDTKqAYykUggEwpplg+CNTiBrvRrnjmlLXk3nOlIE8KOw4zRCd3PpI+bg==",
|
"integrity": "sha512-08jx8ixCjjd4jNQwNpP8yqrjrDctN2qvPPlf6ebz1OJQk8e1sbUl3wVn1zhhMvWrYcaraDnatPb5uCPq+dn3NQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@react-native/dev-middleware": "0.76.8",
|
"@react-native/dev-middleware": "0.76.9",
|
||||||
"@react-native/metro-babel-transformer": "0.76.8",
|
"@react-native/metro-babel-transformer": "0.76.9",
|
||||||
"chalk": "^4.0.0",
|
"chalk": "^4.0.0",
|
||||||
"execa": "^5.1.1",
|
"execa": "^5.1.1",
|
||||||
"invariant": "^2.2.4",
|
"invariant": "^2.2.4",
|
||||||
|
@ -4382,6 +4422,47 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": {
|
||||||
|
"version": "0.76.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.76.9.tgz",
|
||||||
|
"integrity": "sha512-0Ru72Bm066xmxFuOXhhvrryxvb57uI79yDSFf+hxRpktkC98NMuRenlJhslMrbJ6WjCu1vOe/9UjWNYyxXTRTA==",
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": {
|
||||||
|
"version": "0.76.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.76.9.tgz",
|
||||||
|
"integrity": "sha512-xkd3C3dRcmZLjFTEAOvC14q3apMLouIvJViCZY/p1EfCMrNND31dgE1dYrLTiI045WAWMt5bD15i6f7dE2/QWA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@isaacs/ttlcache": "^1.4.1",
|
||||||
|
"@react-native/debugger-frontend": "0.76.9",
|
||||||
|
"chrome-launcher": "^0.15.2",
|
||||||
|
"chromium-edge-launcher": "^0.2.0",
|
||||||
|
"connect": "^3.6.5",
|
||||||
|
"debug": "^2.2.0",
|
||||||
|
"invariant": "^2.2.4",
|
||||||
|
"nullthrows": "^1.1.1",
|
||||||
|
"open": "^7.0.3",
|
||||||
|
"selfsigned": "^2.4.1",
|
||||||
|
"serve-static": "^1.13.1",
|
||||||
|
"ws": "^6.2.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@react-native/community-cli-plugin/node_modules/debug": {
|
||||||
|
"version": "2.6.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
|
||||||
|
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"ms": "2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@react-native/community-cli-plugin/node_modules/execa": {
|
"node_modules/@react-native/community-cli-plugin/node_modules/execa": {
|
||||||
"version": "5.1.1",
|
"version": "5.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
|
||||||
|
@ -4438,6 +4519,12 @@
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@react-native/community-cli-plugin/node_modules/ms": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/@react-native/community-cli-plugin/node_modules/npm-run-path": {
|
"node_modules/@react-native/community-cli-plugin/node_modules/npm-run-path": {
|
||||||
"version": "4.0.1",
|
"version": "4.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
|
||||||
|
@ -4483,6 +4570,15 @@
|
||||||
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
|
"node_modules/@react-native/community-cli-plugin/node_modules/ws": {
|
||||||
|
"version": "6.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz",
|
||||||
|
"integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"async-limiter": "~1.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@react-native/debugger-frontend": {
|
"node_modules/@react-native/debugger-frontend": {
|
||||||
"version": "0.76.8",
|
"version": "0.76.8",
|
||||||
"resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.76.8.tgz",
|
"resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.76.8.tgz",
|
||||||
|
@ -4540,31 +4636,31 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@react-native/gradle-plugin": {
|
"node_modules/@react-native/gradle-plugin": {
|
||||||
"version": "0.76.8",
|
"version": "0.76.9",
|
||||||
"resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.76.8.tgz",
|
"resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.76.9.tgz",
|
||||||
"integrity": "sha512-rgocQRydHS8IkcyUs1VFhz+Q0OjL3QYI5/A7pMLRz6nEW8GAmoFnXqwujtPHivVrXbuCLIzGBKnsl2hsZsOopg==",
|
"integrity": "sha512-uGzp3dL4GfNDz+jOb8Nik1Vrfq1LHm0zESizrGhHACFiFlUSflVAnWuUAjlZlz5XfLhzGVvunG4Vdrpw8CD2ng==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@react-native/js-polyfills": {
|
"node_modules/@react-native/js-polyfills": {
|
||||||
"version": "0.76.8",
|
"version": "0.76.9",
|
||||||
"resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.76.8.tgz",
|
"resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.76.9.tgz",
|
||||||
"integrity": "sha512-bZzPjpDQaWU+F//N/WZJfaglYgYga4oXl9rzXyKOJP7KcebkOKJbAsG1mo7RCOVIbHYQCKUvQXIpV3IQOWNOEg==",
|
"integrity": "sha512-s6z6m8cK4SMjIX1hm8LT187aQ6//ujLrjzDBogqDCYXRbfjbAYovw5as/v2a2rhUIyJbS3UjokZm3W0H+Oh/RQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18"
|
"node": ">=18"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@react-native/metro-babel-transformer": {
|
"node_modules/@react-native/metro-babel-transformer": {
|
||||||
"version": "0.76.8",
|
"version": "0.76.9",
|
||||||
"resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz",
|
"resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.76.9.tgz",
|
||||||
"integrity": "sha512-tEjNJo3Wwiig1OmI7H3cLOrAkAxT9lBqs1k+oanRm64o0Cay2ACH0PdXrk45sxENU3iTfxXeQ7mmY1u2XVYDpw==",
|
"integrity": "sha512-HGq11347UHNiO/NvVbAO35hQCmH8YZRs7in7nVq7SL99pnpZK4WXwLdAXmSuwz5uYqOuwnKYDlpadz8fkE94Mg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/core": "^7.25.2",
|
"@babel/core": "^7.25.2",
|
||||||
"@react-native/babel-preset": "0.76.8",
|
"@react-native/babel-preset": "0.76.9",
|
||||||
"hermes-parser": "0.23.1",
|
"hermes-parser": "0.23.1",
|
||||||
"nullthrows": "^1.1.1"
|
"nullthrows": "^1.1.1"
|
||||||
},
|
},
|
||||||
|
@ -4575,6 +4671,120 @@
|
||||||
"@babel/core": "*"
|
"@babel/core": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-plugin-codegen": {
|
||||||
|
"version": "0.76.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.9.tgz",
|
||||||
|
"integrity": "sha512-vxL/vtDEIYHfWKm5oTaEmwcnNGsua/i9OjIxBDBFiJDu5i5RU3bpmDiXQm/bJxrJNPRp5lW0I0kpGihVhnMAIQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@react-native/codegen": "0.76.9"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-preset": {
|
||||||
|
"version": "0.76.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.9.tgz",
|
||||||
|
"integrity": "sha512-TbSeCplCM6WhL3hR2MjC/E1a9cRnMLz7i767T7mP90oWkklEjyPxWl+0GGoVGnJ8FC/jLUupg/HvREKjjif6lw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/core": "^7.25.2",
|
||||||
|
"@babel/plugin-proposal-export-default-from": "^7.24.7",
|
||||||
|
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
||||||
|
"@babel/plugin-syntax-export-default-from": "^7.24.7",
|
||||||
|
"@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
|
||||||
|
"@babel/plugin-syntax-optional-chaining": "^7.8.3",
|
||||||
|
"@babel/plugin-transform-arrow-functions": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-async-generator-functions": "^7.25.4",
|
||||||
|
"@babel/plugin-transform-async-to-generator": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-block-scoping": "^7.25.0",
|
||||||
|
"@babel/plugin-transform-class-properties": "^7.25.4",
|
||||||
|
"@babel/plugin-transform-classes": "^7.25.4",
|
||||||
|
"@babel/plugin-transform-computed-properties": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-destructuring": "^7.24.8",
|
||||||
|
"@babel/plugin-transform-flow-strip-types": "^7.25.2",
|
||||||
|
"@babel/plugin-transform-for-of": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-function-name": "^7.25.1",
|
||||||
|
"@babel/plugin-transform-literals": "^7.25.2",
|
||||||
|
"@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-modules-commonjs": "^7.24.8",
|
||||||
|
"@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-numeric-separator": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-object-rest-spread": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-optional-catch-binding": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-optional-chaining": "^7.24.8",
|
||||||
|
"@babel/plugin-transform-parameters": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-private-methods": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-private-property-in-object": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-react-display-name": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-react-jsx": "^7.25.2",
|
||||||
|
"@babel/plugin-transform-react-jsx-self": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-react-jsx-source": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-regenerator": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-runtime": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-shorthand-properties": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-spread": "^7.24.7",
|
||||||
|
"@babel/plugin-transform-sticky-regex": "^7.24.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.9",
|
||||||
|
"babel-plugin-syntax-hermes-parser": "^0.25.1",
|
||||||
|
"babel-plugin-transform-flow-enums": "^0.0.2",
|
||||||
|
"react-refresh": "^0.14.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@babel/core": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/codegen": {
|
||||||
|
"version": "0.76.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.9.tgz",
|
||||||
|
"integrity": "sha512-AzlCHMTKrAVC2709V4ZGtBXmGVtWTpWm3Ruv5vXcd3/anH4mGucfJ4rjbWKdaYQJMpXa3ytGomQrsIsT/s8kgA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/parser": "^7.25.3",
|
||||||
|
"glob": "^7.1.1",
|
||||||
|
"hermes-parser": "0.23.1",
|
||||||
|
"invariant": "^2.2.4",
|
||||||
|
"jscodeshift": "^0.14.0",
|
||||||
|
"mkdirp": "^0.5.1",
|
||||||
|
"nullthrows": "^1.1.1",
|
||||||
|
"yargs": "^17.6.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@babel/preset-env": "^7.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@react-native/metro-babel-transformer/node_modules/glob": {
|
||||||
|
"version": "7.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
|
||||||
|
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
|
||||||
|
"deprecated": "Glob versions prior to v9 are no longer supported",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"fs.realpath": "^1.0.0",
|
||||||
|
"inflight": "^1.0.4",
|
||||||
|
"inherits": "2",
|
||||||
|
"minimatch": "^3.1.1",
|
||||||
|
"once": "^1.3.0",
|
||||||
|
"path-is-absolute": "^1.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/isaacs"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@react-native/normalize-colors": {
|
"node_modules/@react-native/normalize-colors": {
|
||||||
"version": "0.76.8",
|
"version": "0.76.8",
|
||||||
"resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.76.8.tgz",
|
"resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.76.8.tgz",
|
||||||
|
@ -4582,9 +4792,9 @@
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@react-native/virtualized-lists": {
|
"node_modules/@react-native/virtualized-lists": {
|
||||||
"version": "0.76.8",
|
"version": "0.76.9",
|
||||||
"resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.76.8.tgz",
|
"resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.76.9.tgz",
|
||||||
"integrity": "sha512-OsB+LoEFH80wL+qhQrNpJR3O3oNDmyZf0go7/MQiayZbT8IkD8aPdHmK4QIVoIwAbFWXw7RkcFdubhSWwi0wAQ==",
|
"integrity": "sha512-2neUfZKuqMK2LzfS8NyOWOyWUJOWgDym5fUph6fN9qF+LNPjAvnc4Zr9+o+59qjNu/yXwQgVMWNU4+8WJuPVWw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"invariant": "^2.2.4",
|
"invariant": "^2.2.4",
|
||||||
|
@ -9261,9 +9471,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/expo-router": {
|
"node_modules/expo-router": {
|
||||||
"version": "4.0.19",
|
"version": "4.0.20",
|
||||||
"resolved": "https://registry.npmjs.org/expo-router/-/expo-router-4.0.19.tgz",
|
"resolved": "https://registry.npmjs.org/expo-router/-/expo-router-4.0.20.tgz",
|
||||||
"integrity": "sha512-oZ/vAx0x126Q6rccpWkMhKa/17YHYfeXQP8KwqaIadQsTR28cLgAY2gcAtFQyc8XTjgJmsRnfQNyCnyNN04DWg==",
|
"integrity": "sha512-1+CtvohptOsG/Piejk8uQ9cmM+8ojadFkdeThCn4klZjc0dtFSSHenb8D/0RKuBdp4taBkNaqgEKwYvhVBJyEg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@expo/metro-runtime": "4.0.1",
|
"@expo/metro-runtime": "4.0.1",
|
||||||
|
@ -10466,9 +10676,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/image-size": {
|
"node_modules/image-size": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz",
|
||||||
"integrity": "sha512-4S8fwbO6w3GeCVN6OPtA9I5IGKkcDMPcKndtUlpJuCwu7JLjtj7JZpwqLuyY2nrmQT3AWsCJLSKPsc2mPBSl3w==",
|
"integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"queue": "6.0.2"
|
"queue": "6.0.2"
|
||||||
|
@ -15374,19 +15584,19 @@
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/react-native": {
|
"node_modules/react-native": {
|
||||||
"version": "0.76.8",
|
"version": "0.76.9",
|
||||||
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.76.8.tgz",
|
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.76.9.tgz",
|
||||||
"integrity": "sha512-sVoAd/cDBdVoLjNz8Lp5DAg4l6Iag0l5AiChN2J/NGhM//PW6+MIW50TI8G1iZz4rquAgWtcCHwEp5P5FvMyDA==",
|
"integrity": "sha512-+LRwecWmTDco7OweGsrECIqJu0iyrREd6CTCgC/uLLYipiHvk+MH9nd6drFtCw/6Blz6eoKTcH9YTTJusNtrWg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jest/create-cache-key-function": "^29.6.3",
|
"@jest/create-cache-key-function": "^29.6.3",
|
||||||
"@react-native/assets-registry": "0.76.8",
|
"@react-native/assets-registry": "0.76.9",
|
||||||
"@react-native/codegen": "0.76.8",
|
"@react-native/codegen": "0.76.9",
|
||||||
"@react-native/community-cli-plugin": "0.76.8",
|
"@react-native/community-cli-plugin": "0.76.9",
|
||||||
"@react-native/gradle-plugin": "0.76.8",
|
"@react-native/gradle-plugin": "0.76.9",
|
||||||
"@react-native/js-polyfills": "0.76.8",
|
"@react-native/js-polyfills": "0.76.9",
|
||||||
"@react-native/normalize-colors": "0.76.8",
|
"@react-native/normalize-colors": "0.76.9",
|
||||||
"@react-native/virtualized-lists": "0.76.8",
|
"@react-native/virtualized-lists": "0.76.9",
|
||||||
"abort-controller": "^3.0.0",
|
"abort-controller": "^3.0.0",
|
||||||
"anser": "^1.4.9",
|
"anser": "^1.4.9",
|
||||||
"ansi-regex": "^5.0.0",
|
"ansi-regex": "^5.0.0",
|
||||||
|
@ -15732,6 +15942,34 @@
|
||||||
"react-native": "*"
|
"react-native": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/react-native/node_modules/@react-native/codegen": {
|
||||||
|
"version": "0.76.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.9.tgz",
|
||||||
|
"integrity": "sha512-AzlCHMTKrAVC2709V4ZGtBXmGVtWTpWm3Ruv5vXcd3/anH4mGucfJ4rjbWKdaYQJMpXa3ytGomQrsIsT/s8kgA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@babel/parser": "^7.25.3",
|
||||||
|
"glob": "^7.1.1",
|
||||||
|
"hermes-parser": "0.23.1",
|
||||||
|
"invariant": "^2.2.4",
|
||||||
|
"jscodeshift": "^0.14.0",
|
||||||
|
"mkdirp": "^0.5.1",
|
||||||
|
"nullthrows": "^1.1.1",
|
||||||
|
"yargs": "^17.6.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@babel/preset-env": "^7.1.6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/react-native/node_modules/@react-native/normalize-colors": {
|
||||||
|
"version": "0.76.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.76.9.tgz",
|
||||||
|
"integrity": "sha512-TUdMG2JGk72M9d8DYbubdOlrzTYjw+YMe/xOnLU4viDgWRHsCbtRS9x0IAxRjs3amj/7zmK3Atm8jUPvdAc8qw==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/react-native/node_modules/babel-plugin-syntax-hermes-parser": {
|
"node_modules/react-native/node_modules/babel-plugin-syntax-hermes-parser": {
|
||||||
"version": "0.23.1",
|
"version": "0.23.1",
|
||||||
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.23.1.tgz",
|
"resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.23.1.tgz",
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
"@clerk/clerk-expo": "^2.9.0",
|
"@clerk/clerk-expo": "^2.9.0",
|
||||||
"@expo/metro-runtime": "~4.0.1",
|
"@expo/metro-runtime": "~4.0.1",
|
||||||
"@expo/vector-icons": "^14.0.2",
|
"@expo/vector-icons": "^14.0.2",
|
||||||
|
"@gorhom/bottom-sheet": "^5.1.2",
|
||||||
"@neondatabase/serverless": "^0.10.4",
|
"@neondatabase/serverless": "^0.10.4",
|
||||||
"@react-navigation/bottom-tabs": "^7.2.0",
|
"@react-navigation/bottom-tabs": "^7.2.0",
|
||||||
"@react-navigation/native": "^7.0.14",
|
"@react-navigation/native": "^7.0.14",
|
||||||
|
@ -29,7 +30,7 @@
|
||||||
"expo-linking": "~7.0.5",
|
"expo-linking": "~7.0.5",
|
||||||
"expo-local-authentication": "^15.0.2",
|
"expo-local-authentication": "^15.0.2",
|
||||||
"expo-location": "^18.0.10",
|
"expo-location": "^18.0.10",
|
||||||
"expo-router": "~4.0.19",
|
"expo-router": "~4.0.20",
|
||||||
"expo-secure-store": "^14.0.1",
|
"expo-secure-store": "^14.0.1",
|
||||||
"expo-splash-screen": "~0.29.22",
|
"expo-splash-screen": "~0.29.22",
|
||||||
"expo-status-bar": "~2.0.1",
|
"expo-status-bar": "~2.0.1",
|
||||||
|
@ -41,7 +42,7 @@
|
||||||
"pg": "^8.14.1",
|
"pg": "^8.14.1",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
"react-native": "0.76.8",
|
"react-native": "^0.76.9",
|
||||||
"react-native-animatable": "^1.4.0",
|
"react-native-animatable": "^1.4.0",
|
||||||
"react-native-gesture-handler": "~2.20.2",
|
"react-native-gesture-handler": "~2.20.2",
|
||||||
"react-native-get-random-values": "^1.11.0",
|
"react-native-get-random-values": "^1.11.0",
|
||||||
|
|
Loading…
Reference in New Issue