Add onboarding screen + token check
This commit is contained in:
parent
b951d0a0bc
commit
f5c59f602a
19 changed files with 433 additions and 279 deletions
10
README.md
10
README.md
|
@ -25,16 +25,6 @@ In the output, you'll find options to open the app in a
|
|||
|
||||
You can start developing by editing the files inside the **app** directory. This project uses [file-based routing](https://docs.expo.dev/router/introduction).
|
||||
|
||||
## Get a fresh project
|
||||
|
||||
When you're ready, run:
|
||||
|
||||
```bash
|
||||
npm run reset-project
|
||||
```
|
||||
|
||||
This command will move the starter code to the **app-example** directory and create a blank **app** directory where you can start developing.
|
||||
|
||||
## Learn more
|
||||
|
||||
To learn more about developing your project with Expo, look at the following resources:
|
||||
|
|
8
app.json
8
app.json
|
@ -5,7 +5,7 @@
|
|||
"version": "1.0.0",
|
||||
"orientation": "portrait",
|
||||
"icon": "./assets/images/icon.png",
|
||||
"scheme": "myapp",
|
||||
"scheme": "kliko",
|
||||
"userInterfaceStyle": "automatic",
|
||||
"splash": {
|
||||
"image": "./assets/images/splash.png",
|
||||
|
@ -40,6 +40,12 @@
|
|||
{
|
||||
"RNMapboxMapsDownloadToken": "sk.eyJ1IjoibWFhcnRlbnZyOTgiLCJhIjoiY2x6Z21wZHdoMWN0dDJrczNxaHNiendrYiJ9.IiCMsfuqMa7YGQOepVoAiA"
|
||||
}
|
||||
],
|
||||
[
|
||||
"expo-secure-store",
|
||||
{
|
||||
"faceIDPermission": "Allow $(PRODUCT_NAME) to access your Face ID biometric data."
|
||||
}
|
||||
]
|
||||
],
|
||||
"experiments": {
|
||||
|
|
128
app/(onboarding)/start.tsx
Normal file
128
app/(onboarding)/start.tsx
Normal file
|
@ -0,0 +1,128 @@
|
|||
import {Stack} from 'expo-router';
|
||||
import {StyleSheet, TextInput, TouchableOpacity} from 'react-native';
|
||||
|
||||
import {ThemedText} from '@/components/ThemedText';
|
||||
import {ThemedView} from '@/components/ThemedView';
|
||||
import {useToken} from '@/context/AppProvider';
|
||||
import {Colors} from '@/constants/Colors';
|
||||
import React from 'react';
|
||||
import {useColorScheme} from '@/hooks/useColorScheme';
|
||||
import {Message} from '@/services/message';
|
||||
import {Request} from '@/services/request';
|
||||
import { router } from 'expo-router';
|
||||
|
||||
export default function OnboardStartScreen() {
|
||||
const colorScheme = useColorScheme() ?? 'light';
|
||||
const {setToken} = useToken();
|
||||
const [name, setName] = React.useState('Maarten');
|
||||
const [zipcode, setZipcode] = React.useState('6715GA');
|
||||
const [houseNumber, setHouseNumber] = React.useState('3');
|
||||
|
||||
const start = () => {
|
||||
if (name === '' || zipcode === '' || houseNumber === '') {
|
||||
Message.error('Niet alle gegevens zijn ingevuld!');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: Get device name
|
||||
const deviceName = 'Test';
|
||||
|
||||
Request
|
||||
.post('sessions/create', {
|
||||
name: name,
|
||||
zipcode: zipcode,
|
||||
houseNumber: houseNumber,
|
||||
device: deviceName,
|
||||
})
|
||||
.then((response) => {
|
||||
if (!response.success) {
|
||||
Message.error(response.message);
|
||||
} else {
|
||||
const token = response.token;
|
||||
|
||||
setToken(token);
|
||||
router.replace("/(tabs)");
|
||||
|
||||
Message.success(response.message);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<Stack.Screen options={{title: 'Welkom'}}/>
|
||||
<ThemedView style={styles.container}>
|
||||
<ThemedView style={styles.heading}>
|
||||
<ThemedText type="title">Welkom bij </ThemedText>
|
||||
<ThemedText type="title" style={{color: Colors[colorScheme].tint}}>Kliko</ThemedText>
|
||||
</ThemedView>
|
||||
|
||||
<ThemedView style={styles.inputContainer}>
|
||||
<ThemedText>Wat is je naam?</ThemedText>
|
||||
<TextInput
|
||||
style={styles.input}
|
||||
onChangeText={setName}
|
||||
placeholder={'Je naam'}
|
||||
value={name}
|
||||
/>
|
||||
</ThemedView>
|
||||
|
||||
<ThemedView style={styles.inputContainer}>
|
||||
<ThemedText>Wat is je postcode en huisnummer?</ThemedText>
|
||||
<TextInput
|
||||
style={styles.input}
|
||||
onChangeText={setZipcode}
|
||||
placeholder={'Postcode'}
|
||||
value={zipcode}
|
||||
/>
|
||||
<TextInput
|
||||
style={styles.input}
|
||||
onChangeText={setHouseNumber}
|
||||
placeholder={'Huisnummer'}
|
||||
value={houseNumber}
|
||||
keyboardType="numeric"
|
||||
/>
|
||||
</ThemedView>
|
||||
|
||||
|
||||
<TouchableOpacity style={{...styles.button, backgroundColor: Colors[colorScheme].tint}} onPress={start}>
|
||||
<ThemedText style={{color: '#fff'}}>Start</ThemedText>
|
||||
</TouchableOpacity>
|
||||
</ThemedView>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
padding: 20,
|
||||
flex: 1,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
heading: {
|
||||
marginBottom: 30,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
inputContainer: {
|
||||
paddingTop: 20,
|
||||
},
|
||||
input: {
|
||||
width: 250,
|
||||
borderWidth: 1,
|
||||
padding: 10,
|
||||
paddingLeft: 20,
|
||||
borderRadius: 3,
|
||||
marginBottom: 10,
|
||||
},
|
||||
button: {
|
||||
borderRadius: 5,
|
||||
paddingTop: 10,
|
||||
paddingBottom: 10,
|
||||
paddingLeft: 40,
|
||||
paddingRight: 40,
|
||||
marginTop: 30,
|
||||
},
|
||||
});
|
|
@ -8,6 +8,8 @@ import { useColorScheme } from '@/hooks/useColorScheme';
|
|||
export default function TabLayout() {
|
||||
const colorScheme = useColorScheme();
|
||||
|
||||
console.log('is layout rendering?');
|
||||
|
||||
return (
|
||||
<Tabs
|
||||
screenOptions={{
|
||||
|
|
|
@ -69,7 +69,7 @@ export default function ExploreScreen() {
|
|||
const viewItem = async (item: any) => {
|
||||
await AsyncStorage.setItem('activeCategory', JSON.stringify(item));
|
||||
|
||||
router.push('/explore/category');
|
||||
router.push('/(explore)/category');
|
||||
};
|
||||
|
||||
return (
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import {StyleSheet, Platform, ScrollView, SafeAreaView, View, StatusBar, Text} from 'react-native';
|
||||
import {StyleSheet, ScrollView, SafeAreaView, View, StatusBar} from 'react-native';
|
||||
// @ts-ignore
|
||||
import CalendarPicker from 'react-native-calendar-picker';
|
||||
|
||||
|
@ -6,11 +6,19 @@ import {ThemedText} from '@/components/ThemedText';
|
|||
import {ThemedView} from '@/components/ThemedView';
|
||||
import {Colors} from '@/constants/Colors';
|
||||
import {useColorScheme} from '@/hooks/useColorScheme';
|
||||
import React from 'react';
|
||||
import React, {useEffect} from 'react';
|
||||
import Ionicons from '@expo/vector-icons/Ionicons';
|
||||
import {useToken} from '@/context/AppProvider';
|
||||
|
||||
export default function HomeScreen() {
|
||||
const colorScheme = useColorScheme() ?? 'light';
|
||||
const {token, isLoading} = useToken();
|
||||
|
||||
console.log('app token', token);
|
||||
|
||||
useEffect(() => {
|
||||
console.log('token found', token);
|
||||
}, [token]);
|
||||
|
||||
return (
|
||||
<SafeAreaView style={{flex: 1, backgroundColor: Colors[colorScheme].background,}}>
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
import { Link, Stack } from 'expo-router';
|
||||
import { StyleSheet } from 'react-native';
|
||||
|
||||
import { ThemedText } from '@/components/ThemedText';
|
||||
import { ThemedView } from '@/components/ThemedView';
|
||||
|
||||
export default function NotFoundScreen() {
|
||||
return (
|
||||
<>
|
||||
<Stack.Screen options={{ title: 'Oops!' }} />
|
||||
<ThemedView style={styles.container}>
|
||||
<ThemedText type="title">This screen doesn't exist.</ThemedText>
|
||||
<Link href="/" style={styles.link}>
|
||||
<ThemedText type="link">Go to home screen!</ThemedText>
|
||||
</Link>
|
||||
</ThemedView>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
padding: 20,
|
||||
},
|
||||
link: {
|
||||
marginTop: 15,
|
||||
paddingVertical: 15,
|
||||
},
|
||||
});
|
|
@ -1,25 +1,28 @@
|
|||
import { DarkTheme, DefaultTheme, ThemeProvider } from '@react-navigation/native';
|
||||
import { useFonts } from 'expo-font';
|
||||
import { Stack } from 'expo-router';
|
||||
import {useFonts} from 'expo-font';
|
||||
import {Slot, Stack} from 'expo-router';
|
||||
import * as SplashScreen from 'expo-splash-screen';
|
||||
import { useEffect } from 'react';
|
||||
import {useEffect} from 'react';
|
||||
import 'react-native-reanimated';
|
||||
|
||||
import { useColorScheme } from '@/hooks/useColorScheme';
|
||||
import {AppProvider} from '@/context/AppProvider';
|
||||
import {DarkTheme, DefaultTheme, ThemeProvider} from '@react-navigation/native';
|
||||
import Toast from 'react-native-toast-message';
|
||||
import {AutocompleteDropdownContextProvider} from 'react-native-autocomplete-dropdown';
|
||||
import {useColorScheme} from '@/hooks/useColorScheme';
|
||||
|
||||
// Prevent the splash screen from auto-hiding before asset loading is complete.
|
||||
SplashScreen.preventAutoHideAsync();
|
||||
// SplashScreen.preventAutoHideAsync();
|
||||
|
||||
export default function RootLayout() {
|
||||
const colorScheme = useColorScheme();
|
||||
|
||||
const [loaded] = useFonts({
|
||||
SpaceMono: require('../assets/fonts/SpaceMono-Regular.ttf'),
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
if (loaded) {
|
||||
SplashScreen.hideAsync();
|
||||
// SplashScreen.hideAsync();
|
||||
}
|
||||
}, [loaded]);
|
||||
|
||||
|
@ -28,14 +31,16 @@ export default function RootLayout() {
|
|||
}
|
||||
|
||||
return (
|
||||
<AutocompleteDropdownContextProvider>
|
||||
<ThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
|
||||
<Stack>
|
||||
<Stack.Screen name="(tabs)" options={{ headerShown: false }} />
|
||||
<Stack.Screen name="+not-found" />
|
||||
</Stack>
|
||||
</ThemeProvider>
|
||||
</AutocompleteDropdownContextProvider>
|
||||
|
||||
<AppProvider>
|
||||
<AutocompleteDropdownContextProvider>
|
||||
<ThemeProvider value={colorScheme === 'dark' ? DarkTheme : DefaultTheme}>
|
||||
<Stack>
|
||||
<Stack.Screen name="(tabs)" options={{headerShown: false}}/>
|
||||
<Stack.Screen name="(onboarding)/start" options={{headerShown: false}}/>
|
||||
</Stack>
|
||||
<Toast/>
|
||||
</ThemeProvider>
|
||||
</AutocompleteDropdownContextProvider>
|
||||
</AppProvider>
|
||||
);
|
||||
}
|
||||
|
|
31
app/index.tsx
Normal file
31
app/index.tsx
Normal file
|
@ -0,0 +1,31 @@
|
|||
import {Redirect, Stack} from 'expo-router';
|
||||
import {StyleSheet, Text, TextInput, TouchableOpacity} from 'react-native';
|
||||
|
||||
import {ThemedText} from '@/components/ThemedText';
|
||||
import {ThemedView} from '@/components/ThemedView';
|
||||
import {useToken} from '@/context/AppProvider';
|
||||
import {Colors} from '@/constants/Colors';
|
||||
import React, {useEffect} from 'react';
|
||||
import {useColorScheme} from '@/hooks/useColorScheme';
|
||||
import {Message} from '@/services/message';
|
||||
import {Request} from '@/services/request';
|
||||
import { router } from 'expo-router';
|
||||
|
||||
export default function OnboardStartScreen() {
|
||||
const {token, isLoading} = useToken();
|
||||
|
||||
// You can keep the splash screen open, or render a loading screen like we do here.
|
||||
if (isLoading) {
|
||||
return (
|
||||
<ThemedView>
|
||||
<ThemedText>Laden...</ThemedText>
|
||||
</ThemedView>
|
||||
);
|
||||
}
|
||||
|
||||
if (!token) {
|
||||
return <Redirect href="/(onboarding)/start"/>;
|
||||
}
|
||||
|
||||
return <Redirect href="/(tabs)"/>;
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
import Ionicons from '@expo/vector-icons/Ionicons';
|
||||
import { PropsWithChildren, useState } from 'react';
|
||||
import { StyleSheet, TouchableOpacity, useColorScheme } from 'react-native';
|
||||
|
||||
import { ThemedText } from '@/components/ThemedText';
|
||||
import { ThemedView } from '@/components/ThemedView';
|
||||
import { Colors } from '@/constants/Colors';
|
||||
|
||||
export function Collapsible({ children, title }: PropsWithChildren & { title: string }) {
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
const theme = useColorScheme() ?? 'light';
|
||||
|
||||
return (
|
||||
<ThemedView>
|
||||
<TouchableOpacity
|
||||
style={styles.heading}
|
||||
onPress={() => setIsOpen((value) => !value)}
|
||||
activeOpacity={0.8}>
|
||||
<Ionicons
|
||||
name={isOpen ? 'chevron-down' : 'chevron-forward-outline'}
|
||||
size={18}
|
||||
color={theme === 'light' ? Colors.light.icon : Colors.dark.icon}
|
||||
/>
|
||||
<ThemedText type="defaultSemiBold">{title}</ThemedText>
|
||||
</TouchableOpacity>
|
||||
{isOpen && <ThemedView style={styles.content}>{children}</ThemedView>}
|
||||
</ThemedView>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
heading: {
|
||||
flexDirection: 'row',
|
||||
alignItems: 'center',
|
||||
gap: 6,
|
||||
},
|
||||
content: {
|
||||
marginTop: 6,
|
||||
marginLeft: 24,
|
||||
},
|
||||
});
|
|
@ -1,24 +0,0 @@
|
|||
import { Link } from 'expo-router';
|
||||
import { openBrowserAsync } from 'expo-web-browser';
|
||||
import { type ComponentProps } from 'react';
|
||||
import { Platform } from 'react-native';
|
||||
|
||||
type Props = Omit<ComponentProps<typeof Link>, 'href'> & { href: string };
|
||||
|
||||
export function ExternalLink({ href, ...rest }: Props) {
|
||||
return (
|
||||
<Link
|
||||
target="_blank"
|
||||
{...rest}
|
||||
href={href}
|
||||
onPress={async (event) => {
|
||||
if (Platform.OS !== 'web') {
|
||||
// Prevent the default behavior of linking to the default browser on native.
|
||||
event.preventDefault();
|
||||
// Open the link in an in-app browser.
|
||||
await openBrowserAsync(href);
|
||||
}
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
|
@ -1,76 +0,0 @@
|
|||
import type { PropsWithChildren, ReactElement } from 'react';
|
||||
import { StyleSheet, useColorScheme } from 'react-native';
|
||||
import Animated, {
|
||||
interpolate,
|
||||
useAnimatedRef,
|
||||
useAnimatedStyle,
|
||||
useScrollViewOffset,
|
||||
} from 'react-native-reanimated';
|
||||
|
||||
import { ThemedView } from '@/components/ThemedView';
|
||||
|
||||
const HEADER_HEIGHT = 250;
|
||||
|
||||
type Props = PropsWithChildren<{
|
||||
headerImage: ReactElement;
|
||||
headerBackgroundColor: { dark: string; light: string };
|
||||
}>;
|
||||
|
||||
export default function ParallaxScrollView({
|
||||
children,
|
||||
headerImage,
|
||||
headerBackgroundColor,
|
||||
}: Props) {
|
||||
const colorScheme = useColorScheme() ?? 'light';
|
||||
const scrollRef = useAnimatedRef<Animated.ScrollView>();
|
||||
const scrollOffset = useScrollViewOffset(scrollRef);
|
||||
|
||||
const headerAnimatedStyle = useAnimatedStyle(() => {
|
||||
return {
|
||||
transform: [
|
||||
{
|
||||
translateY: interpolate(
|
||||
scrollOffset.value,
|
||||
[-HEADER_HEIGHT, 0, HEADER_HEIGHT],
|
||||
[-HEADER_HEIGHT / 2, 0, HEADER_HEIGHT * 0.75]
|
||||
),
|
||||
},
|
||||
{
|
||||
scale: interpolate(scrollOffset.value, [-HEADER_HEIGHT, 0, HEADER_HEIGHT], [2, 1, 1]),
|
||||
},
|
||||
],
|
||||
};
|
||||
});
|
||||
|
||||
return (
|
||||
<ThemedView style={styles.container}>
|
||||
<Animated.ScrollView ref={scrollRef} scrollEventThrottle={16}>
|
||||
<Animated.View
|
||||
style={[
|
||||
styles.header,
|
||||
{ backgroundColor: headerBackgroundColor[colorScheme] },
|
||||
headerAnimatedStyle,
|
||||
]}>
|
||||
{headerImage}
|
||||
</Animated.View>
|
||||
<ThemedView style={styles.content}>{children}</ThemedView>
|
||||
</Animated.ScrollView>
|
||||
</ThemedView>
|
||||
);
|
||||
}
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
},
|
||||
header: {
|
||||
height: 250,
|
||||
overflow: 'hidden',
|
||||
},
|
||||
content: {
|
||||
flex: 1,
|
||||
padding: 32,
|
||||
gap: 16,
|
||||
overflow: 'hidden',
|
||||
},
|
||||
});
|
|
@ -1,4 +1,4 @@
|
|||
// You can explore the built-in icon families and icons on the web at https://icons.expo.fyi/
|
||||
// You can (explore) the built-in icon families and icons on the web at https://icons.expo.fyi/
|
||||
|
||||
import Ionicons from '@expo/vector-icons/Ionicons';
|
||||
import { type IconProps } from '@expo/vector-icons/build/createIconSet';
|
||||
|
|
31
context/AppProvider.tsx
Normal file
31
context/AppProvider.tsx
Normal file
|
@ -0,0 +1,31 @@
|
|||
import {createContext, PropsWithChildren, useContext} from "react";
|
||||
import {useStorageState} from '@/context/UseStorageState';
|
||||
|
||||
type TokenType = {
|
||||
token: string | null;
|
||||
setToken: (token: string | null) => void;
|
||||
isLoading: boolean;
|
||||
}
|
||||
|
||||
const TokenContext = createContext<TokenType>({
|
||||
setToken: () => {
|
||||
},
|
||||
token: null,
|
||||
isLoading: true,
|
||||
});
|
||||
|
||||
export const useToken = () => useContext(TokenContext);
|
||||
|
||||
export function AppProvider({ children }: PropsWithChildren) {
|
||||
const [[isLoading, token], setSession] = useStorageState('appToken');
|
||||
|
||||
const tokenContext: TokenType = {
|
||||
token,
|
||||
setToken: (token) => {
|
||||
setSession(token);
|
||||
},
|
||||
isLoading,
|
||||
};
|
||||
|
||||
return <TokenContext.Provider value={tokenContext}>{children}</TokenContext.Provider>;
|
||||
}
|
67
context/UseStorageState.tsx
Normal file
67
context/UseStorageState.tsx
Normal file
|
@ -0,0 +1,67 @@
|
|||
import * as SecureStore from 'expo-secure-store';
|
||||
import * as React from 'react';
|
||||
import { Platform } from 'react-native';
|
||||
|
||||
type UseStateHook<T> = [[boolean, T | null], (value: T | null) => void];
|
||||
|
||||
function useAsyncState<T>(
|
||||
initialValue: [boolean, T | null] = [true, null],
|
||||
): UseStateHook<T> {
|
||||
return React.useReducer(
|
||||
(state: [boolean, T | null], action: T | null = null): [boolean, T | null] => [false, action],
|
||||
initialValue
|
||||
) as UseStateHook<T>;
|
||||
}
|
||||
|
||||
export async function setStorageItemAsync(key: string, value: string | null) {
|
||||
if (Platform.OS === 'web') {
|
||||
try {
|
||||
if (value === null) {
|
||||
localStorage.removeItem(key);
|
||||
} else {
|
||||
localStorage.setItem(key, value);
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Local storage is unavailable:', e);
|
||||
}
|
||||
} else {
|
||||
if (value == null) {
|
||||
await SecureStore.deleteItemAsync(key);
|
||||
} else {
|
||||
await SecureStore.setItemAsync(key, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export function useStorageState(key: string): UseStateHook<string> {
|
||||
// Public
|
||||
const [state, setState] = useAsyncState<string>();
|
||||
|
||||
// Get
|
||||
React.useEffect(() => {
|
||||
if (Platform.OS === 'web') {
|
||||
try {
|
||||
if (typeof localStorage !== 'undefined') {
|
||||
setState(localStorage.getItem(key));
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Local storage is unavailable:', e);
|
||||
}
|
||||
} else {
|
||||
SecureStore.getItemAsync(key).then((value: string | null) => {
|
||||
setState(value);
|
||||
});
|
||||
}
|
||||
}, [key]);
|
||||
|
||||
// Set
|
||||
const setValue = React.useCallback(
|
||||
(value: string | null) => {
|
||||
setState(value);
|
||||
setStorageItemAsync(key, value);
|
||||
},
|
||||
[key]
|
||||
);
|
||||
|
||||
return [state, setValue];
|
||||
}
|
|
@ -29,6 +29,7 @@
|
|||
"expo-font": "~12.0.9",
|
||||
"expo-linking": "~6.3.1",
|
||||
"expo-router": "~3.5.20",
|
||||
"expo-secure-store": "~13.0.2",
|
||||
"expo-splash-screen": "~0.27.5",
|
||||
"expo-status-bar": "~1.12.1",
|
||||
"expo-system-ui": "~3.0.7",
|
||||
|
@ -47,6 +48,7 @@
|
|||
"react-native-safe-area-context": "4.10.5",
|
||||
"react-native-screens": "3.31.1",
|
||||
"react-native-svg": "15.2.0",
|
||||
"react-native-toast-message": "^2.2.0",
|
||||
"react-native-web": "~0.19.10",
|
||||
"react-native-webview": "13.8.6"
|
||||
},
|
||||
|
|
45
services/message.tsx
Normal file
45
services/message.tsx
Normal file
|
@ -0,0 +1,45 @@
|
|||
import Toast from 'react-native-toast-message';
|
||||
|
||||
export class Message {
|
||||
/**
|
||||
* Set success message
|
||||
*
|
||||
* @param message
|
||||
*/
|
||||
static success(message: string) {
|
||||
Message.send('success', message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send error message
|
||||
*
|
||||
* @param message
|
||||
*/
|
||||
static error(message: string) {
|
||||
Message.send('error', message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send info message
|
||||
*
|
||||
* @param message
|
||||
*/
|
||||
static info(message: string) {
|
||||
Message.send('info', message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Send message
|
||||
*
|
||||
* @param type
|
||||
* @param message
|
||||
*/
|
||||
static send(type: string, message: string) {
|
||||
Toast.show({
|
||||
type: type,
|
||||
text1: message,
|
||||
position: 'bottom',
|
||||
})
|
||||
}
|
||||
|
||||
}
|
162
yarn.lock
162
yarn.lock
|
@ -25,10 +25,10 @@
|
|||
"@babel/highlight" "^7.24.7"
|
||||
picocolors "^1.0.0"
|
||||
|
||||
"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.8":
|
||||
version "7.25.0"
|
||||
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.0.tgz"
|
||||
integrity sha512-P4fwKI2mjEb3ZU5cnMJzvRsRKGBUcs8jvxIoRmr6ufAY9Xk2Bz7JubRTTivkw55c7WQJfTECeqYVa+HZ0FzREg==
|
||||
"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2":
|
||||
version "7.25.2"
|
||||
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz"
|
||||
integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==
|
||||
|
||||
"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.20.0", "@babel/core@^7.23.9":
|
||||
version "7.24.9"
|
||||
|
@ -69,11 +69,11 @@
|
|||
"@babel/types" "^7.24.7"
|
||||
|
||||
"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.24.7", "@babel/helper-compilation-targets@^7.24.8":
|
||||
version "7.24.8"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz"
|
||||
integrity sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==
|
||||
version "7.25.2"
|
||||
resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz"
|
||||
integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.24.8"
|
||||
"@babel/compat-data" "^7.25.2"
|
||||
"@babel/helper-validator-option" "^7.24.8"
|
||||
browserslist "^4.23.1"
|
||||
lru-cache "^5.1.1"
|
||||
|
@ -233,10 +233,12 @@
|
|||
js-tokens "^4.0.0"
|
||||
picocolors "^1.0.0"
|
||||
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.8", "@babel/parser@^7.25.0":
|
||||
version "7.25.0"
|
||||
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz"
|
||||
integrity sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.8", "@babel/parser@^7.25.0", "@babel/parser@^7.25.3":
|
||||
version "7.25.3"
|
||||
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz"
|
||||
integrity sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==
|
||||
dependencies:
|
||||
"@babel/types" "^7.25.2"
|
||||
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.0.0":
|
||||
version "7.20.7"
|
||||
|
@ -541,11 +543,11 @@
|
|||
"@babel/traverse" "^7.25.1"
|
||||
|
||||
"@babel/plugin-transform-literals@^7.0.0":
|
||||
version "7.24.7"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz"
|
||||
integrity sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==
|
||||
version "7.25.2"
|
||||
resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz"
|
||||
integrity sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.24.7"
|
||||
"@babel/helper-plugin-utils" "^7.24.8"
|
||||
|
||||
"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.7":
|
||||
version "7.24.8"
|
||||
|
@ -788,22 +790,22 @@
|
|||
"@babel/types" "^7.25.0"
|
||||
|
||||
"@babel/traverse@^7.20.0", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1":
|
||||
version "7.25.1"
|
||||
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.1.tgz"
|
||||
integrity sha512-LrHHoWq08ZpmmFqBAzN+hUdWwy5zt7FGa/hVwMcOqW6OVtwqaoD5utfuGYU87JYxdZgLUvktAsn37j/sYR9siA==
|
||||
version "7.25.3"
|
||||
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz"
|
||||
integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.24.7"
|
||||
"@babel/generator" "^7.25.0"
|
||||
"@babel/parser" "^7.25.0"
|
||||
"@babel/parser" "^7.25.3"
|
||||
"@babel/template" "^7.25.0"
|
||||
"@babel/types" "^7.25.0"
|
||||
"@babel/types" "^7.25.2"
|
||||
debug "^4.3.1"
|
||||
globals "^11.1.0"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.24.9", "@babel/types@^7.25.0", "@babel/types@^7.3.3":
|
||||
version "7.25.0"
|
||||
resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.0.tgz"
|
||||
integrity sha512-LcnxQSsd9aXOIgmmSpvZ/1yo46ra2ESYyqLcryaBZOghxy5qqOBjvCWP5JfkI8yl9rlxRgdLTTMCQQRcN2hdCg==
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.24.9", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.3.3":
|
||||
version "7.25.2"
|
||||
resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz"
|
||||
integrity sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==
|
||||
dependencies:
|
||||
"@babel/helper-string-parser" "^7.24.8"
|
||||
"@babel/helper-validator-identifier" "^7.24.7"
|
||||
|
@ -833,7 +835,7 @@
|
|||
|
||||
"@expo/cli@0.18.26":
|
||||
version "0.18.26"
|
||||
resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.18.26.tgz#56e60eaae12b82a8aeb33f2050bbfb6683f87187"
|
||||
resolved "https://registry.npmjs.org/@expo/cli/-/cli-0.18.26.tgz"
|
||||
integrity sha512-u9bTTXgcjaTloE9CHwxgrb8Me/Al4jiPykbVQpJydakH3GsIZfHy1zaLc7O39CoLjRz37WWi6Y5ZdgtQw9dCPQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.20.0"
|
||||
|
@ -1022,7 +1024,7 @@
|
|||
|
||||
"@expo/metro-config@0.18.10":
|
||||
version "0.18.10"
|
||||
resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.18.10.tgz#2b0ec353c38802dd89028432c3a463804df94f24"
|
||||
resolved "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.18.10.tgz"
|
||||
integrity sha512-HTYQqKfV0JSuRp5aDvrPHezj5udXOWoXqHOjfTSnce2m13j6D0yYXTJNaKRhlgpPBrkg5DL7z1fL3zwDUpLM4w==
|
||||
dependencies:
|
||||
"@babel/core" "^7.20.0"
|
||||
|
@ -1576,7 +1578,7 @@
|
|||
|
||||
"@react-native-async-storage/async-storage@1.23.1":
|
||||
version "1.23.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.23.1.tgz#cad3cd4fab7dacfe9838dce6ecb352f79150c883"
|
||||
resolved "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.23.1.tgz"
|
||||
integrity sha512-Qd2kQ3yi6Y3+AcUlrHxSLlnBvpdCEMVGFlVBneVOjaFaPU61g1huc38g339ysXspwY1QZA2aNhrk/KlHGO+ewA==
|
||||
dependencies:
|
||||
merge-options "^3.0.4"
|
||||
|
@ -1669,7 +1671,7 @@
|
|||
|
||||
"@react-native-community/cli-platform-apple@14.0.0":
|
||||
version "14.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-14.0.0.tgz#7050af6fbc01b4ebe72e1bdcb48d188cbbf1b9ef"
|
||||
resolved "https://registry.npmjs.org/@react-native-community/cli-platform-apple/-/cli-platform-apple-14.0.0.tgz"
|
||||
integrity sha512-WniJL8vR4MeIsjqio2hiWWuUYUJEL3/9TDL5aXNwG68hH3tYgK3742+X9C+vRzdjTmf5IKc/a6PwLsdplFeiwQ==
|
||||
dependencies:
|
||||
"@react-native-community/cli-tools" "14.0.0"
|
||||
|
@ -1688,7 +1690,7 @@
|
|||
|
||||
"@react-native-community/cli-platform-ios@^14.0.0":
|
||||
version "14.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-14.0.0.tgz#7c7c393a13415bf61aaad82f1a3583c30afb110e"
|
||||
resolved "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-14.0.0.tgz"
|
||||
integrity sha512-8kxGv7mZ5nGMtueQDq+ndu08f0ikf3Zsqm3Ix8FY5KCXpSgP14uZloO2GlOImq/zFESij+oMhCkZJGggpWpfAw==
|
||||
dependencies:
|
||||
"@react-native-community/cli-platform-apple" "14.0.0"
|
||||
|
@ -1727,7 +1729,7 @@
|
|||
|
||||
"@react-native-community/cli-tools@14.0.0":
|
||||
version "14.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-14.0.0.tgz#07b57a8942a131618c198e3b64fb1ec846cd631d"
|
||||
resolved "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-14.0.0.tgz"
|
||||
integrity sha512-L7GX5hyYYv0ZWbAyIQKzhHuShnwDqlKYB0tqn57wa5riGCaxYuRPTK+u4qy+WRCye7+i8M4Xj6oQtSd4z0T9cA==
|
||||
dependencies:
|
||||
appdirsjs "^1.2.4"
|
||||
|
@ -2057,7 +2059,7 @@
|
|||
|
||||
"@rnmapbox/maps@^10.1.28":
|
||||
version "10.1.28"
|
||||
resolved "https://registry.yarnpkg.com/@rnmapbox/maps/-/maps-10.1.28.tgz#be2f8fafc9772f3eb9967c78f6b0d36942d4b439"
|
||||
resolved "https://registry.npmjs.org/@rnmapbox/maps/-/maps-10.1.28.tgz"
|
||||
integrity sha512-+jc66jlQFEsJ1Uny8vF07TfZBk1h3TH61URn6umGRMsIZvPSJLT6LKt8Jn3XZkVJFXcA3PjQ4MDaxCbZ4/qeRQ==
|
||||
dependencies:
|
||||
"@turf/along" "6.5.0"
|
||||
|
@ -2131,7 +2133,7 @@
|
|||
|
||||
"@turf/along@6.5.0":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/along/-/along-6.5.0.tgz#ab12eec58a14de60fe243a62d31a474f415c8fef"
|
||||
resolved "https://registry.npmjs.org/@turf/along/-/along-6.5.0.tgz"
|
||||
integrity sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==
|
||||
dependencies:
|
||||
"@turf/bearing" "^6.5.0"
|
||||
|
@ -2142,7 +2144,7 @@
|
|||
|
||||
"@turf/bbox@*":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/bbox/-/bbox-7.0.0.tgz#1f892bb71f429aaa1d746c92d901567d5667f9b2"
|
||||
resolved "https://registry.npmjs.org/@turf/bbox/-/bbox-7.0.0.tgz"
|
||||
integrity sha512-IyXG5HAsn6IZLdAtQo7aWYccjU5WsV+uzIzhGaXrh/qTVylSYmRiWgLdiekHZVED9nv9r7D/EJUMOT4zyA6POA==
|
||||
dependencies:
|
||||
"@turf/helpers" "^7.0.0"
|
||||
|
@ -2151,7 +2153,7 @@
|
|||
|
||||
"@turf/bearing@^6.5.0":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/bearing/-/bearing-6.5.0.tgz#462a053c6c644434bdb636b39f8f43fb0cd857b0"
|
||||
resolved "https://registry.npmjs.org/@turf/bearing/-/bearing-6.5.0.tgz"
|
||||
integrity sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==
|
||||
dependencies:
|
||||
"@turf/helpers" "^6.5.0"
|
||||
|
@ -2159,7 +2161,7 @@
|
|||
|
||||
"@turf/destination@^6.5.0":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/destination/-/destination-6.5.0.tgz#30a84702f9677d076130e0440d3223ae503fdae1"
|
||||
resolved "https://registry.npmjs.org/@turf/destination/-/destination-6.5.0.tgz"
|
||||
integrity sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==
|
||||
dependencies:
|
||||
"@turf/helpers" "^6.5.0"
|
||||
|
@ -2167,7 +2169,7 @@
|
|||
|
||||
"@turf/distance@6.5.0", "@turf/distance@^6.5.0":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/distance/-/distance-6.5.0.tgz#21f04d5f86e864d54e2abde16f35c15b4f36149a"
|
||||
resolved "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz"
|
||||
integrity sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==
|
||||
dependencies:
|
||||
"@turf/helpers" "^6.5.0"
|
||||
|
@ -2175,12 +2177,12 @@
|
|||
|
||||
"@turf/helpers@6.5.0", "@turf/helpers@6.x", "@turf/helpers@^6.5.0":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-6.5.0.tgz#f79af094bd6b8ce7ed2bd3e089a8493ee6cae82e"
|
||||
resolved "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz"
|
||||
integrity sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==
|
||||
|
||||
"@turf/helpers@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-7.0.0.tgz#22dc2335e8b82db2a21b8c873ea10b3fb3dc5158"
|
||||
resolved "https://registry.npmjs.org/@turf/helpers/-/helpers-7.0.0.tgz"
|
||||
integrity sha512-vwZvxRuyjGpGXvhXSbT9mX6FK92dBMLWbMbDJ/MXQUPx17ReVPFc+6N6IcxAzZfkiCnqy7vpuq0c+/TTrQxIiA==
|
||||
dependencies:
|
||||
deep-equal "^2.2.3"
|
||||
|
@ -2188,14 +2190,14 @@
|
|||
|
||||
"@turf/invariant@^6.5.0":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-6.5.0.tgz#970afc988023e39c7ccab2341bd06979ddc7463f"
|
||||
resolved "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz"
|
||||
integrity sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==
|
||||
dependencies:
|
||||
"@turf/helpers" "^6.5.0"
|
||||
|
||||
"@turf/length@6.5.0":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/length/-/length-6.5.0.tgz#ff4e9072d5f997e1c32a1311d214d184463f83fa"
|
||||
resolved "https://registry.npmjs.org/@turf/length/-/length-6.5.0.tgz"
|
||||
integrity sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==
|
||||
dependencies:
|
||||
"@turf/distance" "^6.5.0"
|
||||
|
@ -2204,7 +2206,7 @@
|
|||
|
||||
"@turf/line-intersect@^6.5.0":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/line-intersect/-/line-intersect-6.5.0.tgz#dea48348b30c093715d2195d2dd7524aee4cf020"
|
||||
resolved "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz"
|
||||
integrity sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==
|
||||
dependencies:
|
||||
"@turf/helpers" "^6.5.0"
|
||||
|
@ -2215,7 +2217,7 @@
|
|||
|
||||
"@turf/line-segment@^6.5.0":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/line-segment/-/line-segment-6.5.0.tgz#ee73f3ffcb7c956203b64ed966d96af380a4dd65"
|
||||
resolved "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz"
|
||||
integrity sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==
|
||||
dependencies:
|
||||
"@turf/helpers" "^6.5.0"
|
||||
|
@ -2224,21 +2226,21 @@
|
|||
|
||||
"@turf/meta@6.x", "@turf/meta@^6.5.0":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-6.5.0.tgz#b725c3653c9f432133eaa04d3421f7e51e0418ca"
|
||||
resolved "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz"
|
||||
integrity sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==
|
||||
dependencies:
|
||||
"@turf/helpers" "^6.5.0"
|
||||
|
||||
"@turf/meta@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-7.0.0.tgz#85f91ad874cccd2c2c3d361917e200912597c11b"
|
||||
resolved "https://registry.npmjs.org/@turf/meta/-/meta-7.0.0.tgz"
|
||||
integrity sha512-cEXr13uFwhXq5mFBy0IK1U/QepE5qgk3zXpBYsla3lYV7cB83Vh+NNUR+r0/w/QoJqest1TG4H20F9tGYWPi/g==
|
||||
dependencies:
|
||||
"@turf/helpers" "^7.0.0"
|
||||
|
||||
"@turf/nearest-point-on-line@6.5.0":
|
||||
version "6.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@turf/nearest-point-on-line/-/nearest-point-on-line-6.5.0.tgz#8e1cd2cdc0b5acaf4c8d8b3b33bb008d3cb99e7b"
|
||||
resolved "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-6.5.0.tgz"
|
||||
integrity sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==
|
||||
dependencies:
|
||||
"@turf/bearing" "^6.5.0"
|
||||
|
@ -2289,12 +2291,12 @@
|
|||
|
||||
"@types/geojson@7946.0.8":
|
||||
version "7946.0.8"
|
||||
resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.8.tgz#30744afdb385e2945e22f3b033f897f76b1f12ca"
|
||||
resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz"
|
||||
integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==
|
||||
|
||||
"@types/geojson@^7946.0.7":
|
||||
version "7946.0.14"
|
||||
resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.14.tgz#319b63ad6df705ee2a65a73ef042c8271e696613"
|
||||
resolved "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz"
|
||||
integrity sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==
|
||||
|
||||
"@types/graceful-fs@^4.1.3":
|
||||
|
@ -2552,7 +2554,7 @@ ajv-keywords@^5.1.0:
|
|||
|
||||
ajv@8.11.0:
|
||||
version "8.11.0"
|
||||
resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f"
|
||||
resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz"
|
||||
integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==
|
||||
dependencies:
|
||||
fast-deep-equal "^3.1.1"
|
||||
|
@ -3584,7 +3586,7 @@ dayjs@^1.8.15:
|
|||
|
||||
debounce@^1.2.0:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5"
|
||||
resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz"
|
||||
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
|
||||
|
||||
debug@2.6.9, debug@^2.2.0, debug@^2.6.9:
|
||||
|
@ -3630,7 +3632,7 @@ dedent@^1.0.0:
|
|||
|
||||
deep-equal@^2.2.3:
|
||||
version "2.2.3"
|
||||
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1"
|
||||
resolved "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz"
|
||||
integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==
|
||||
dependencies:
|
||||
array-buffer-byte-length "^1.0.0"
|
||||
|
@ -4006,7 +4008,7 @@ es-errors@^1.2.1, es-errors@^1.3.0:
|
|||
|
||||
es-get-iterator@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6"
|
||||
resolved "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz"
|
||||
integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
|
@ -4173,7 +4175,7 @@ expo-constants@~16.0.0, expo-constants@~16.0.2:
|
|||
|
||||
expo-dev-client@~4.0.21:
|
||||
version "4.0.21"
|
||||
resolved "https://registry.yarnpkg.com/expo-dev-client/-/expo-dev-client-4.0.21.tgz#27a92cea712fdcbe213eadc9ae828c136f5086e8"
|
||||
resolved "https://registry.npmjs.org/expo-dev-client/-/expo-dev-client-4.0.21.tgz"
|
||||
integrity sha512-+zuVsKyp5tXTQUwDnTjtaOLf3TdmZ483Il9slg/LO15EsEFpl0zwI42DrQpzYmv617cgvywmp6iybGXjV3eZbQ==
|
||||
dependencies:
|
||||
expo-dev-launcher "4.0.23"
|
||||
|
@ -4184,7 +4186,7 @@ expo-dev-client@~4.0.21:
|
|||
|
||||
expo-dev-launcher@4.0.23:
|
||||
version "4.0.23"
|
||||
resolved "https://registry.yarnpkg.com/expo-dev-launcher/-/expo-dev-launcher-4.0.23.tgz#e9c8d1ee32f1cdc5522c35a6733ee656a3801984"
|
||||
resolved "https://registry.npmjs.org/expo-dev-launcher/-/expo-dev-launcher-4.0.23.tgz"
|
||||
integrity sha512-XG9VyFUoslBsBpJqtuOsen93u3hEw4rK7VSNqz8g+d8+AmHBv2rSuQheirPfxuSrLqGm49/ybWkHYqfs8CdlQw==
|
||||
dependencies:
|
||||
ajv "8.11.0"
|
||||
|
@ -4195,12 +4197,12 @@ expo-dev-launcher@4.0.23:
|
|||
|
||||
expo-dev-menu-interface@1.8.3:
|
||||
version "1.8.3"
|
||||
resolved "https://registry.yarnpkg.com/expo-dev-menu-interface/-/expo-dev-menu-interface-1.8.3.tgz#8c1262e29e0124fc5932a129c95b36de56656b20"
|
||||
resolved "https://registry.npmjs.org/expo-dev-menu-interface/-/expo-dev-menu-interface-1.8.3.tgz"
|
||||
integrity sha512-QM0LRozeFT5Ek0N7XpV93M+HMdEKRLEOXn0aW5M3uoUlnqC1+PLtF3HMy3k3hMKTTE/kJ1y1Z7akH07T0lunCQ==
|
||||
|
||||
expo-dev-menu@5.0.17:
|
||||
version "5.0.17"
|
||||
resolved "https://registry.yarnpkg.com/expo-dev-menu/-/expo-dev-menu-5.0.17.tgz#becb333cf11749b98c8366980ce7fc29562b566d"
|
||||
resolved "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-5.0.17.tgz"
|
||||
integrity sha512-BnFSd6PKDaJenRKn2C4X50dWyqvvkVz9pE/6IKuUvGIsshkk9pCoZvsFOlJjM61/ojz1KXyY9O1FUPPI7B1A7w==
|
||||
dependencies:
|
||||
expo-dev-menu-interface "1.8.3"
|
||||
|
@ -4220,7 +4222,7 @@ expo-font@~12.0.9:
|
|||
|
||||
expo-json-utils@~0.13.0:
|
||||
version "0.13.1"
|
||||
resolved "https://registry.yarnpkg.com/expo-json-utils/-/expo-json-utils-0.13.1.tgz#e49b697198e11c573d346f08ab91c467095934a9"
|
||||
resolved "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.13.1.tgz"
|
||||
integrity sha512-mlfaSArGVb+oJmUcR22jEONlgPp0wj4iNIHfQ2je9Q8WTOqMc0Ws9tUciz3JdJnhffdHqo/k8fpvf0IRmN5HPA==
|
||||
|
||||
expo-keep-awake@~13.0.2:
|
||||
|
@ -4238,7 +4240,7 @@ expo-linking@~6.3.1:
|
|||
|
||||
expo-manifests@~0.14.0:
|
||||
version "0.14.3"
|
||||
resolved "https://registry.yarnpkg.com/expo-manifests/-/expo-manifests-0.14.3.tgz#17854c45c8c9ced4a07031ae0838c38ac3115fbc"
|
||||
resolved "https://registry.npmjs.org/expo-manifests/-/expo-manifests-0.14.3.tgz"
|
||||
integrity sha512-L3b5/qocBPiQjbW0cpOHfnqdKZbTJS7sA3mgeDJT+mWga/xYsdpma1EfNmsuvrOzjLGjStr1k1fceM9Bl49aqQ==
|
||||
dependencies:
|
||||
"@expo/config" "~9.0.0"
|
||||
|
@ -4257,14 +4259,14 @@ expo-modules-autolinking@1.11.1:
|
|||
|
||||
expo-modules-core@1.12.20:
|
||||
version "1.12.20"
|
||||
resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.12.20.tgz#072dea10791f32ea5d1d3b15a7d5fd1984173429"
|
||||
resolved "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.12.20.tgz"
|
||||
integrity sha512-CCXjlgT8lDAufgt912P1W7TwD+KAylfIttc1Doh1a0hAfkdkUsDRmrgthnYrrxEo2ECVpbaB71Epp1bnZ1rRrA==
|
||||
dependencies:
|
||||
invariant "^2.2.4"
|
||||
|
||||
expo-router@~3.5.20:
|
||||
version "3.5.20"
|
||||
resolved "https://registry.yarnpkg.com/expo-router/-/expo-router-3.5.20.tgz#c597a68f14149eb7ba8ebb85cfc22b43bd9dc7c5"
|
||||
resolved "https://registry.npmjs.org/expo-router/-/expo-router-3.5.20.tgz"
|
||||
integrity sha512-walzIxz6okN/Ppq6DjrEsCiS99PMAz5GykkCSGyhxmweVWtD6j1E5Eqp0n6KVL1kcxDTSFAwypf/gezkaxLx6A==
|
||||
dependencies:
|
||||
"@expo/metro-runtime" "3.2.1"
|
||||
|
@ -4277,6 +4279,11 @@ expo-router@~3.5.20:
|
|||
react-native-helmet-async "2.0.4"
|
||||
schema-utils "^4.0.1"
|
||||
|
||||
expo-secure-store@~13.0.2:
|
||||
version "13.0.2"
|
||||
resolved "https://registry.yarnpkg.com/expo-secure-store/-/expo-secure-store-13.0.2.tgz#ba8f6076fc38062a28bb2ce5edab9cd28ef88598"
|
||||
integrity sha512-3QYgoneo8p8yeeBPBiAfokNNc2xq6+n8+Ob4fAlErEcf4H7Y72LH+K/dx0nQyWau2ZKZUXBxyyfuHFyVKrEVLg==
|
||||
|
||||
expo-splash-screen@0.27.5, expo-splash-screen@~0.27.5:
|
||||
version "0.27.5"
|
||||
resolved "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.27.5.tgz"
|
||||
|
@ -4299,7 +4306,7 @@ expo-system-ui@~3.0.7:
|
|||
|
||||
expo-updates-interface@~0.16.2:
|
||||
version "0.16.2"
|
||||
resolved "https://registry.yarnpkg.com/expo-updates-interface/-/expo-updates-interface-0.16.2.tgz#ad1ac2ca8ee5a8cc84052ea3c18a11da64da569b"
|
||||
resolved "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-0.16.2.tgz"
|
||||
integrity sha512-929XBU70q5ELxkKADj1xL0UIm3HvhYhNAOZv5DSk7rrKvLo7QDdPyl+JVnwZm9LrkNbH4wuE2rLoKu1KMgZ+9A==
|
||||
|
||||
expo-web-browser@~13.0.3:
|
||||
|
@ -4309,7 +4316,7 @@ expo-web-browser@~13.0.3:
|
|||
|
||||
expo@~51.0.24:
|
||||
version "51.0.24"
|
||||
resolved "https://registry.yarnpkg.com/expo/-/expo-51.0.24.tgz#fb64a85ded249d3f64e9aecb40b9fa9e200b4bb4"
|
||||
resolved "https://registry.npmjs.org/expo/-/expo-51.0.24.tgz"
|
||||
integrity sha512-HoOuNIWXzS6Gxifcb0N+qRt5K6iR9YitQaWIVNB8elyupvQdyI566IMgMBiO45NgpO5es0sfFNNBasxBHLkbUw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.20.0"
|
||||
|
@ -4630,7 +4637,7 @@ gensync@^1.0.0-beta.2:
|
|||
|
||||
geojson-rbush@3.x:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/geojson-rbush/-/geojson-rbush-3.2.0.tgz#8b543cf0d56f99b78faf1da52bb66acad6dfc290"
|
||||
resolved "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz"
|
||||
integrity sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==
|
||||
dependencies:
|
||||
"@turf/bbox" "*"
|
||||
|
@ -5202,7 +5209,7 @@ is-invalid-path@^0.1.0:
|
|||
|
||||
is-map@^2.0.2, is-map@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e"
|
||||
resolved "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz"
|
||||
integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==
|
||||
|
||||
is-negative-zero@^2.0.3:
|
||||
|
@ -5259,7 +5266,7 @@ is-regex@^1.1.4:
|
|||
|
||||
is-set@^2.0.2, is-set@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d"
|
||||
resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz"
|
||||
integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==
|
||||
|
||||
is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.3:
|
||||
|
@ -5314,7 +5321,7 @@ is-valid-path@^0.1.1:
|
|||
|
||||
is-weakmap@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd"
|
||||
resolved "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz"
|
||||
integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==
|
||||
|
||||
is-weakref@^1.0.2:
|
||||
|
@ -5326,7 +5333,7 @@ is-weakref@^1.0.2:
|
|||
|
||||
is-weakset@^2.0.3:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.3.tgz#e801519df8c0c43e12ff2834eead84ec9e624007"
|
||||
resolved "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz"
|
||||
integrity sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
|
@ -6773,7 +6780,7 @@ object-inspect@^1.13.1:
|
|||
|
||||
object-is@^1.1.5:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07"
|
||||
resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz"
|
||||
integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==
|
||||
dependencies:
|
||||
call-bind "^1.0.7"
|
||||
|
@ -7259,7 +7266,7 @@ queue@6.0.2:
|
|||
|
||||
quickselect@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018"
|
||||
resolved "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz"
|
||||
integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==
|
||||
|
||||
ramda@^0.27.2:
|
||||
|
@ -7274,7 +7281,7 @@ range-parser@~1.2.1:
|
|||
|
||||
rbush@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf"
|
||||
resolved "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz"
|
||||
integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==
|
||||
dependencies:
|
||||
quickselect "^2.0.0"
|
||||
|
@ -7450,12 +7457,17 @@ react-native-size-matters@^0.4.0:
|
|||
|
||||
react-native-svg@15.2.0:
|
||||
version "15.2.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-15.2.0.tgz#9561a6b3bd6b44689f437ba13182afee33bd5557"
|
||||
resolved "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.2.0.tgz"
|
||||
integrity sha512-R0E6IhcJfVLsL0lRmnUSm72QO+mTqcAOM5Jb8FVGxJqX3NfJMlMP0YyvcajZiaRR8CqQUpEoqrY25eyZb006kw==
|
||||
dependencies:
|
||||
css-select "^5.1.0"
|
||||
css-tree "^1.1.3"
|
||||
|
||||
react-native-toast-message@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.npmjs.org/react-native-toast-message/-/react-native-toast-message-2.2.0.tgz"
|
||||
integrity sha512-AFti8VzUk6JvyGAlLm9/BknTNDXrrhqnUk7ak/pM7uCTxDPveAu2ekszU0on6vnUPFnG04H/QfYE2IlETqeaWw==
|
||||
|
||||
react-native-web@~0.19.10:
|
||||
version "0.19.12"
|
||||
resolved "https://registry.npmjs.org/react-native-web/-/react-native-web-0.19.12.tgz"
|
||||
|
@ -7472,7 +7484,7 @@ react-native-web@~0.19.10:
|
|||
|
||||
react-native-webview@13.8.6:
|
||||
version "13.8.6"
|
||||
resolved "https://registry.yarnpkg.com/react-native-webview/-/react-native-webview-13.8.6.tgz#5d4a62cb311d5ef8d910a8e112b3f1f2807bcd18"
|
||||
resolved "https://registry.npmjs.org/react-native-webview/-/react-native-webview-13.8.6.tgz"
|
||||
integrity sha512-jtZ9OgB2AN6rhDwto6dNL3PtOtl/SI4VN93pZEPbMLvRjqHfxiUrilGllL5fKAXq5Ry5FJyfUi82A4Ii8olZ7A==
|
||||
dependencies:
|
||||
escape-string-regexp "2.0.0"
|
||||
|
@ -8170,7 +8182,7 @@ statuses@~1.5.0:
|
|||
|
||||
stop-iteration-iterator@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
|
||||
resolved "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz"
|
||||
integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==
|
||||
dependencies:
|
||||
internal-slot "^1.0.4"
|
||||
|
@ -8812,7 +8824,7 @@ update-browserslist-db@^1.1.0:
|
|||
|
||||
uri-js@^4.2.2:
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
|
||||
resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
|
||||
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
|
||||
dependencies:
|
||||
punycode "^2.1.0"
|
||||
|
@ -9012,7 +9024,7 @@ which-boxed-primitive@^1.0.2:
|
|||
|
||||
which-collection@^1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0"
|
||||
resolved "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz"
|
||||
integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==
|
||||
dependencies:
|
||||
is-map "^2.0.3"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue