diff --git a/CustomerApp/.DS_Store b/CustomerApp/.DS_Store new file mode 100644 index 0000000..985e3e8 Binary files /dev/null and b/CustomerApp/.DS_Store differ diff --git a/CustomerApp/.expo/README.md b/CustomerApp/.expo/README.md new file mode 100644 index 0000000..fd146b4 --- /dev/null +++ b/CustomerApp/.expo/README.md @@ -0,0 +1,15 @@ +> Why do I have a folder named ".expo" in my project? + +The ".expo" folder is created when an Expo project is started using "expo start" command. + +> What do the files contain? + +- "devices.json": contains information about devices that have recently opened this project. This is used to populate the "Development sessions" list in your development builds. +- "packager-info.json": contains port numbers and process PIDs that are used to serve the application to the mobile device/simulator. +- "settings.json": contains the server configuration that is used to serve the application manifest. + +> Should I commit the ".expo" folder? + +No, you should not share the ".expo" folder. It does not contain any information that is relevant for other developers working on the project, it is specific to your machine. + +Upon project creation, the ".expo" folder is already added to your ".gitignore" file. diff --git a/CustomerApp/.expo/devices.json b/CustomerApp/.expo/devices.json new file mode 100644 index 0000000..5efff6c --- /dev/null +++ b/CustomerApp/.expo/devices.json @@ -0,0 +1,3 @@ +{ + "devices": [] +} diff --git a/CustomerApp/.expo/settings.json b/CustomerApp/.expo/settings.json new file mode 100644 index 0000000..92bc513 --- /dev/null +++ b/CustomerApp/.expo/settings.json @@ -0,0 +1,8 @@ +{ + "hostType": "lan", + "lanType": "ip", + "dev": true, + "minify": false, + "urlRandomness": null, + "https": false +} diff --git a/CustomerApp/.gitignore b/CustomerApp/.gitignore new file mode 100644 index 0000000..30bc162 --- /dev/null +++ b/CustomerApp/.gitignore @@ -0,0 +1 @@ +/node_modules \ No newline at end of file diff --git a/CustomerApp/.npmrc b/CustomerApp/.npmrc new file mode 100644 index 0000000..e9ee3cb --- /dev/null +++ b/CustomerApp/.npmrc @@ -0,0 +1 @@ +legacy-peer-deps=true \ No newline at end of file diff --git a/CustomerApp/App.js b/CustomerApp/App.js new file mode 100644 index 0000000..ea81e9f --- /dev/null +++ b/CustomerApp/App.js @@ -0,0 +1,151 @@ +import { ApolloProvider } from '@apollo/react-hooks' +import * as Font from 'expo-font' +import * as Location from 'expo-location' +import * as Notifications from 'expo-notifications' +import * as SplashScreen from 'expo-splash-screen' +import React, { useEffect, useState } from 'react' +import { + ActivityIndicator, + BackHandler, + Platform, + StatusBar, + StyleSheet, + useColorScheme, + View +} from 'react-native' +import FlashMessage from 'react-native-flash-message' +import i18n from './i18n' +import setupApolloClient from './src/apollo/index' +import { ConfigurationProvider } from './src/context/Configuration' +import { UserProvider } from './src/context/User' +import AppContainer from './src/routes' +import { AnimatedSplash } from './src/screens' +import { COLORS, THEME } from './src/Theme' +import { exitAlert } from './src/utils/androidBackButton' +import { requestTrackingPermissions } from './src/utils/useAppTrackingTransparency' + +SplashScreen.preventAutoHideAsync().catch(() => {}) + +export default function App() { + const colorScheme = useColorScheme() + const isDark = colorScheme === 'dark' + const [fontLoaded, setFontLoaded] = useState(false) + const [client, setupClient] = useState(null) + + useEffect(() => { + requestTrackingPermissions() + }, []) + useEffect(() => { + loadAppData() + return () => { + BackHandler.removeEventListener('hardwareBackPress', exitAlert) + } + }, []) + + async function loadAppData() { + const client = await setupApolloClient() + + setupClient(client) + await i18n.initAsync() + // load fonts + await Font.loadAsync({ + Poppin300: require('./src/assets/font/Poppin/Poppins-Light.ttf'), + Poppin400: require('./src/assets/font/Poppin/Poppins-Regular.ttf'), + Poppin500: require('./src/assets/font/Poppin/Poppins-Medium.ttf'), + Poppin600: require('./src/assets/font/Poppin/Poppins-SemiBold.ttf'), + Poppin700: require('./src/assets/font/Poppin/Poppins-Bold.ttf'), + icomoon: require('./src/assets/font/icomoon.ttf') + }) + + await permissionForLocationAsync() + await permissionForPushNotificationsAsync() + + BackHandler.addEventListener('hardwareBackPress', exitAlert) + setFontLoaded(true) + } + + async function permissionForPushNotificationsAsync() { + const { status: existingStatus } = await Notifications.getPermissionsAsync() + let finalStatus = existingStatus + // only ask if permissions have not already been determined, because + // iOS won't necessarily prompt the user a second time. + if (existingStatus !== 'granted') { + // Android remote notification permissions are granted during the app + // install, so this will only ask on iOS + const { status } = await Notifications.requestPermissionsAsync() + finalStatus = status + } + + // Stop here if the user did not grant permissions + if (finalStatus !== 'granted') { + return + } + + if (Platform.OS === 'android') { + Notifications.setNotificationChannelAsync('default', { + name: 'default', + sound: true, + priority: 'max', + importance: Notifications.AndroidImportance.HIGH, + vibrate: [0, 250, 250, 250], + lightColor: COLORS.primary + }) + } + } + async function permissionForLocationAsync() { + const { status: existingStatus } = + await Location.getForegroundPermissionsAsync() + // only ask if permissions have not already been determined, because + // iOS won't necessarily prompt the user a second time. + if (existingStatus !== 'granted') { + // Android location permissions are granted during the app + // install, so this will only ask on iOS + const { status } = await Location.requestForegroundPermissionsAsync() + // eslint-disable-next-line no-undef + finalStatus = status + } + } + + if (fontLoaded && client) { + return ( + + + + + + + + + + + + ) + } else { + return ( + + + + ) + } +} + +const styles = StyleSheet.create({ + flex: { + flex: 1 + }, + mainContainer: { + justifyContent: 'center', + alignItems: 'center' + } +}) diff --git a/CustomerApp/app.json b/CustomerApp/app.json new file mode 100644 index 0000000..c52d515 --- /dev/null +++ b/CustomerApp/app.json @@ -0,0 +1,83 @@ +{ + "expo": { + "name": "Enatega", + "version": "1.0.16", + "scheme": "enategasinglevendor", + "description": "Enatega is a starter kit food ordering app built in React Native using Expo for IOS and Android. It's made keeping good aesthetics in mind as well keeping the best coding practices in mind. Its fully customisable to easily help you in your next food delivery project. https://market.nativebase.io/view/react-native-food-delivery-backend-app", + "slug": "enategasinglevendor", + "privacy": "public", + "androidStatusBar": { + "backgroundColor": "#000" + }, + "platforms": [ + "ios", + "android" + ], + "orientation": "portrait", + "icon": "./assets/icon.png", + "splash": { + "image": "./assets/splash.png", + "resizeMode": "cover", + "backgroundColor": "#febb2c" + }, + "updates": { + "fallbackToCacheTimeout": 0 + }, + "assetBundlePatterns": [ + "**/*" + ], + "ios": { + "supportsTablet": true, + "bundleIdentifier": "com.enatega.vendor", + "config": { + "googleMapsApiKey": "" + }, + "usesAppleSignIn": true, + "infoPlist": { + "NSLocationWhenInUseUsageDescription": "This app uses the location to determine the delivery address for your orders.", + "NSUserTrackingUsageDescription": "Allow this app to collect app-related data that can be used for tracking you or your device." + } + }, + "notification": { + "iosDisplayInForeground": true, + "color": "#d83765", + "icon": "./assets/not-icon.png", + "androidMode": "default", + "androidCollapsedTitle": "Enatega" + }, + "android": { + "versionCode": 22, + "package": "com.enatega.vendor", + "googleServicesFile": "./google-services-prod.json", + "config": { + "googleMaps": { + "apiKey": "" + } + }, + "adaptiveIcon": { + "foregroundImage": "./assets/adaptive-icon.png", + "backgroundColor": "#febb2c" + }, + "permissions": [ + "ACCESS_FINE_LOCATION", + "ACCESS_COARSE_LOCATION" + ] + }, + "plugins": [ + [ + "expo-tracking-transparency", + { + "userTrackingPermission": "Allow this app to collect app-related data that can be used for tracking you or your device." + } + ] + ], + "facebookScheme": "fb3017447961609878", + "facebookAppId": "3017447961609878", + "facebookDisplayName": "Food delivery", + "extra": { + "eas": { + "projectId": "0b51ea6b-d9fd-48e2-9480-54149ca73a7a" + } + } + } +} diff --git a/CustomerApp/assets/.DS_Store b/CustomerApp/assets/.DS_Store new file mode 100644 index 0000000..c6776ac Binary files /dev/null and b/CustomerApp/assets/.DS_Store differ diff --git a/CustomerApp/assets/adaptive-icon.png b/CustomerApp/assets/adaptive-icon.png new file mode 100644 index 0000000..13e2831 Binary files /dev/null and b/CustomerApp/assets/adaptive-icon.png differ diff --git a/CustomerApp/assets/burger.png b/CustomerApp/assets/burger.png new file mode 100644 index 0000000..2f2788a Binary files /dev/null and b/CustomerApp/assets/burger.png differ diff --git a/CustomerApp/assets/icon.png b/CustomerApp/assets/icon.png new file mode 100644 index 0000000..9b763a8 Binary files /dev/null and b/CustomerApp/assets/icon.png differ diff --git a/CustomerApp/assets/logo.png b/CustomerApp/assets/logo.png new file mode 100644 index 0000000..ab0d868 Binary files /dev/null and b/CustomerApp/assets/logo.png differ diff --git a/CustomerApp/assets/not-icon.png b/CustomerApp/assets/not-icon.png new file mode 100644 index 0000000..53c7d7c Binary files /dev/null and b/CustomerApp/assets/not-icon.png differ diff --git a/CustomerApp/assets/profile.png b/CustomerApp/assets/profile.png new file mode 100644 index 0000000..6c4e593 Binary files /dev/null and b/CustomerApp/assets/profile.png differ diff --git a/CustomerApp/assets/splash.png b/CustomerApp/assets/splash.png new file mode 100644 index 0000000..5b0b3ea Binary files /dev/null and b/CustomerApp/assets/splash.png differ diff --git a/CustomerApp/assets/transparent-icon.png b/CustomerApp/assets/transparent-icon.png new file mode 100644 index 0000000..b1f3b47 Binary files /dev/null and b/CustomerApp/assets/transparent-icon.png differ diff --git a/CustomerApp/babel.config.js b/CustomerApp/babel.config.js new file mode 100644 index 0000000..b7c79d4 --- /dev/null +++ b/CustomerApp/babel.config.js @@ -0,0 +1,10 @@ +module.exports = function (api) { + api.cache(true); + return { + presets: ["babel-preset-expo"], + plugins: [ + "react-native-reanimated/plugin", + "@babel/plugin-syntax-dynamic-import", + ], + }; +}; diff --git a/CustomerApp/eas.json b/CustomerApp/eas.json new file mode 100644 index 0000000..c1098c4 --- /dev/null +++ b/CustomerApp/eas.json @@ -0,0 +1,38 @@ +{ + "cli": { + "version": ">= 3.8.0" + }, + "build": { + "development": { + "developmentClient": true, + "distribution": "internal", + "android": { + "buildType": "apk" + }, + "ios": { + "resourceClass": "m-medium" + } + }, + "preview": { + "distribution": "internal", + "ios": { + "resourceClass": "m-medium" + } + }, + "production": { + "developmentClient": false, + "releaseChannel": "production", + "distribution": "store", + "android": { + "buildType": "apk" + }, + "ios": { + "buildConfiguration": "Debug", + "image": "latest" + } + } + }, + "submit": { + "production": {} + } +} diff --git a/CustomerApp/enategaprod_upload_cert.pem b/CustomerApp/enategaprod_upload_cert.pem new file mode 100644 index 0000000..e5efedf --- /dev/null +++ b/CustomerApp/enategaprod_upload_cert.pem @@ -0,0 +1,20 @@ +-----BEGIN CERTIFICATE----- +MIIDRTCCAi2gAwIBAgIERu0DYTANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJV +UzEJMAcGA1UECBMAMQkwBwYDVQQHEwAxCTAHBgNVBAoTADEJMAcGA1UECxMAMRgw +FgYDVQQDEw9jb20uZW5hdGVnYS5hcHAwHhcNMTkwNzI2MDg0NzEyWhcNNDYxMjEx +MDg0NzEyWjBTMQswCQYDVQQGEwJVUzEJMAcGA1UECBMAMQkwBwYDVQQHEwAxCTAH +BgNVBAoTADEJMAcGA1UECxMAMRgwFgYDVQQDEw9jb20uZW5hdGVnYS5hcHAwggEi +MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQChW6yOHftMY4PZYS/1VK72o0mj +TMxVrolnwN46QrCkwX3MTC5Rf014MCOfWjRpbeCnL/ZFW5hMu1gfZhI3cU6n8kKi +3xkhIgtxoaGecC594WzOJfFNhNuHbdJTp4KlPli8k1CiWSxzddnxDaJX1zLh4vbp +Z1czC0k7HY6Muhpd7WCC1uwcp0UzCm1ej7LZqYPuUzwieW0V/ASMdS9yWri4LyIO +DA6nFbDdvCJrupL0C8RQjACCRMLwGx2l3zMlWe3nDa4ZyMRW6cdSsQA6QvlwxVeK +6I40S8fYsUf68/QZrnBwTV9yyJ78bIpF+9zF3b7kcv7tXAKkcuoQcd/70e79AgMB +AAGjITAfMB0GA1UdDgQWBBQ71L/oHvSkF0v65nI4B1iVLSFcfDANBgkqhkiG9w0B +AQsFAAOCAQEAlzMU9jy1oCtrxeucJcx5LU2+4Np/pdhfofivK3W6cLJ6yqAvKxNC +cmO+4mwG8O9s5bYtscB7+n9u1JYNOGMtyzAbjW2tzysaPU9EPatD+oAQznU1ur28 +v5YCTmS1tv4wRsYkjYGI+S+XQ+qi/wuNith2te1qoUfdl4/JCIA8kw7XPU9eLkDE +r3RrsZXV7NTIo2f2nnTeJWz9QFtERevQlgpwOnCqmqvPKV3n52sH5R/8g3xjiL1W +wP1JHGErSFGVbctYH6HTsHQkAfmzPeK7UOfB+kR70dXkPKdw3u+pdv8jzaRO9gpq +H97r6aLCoyB53CJ+6w51DSl1eAKMGK7Tcg== +-----END CERTIFICATE----- diff --git a/CustomerApp/environment.js b/CustomerApp/environment.js new file mode 100644 index 0000000..666fa4c --- /dev/null +++ b/CustomerApp/environment.js @@ -0,0 +1,65 @@ +/***************************** + * environment.js + * path: '/environment.js' (root of your project) + ******************************/ + +import Constants from "expo-constants"; + +const ENV = { + development: { + GRAPHQL_URL: "http://10.97.28.88.90:8000/graphql", + WS_GRAPHQL_URL: "ws://10.97.28.88.90:8000/graphql", + SERVER_URL: "http://10.97.28.88.90:8000/", // put / at the end of server url + IOS_CLIENT_ID_GOOGLE: "", + ANDROID_CLIENT_ID_GOOGLE: "", + FACEBOOK_APP_ID: "404956210315749", + AMPLITUDE_API_KEY: "", + STRIPE_PUBLIC_KEY: "", + STRIPE_IMAGE_URL: "http://10.97.28.88.90:8000/assets/images/logo.png", + STRIPE_STORE_NAME: "Enatega", + }, + staging: { + GRAPHQL_URL: "https://staging-enatega-single-api.herokuapp.com/graphql", + WS_GRAPHQL_URL: "wss://staging-enatega-single-api.herokuapp.com/graphql", + SERVER_URL: "https://staging-enatega-single-api.herokuapp.com/", // put / at the end of server url + IOS_CLIENT_ID_GOOGLE: "", + ANDROID_CLIENT_ID_GOOGLE: "", + FACEBOOK_APP_ID: "404956210315749", + AMPLITUDE_API_KEY: "", + STRIPE_PUBLIC_KEY: "", + STRIPE_IMAGE_URL: + "https://staging-enatega-single-api.herokuapp.com/assets/images/logo.png", + STRIPE_STORE_NAME: "Enatega", + }, + production: { + GRAPHQL_URL: "https://prod-enatega-single-api.herokuapp.com/graphql", + WS_GRAPHQL_URL: "wss://prod-enatega-single-api.herokuapp.com/graphql", + SERVER_URL: "https://prod-enatega-single-api.herokuapp.com/", // put / at the end of server url + IOS_CLIENT_ID_GOOGLE: "", + ANDROID_CLIENT_ID_GOOGLE: "", + FACEBOOK_APP_ID: "3017447961609878", + AMPLITUDE_API_KEY: "", + STRIPE_PUBLIC_KEY: "", + STRIPE_IMAGE_URL: + "https://prod-enatega-single-api.herokuapp.com/assets/images/logo.png", + STRIPE_STORE_NAME: "Enatega", + }, +}; + +const getEnvVars = (env = Constants.manifest.releaseChannel) => { + // What is __DEV__ ? + // This variable is set to true when react-native is running in Dev mode. + // __DEV__ is true when run locally, but false when published. + // eslint-disable-next-line no-undef + if (__DEV__) { + return ENV.development; + } else if (env === "production") { + return ENV.production; + } else if (env === "staging") { + return ENV.staging; + } else { + return ENV.production; + } +}; + +export default getEnvVars; diff --git a/CustomerApp/environment.js.example b/CustomerApp/environment.js.example new file mode 100644 index 0000000..63be348 --- /dev/null +++ b/CustomerApp/environment.js.example @@ -0,0 +1,46 @@ +/***************************** +* environment.js +* path: '/environment.js' (root of your project) +******************************/ + +import Constants from 'expo-constants'; + +const ENV = { + development: { + GRAPHQL_URL:'' , + SERVER_URL: '', // put / at the end of server url + IOS_CLIENT_ID_GOOGLE: "", + ANDROID_CLIENT_ID_GOOGLE: "", + FACEBOOK_APP_ID: "", + AMPLITUDE_API_KEY: "", + STRIPE_PUBLIC_KEY: "", + STRIPE_IMAGE_URL: "", + STRIPE_STORE_NAME: "" + }, + production: { + GRAPHQL_URL:'' , + SERVER_URL: '', // put / at the end of server url + IOS_CLIENT_ID_GOOGLE: "", + ANDROID_CLIENT_ID_GOOGLE: "", + FACEBOOK_APP_ID: "", + AMPLITUDE_API_KEY: "", + STRIPE_PUBLIC_KEY: "", + STRIPE_IMAGE_URL: "", + STRIPE_STORE_NAME: "" + } +}; + +const getEnvVars = (env = Constants.manifest.releaseChannel) => { + // What is __DEV__ ? + // This variable is set to true when react-native is running in Dev mode. + // __DEV__ is true when run locally, but false when published. + if (__DEV__) { + return ENV.development; + } else if (env === 'production') { + return ENV.production; + } else { + return ENV.development; + } +}; + +export default getEnvVars; \ No newline at end of file diff --git a/CustomerApp/google-services-prod-old.json b/CustomerApp/google-services-prod-old.json new file mode 100644 index 0000000..0e3e687 --- /dev/null +++ b/CustomerApp/google-services-prod-old.json @@ -0,0 +1,47 @@ +{ + "project_info": { + "project_number": "94983896797", + "firebase_url": "https://enatega-production.firebaseio.com", + "project_id": "enatega-production", + "storage_bucket": "enatega-production.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:94983896797:android:537c4eadfd11cf33", + "android_client_info": { + "package_name": "com.enatega.app" + } + }, + "oauth_client": [ + { + "client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBt9S6e7ig5EkNiSXw3sCyX7kgo1gzPxl4" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "94983896797-irt6u2cmq2sjcp7j1rj9m9pqptjd12ue.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.enatega.app" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/CustomerApp/google-services-prod.json b/CustomerApp/google-services-prod.json new file mode 100644 index 0000000..b96b2ea --- /dev/null +++ b/CustomerApp/google-services-prod.json @@ -0,0 +1,47 @@ +{ + "project_info": { + "project_number": "94983896797", + "firebase_url": "https://enatega-production.firebaseio.com", + "project_id": "enatega-production", + "storage_bucket": "enatega-production.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:94983896797:android:5b28fe2925a51512112534", + "android_client_info": { + "package_name": "com.enatega.vendor" + } + }, + "oauth_client": [ + { + "client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyBt9S6e7ig5EkNiSXw3sCyX7kgo1gzPxl4" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "94983896797-9e36v3edasjt9t9r5q9uvkth700nn0nn.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "94983896797-osn1lglcn3f03a4dqpf1vl2rcogca8vp.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.enatega.app" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/CustomerApp/google-services.json b/CustomerApp/google-services.json new file mode 100644 index 0000000..49e92fc --- /dev/null +++ b/CustomerApp/google-services.json @@ -0,0 +1,40 @@ +{ + "project_info": { + "project_number": "346954645996", + "firebase_url": "https://enatega-4d403.firebaseio.com", + "project_id": "enatega-4d403", + "storage_bucket": "enatega-4d403.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:346954645996:android:f968efbb41d1fa7a", + "android_client_info": { + "package_name": "host.exp.exponent" + } + }, + "oauth_client": [ + { + "client_id": "346954645996-a2t28in6j98u33hnd4evb45m5d34lvjp.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyCFfJ4RHfakMqvp_QsIHkfWcpeYrxtk8j0" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "346954645996-a2t28in6j98u33hnd4evb45m5d34lvjp.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/CustomerApp/i18n.js b/CustomerApp/i18n.js new file mode 100644 index 0000000..c94d2a7 --- /dev/null +++ b/CustomerApp/i18n.js @@ -0,0 +1,23 @@ +import AsyncStorage from '@react-native-async-storage/async-storage' +import * as Localization from 'expo-localization' +import i18n from 'i18n-js' +import { Platform } from 'react-native' +import { de } from './translations/de' +import { en } from './translations/en' +import { fr } from './translations/fr' +import { km } from './translations/km' +import { zh } from './translations/zh' + +i18n.initAsync = async() => { + i18n.fallbacks = true + i18n.translations = { fr, en, km, zh, de } + // i18n.locale = 'km' + if (Platform.OS === 'android') { + const lang = await AsyncStorage.getItem('enatega-language') + i18n.locale = lang || 'en' + } else { + i18n.locale = Localization.locale + } +} + +export default i18n diff --git a/CustomerApp/index.js b/CustomerApp/index.js new file mode 100644 index 0000000..1d6e981 --- /dev/null +++ b/CustomerApp/index.js @@ -0,0 +1,8 @@ +import { registerRootComponent } from 'expo'; + +import App from './App'; + +// registerRootComponent calls AppRegistry.registerComponent('main', () => App); +// It also ensures that whether you load the app in Expo Go or in a native build, +// the environment is set up appropriately +registerRootComponent(App); diff --git a/CustomerApp/metro.config.js b/CustomerApp/metro.config.js new file mode 100644 index 0000000..9430b0f --- /dev/null +++ b/CustomerApp/metro.config.js @@ -0,0 +1,4 @@ +// Learn more https://docs.expo.io/guides/customizing-metro +const { getDefaultConfig } = require('expo/metro-config'); + +module.exports = getDefaultConfig(__dirname); diff --git a/CustomerApp/package-lock.json b/CustomerApp/package-lock.json new file mode 100644 index 0000000..eff6d35 --- /dev/null +++ b/CustomerApp/package-lock.json @@ -0,0 +1,22647 @@ +{ + "name": "enatega-full-app", + "version": "5.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "enatega-full-app", + "version": "5.0.0", + "hasInstallScript": true, + "dependencies": { + "@amplitude/analytics-react-native": "^1.1.1", + "@apollo/react-hooks": "^3.1.3", + "@expo/vector-icons": "^13.0.0", + "@ptomasroos/react-native-multi-slider": "^2.2.2", + "@react-native-async-storage/async-storage": "~1.17.3", + "@react-native-community/masked-view": "0.1.11", + "@react-navigation/drawer": "^6.6.0", + "@react-navigation/native": "^6.1.4", + "@react-navigation/native-stack": "^6.9.10", + "@react-navigation/stack": "^6.3.14", + "apollo-boost": "^0.4.9", + "apollo-cache-inmemory": "^1.5.1", + "apollo-cache-persist": "^0.1.1", + "apollo-client": "^2.5.1", + "apollo-link-context": "^1.0.17", + "apollo-link-http": "^1.5.14", + "apollo-link-state": "^0.4.2", + "apollo-link-ws": "^1.0.20", + "apollo-upload-client": "^10.0.0", + "apollo-utilities": "^1.3.4", + "deprecated-react-native-prop-types": "^4.0.0", + "expo": "^47.0.12", + "expo-app-loading": "~2.1.1", + "expo-apple-authentication": "~5.0.1", + "expo-application": "~5.0.1", + "expo-asset": "~8.7.0", + "expo-auth-session": "^3.8.0", + "expo-camera": "~13.1.0", + "expo-constants": "~14.0.2", + "expo-contacts": "~11.0.1", + "expo-device": "~5.0.0", + "expo-font": "~11.0.1", + "expo-image-picker": "~14.0.2", + "expo-linking": "~3.3.1", + "expo-localization": "~14.0.0", + "expo-location": "~15.0.1", + "expo-notifications": "~0.17.0", + "expo-random": "~13.0.0", + "expo-sensors": "~12.0.1", + "expo-splash-screen": "~0.17.5", + "expo-status-bar": "~1.4.2", + "expo-tracking-transparency": "~3.0.1", + "expo-updates": "~0.15.6", + "graphql": "^16.6.0", + "graphql-tag": "^2.10.1", + "i18n-js": "^3.2.2", + "lodash": "^4.17.21", + "patch-package": "^6.5.1", + "react": "18.1.0", + "react-apollo": "^3.1.5", + "react-native": "0.70.5", + "react-native-button": "^3.0.1", + "react-native-flash-message": "^0.4.0", + "react-native-flatlist-slider": "^1.0.5", + "react-native-gesture-handler": "~2.8.0", + "react-native-gifted-chat": "^1.1.1", + "react-native-maps": "1.3.2", + "react-native-material-textfield": "^0.16.1", + "react-native-modal": "^13.0.1", + "react-native-modalize": "^2.0.8", + "react-native-reanimated": "~2.9.1", + "react-native-safe-area-context": "4.4.1", + "react-native-screens": "~3.18.0", + "react-native-star-rating": "^1.1.0", + "react-native-svg": "13.4.0", + "react-native-timeline-flatlist": "^0.8.0", + "react-native-webview": "11.23.1", + "subscriptions-transport-ws": "^0.11.0", + "uuid": "^3.3.2", + "validate.js": "^0.13.1" + }, + "devDependencies": { + "@babel/core": "^7.12.9", + "babel-jest": "^29.4.3", + "babel-preset-expo": "~9.2.1", + "babel-preset-react-native": "^4.0.1", + "eslint": "^8.34.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.20.0", + "eslint-plugin-standard": "^5.0.0", + "husky": "^8.0.3", + "jest": "^29.4.3", + "jest-react-native": "^18.0.0", + "lint-staged": "^13.1.2", + "metro-react-native-babel-preset": "^0.75.0", + "prettier": "^2.3.1", + "prettier-config-standard": "^5.0.0", + "react-test-renderer": "^18.2.0" + } + }, + "node_modules/@amplitude/analytics-client-common": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@amplitude/analytics-client-common/-/analytics-client-common-0.6.1.tgz", + "integrity": "sha512-P9Zb1xfmbYMFy3QPfY7G+wwvbvTsfIOS5BOWSUiig+P9PduRwxslPe1Uscns0is6SaHcqIqrw47uuH58FEmmcg==", + "dependencies": { + "@amplitude/analytics-connector": "^1.4.5", + "@amplitude/analytics-core": "^0.12.0", + "@amplitude/analytics-types": "^0.17.0", + "tslib": "^2.4.1" + } + }, + "node_modules/@amplitude/analytics-connector": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@amplitude/analytics-connector/-/analytics-connector-1.4.6.tgz", + "integrity": "sha512-6jD2pOosRD4y8DT8StUCz7yTd5ZDkdOU9/AWnlWKM5qk90Mz7sdZrdZ9H7sA/L3yOJEpQOYZgQplQdWWUzyWug==", + "dependencies": { + "@amplitude/ua-parser-js": "0.7.31" + } + }, + "node_modules/@amplitude/analytics-core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@amplitude/analytics-core/-/analytics-core-0.12.0.tgz", + "integrity": "sha512-Qg5own7VApdEOUtOnKwk7vFKbXubZ/YBQq0COYK+QFMCp0eF1xwLLLEiE4ThYiq49EwptvinH/bziU6IMi205g==", + "dependencies": { + "@amplitude/analytics-types": "^0.17.0", + "tslib": "^2.4.1" + } + }, + "node_modules/@amplitude/analytics-react-native": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@amplitude/analytics-react-native/-/analytics-react-native-1.1.1.tgz", + "integrity": "sha512-ybbpCUzjGO1E04J58TOi0vn2YMpCYSiq+nESkV6eVwZ5pyVmiYgtLvdkUg9Kr+vtR78ocD6S5HXKCFTER+cCcA==", + "dependencies": { + "@amplitude/analytics-client-common": "^0.6.1", + "@amplitude/analytics-core": "^0.12.0", + "@amplitude/analytics-types": "^0.17.0", + "@amplitude/ua-parser-js": "^0.7.31", + "@react-native-async-storage/async-storage": "^1.17.11", + "tslib": "^2.4.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@amplitude/analytics-types": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@amplitude/analytics-types/-/analytics-types-0.17.0.tgz", + "integrity": "sha512-J6JdlUkYPaOInsqYBBOjxwhYi+3ZFl+ICE6yG/1SySX/Eu7a7jAJbBbrH1HrYk+0Hzl5sdO/WA2zhHi0j00qTQ==" + }, + "node_modules/@amplitude/ua-parser-js": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@amplitude/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-+z8UGRaj13Pt5NDzOnkTBy49HE2CX64jeL0ArB86HAtilpnfkPB7oqkigN7Lf2LxscMg4QhFD7mmCfedh3rqTg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@apollo/react-common": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@apollo/react-common/-/react-common-3.1.4.tgz", + "integrity": "sha512-X5Kyro73bthWSCBJUC5XYQqMnG0dLWuDZmVkzog9dynovhfiVCV4kPSdgSIkqnb++cwCzOVuQ4rDKVwo2XRzQA==", + "dependencies": { + "ts-invariant": "^0.4.4", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": "^16.8.0", + "apollo-client": "^2.6.4", + "apollo-utilities": "^1.3.2", + "graphql": "^14.3.1", + "react": "^16.8.0" + } + }, + "node_modules/@apollo/react-common/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@apollo/react-components": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@apollo/react-components/-/react-components-3.1.5.tgz", + "integrity": "sha512-c82VyUuE9VBnJB7bnX+3dmwpIPMhyjMwyoSLyQWPHxz8jK4ak30XszJtqFf4eC4hwvvLYa+Ou6X73Q8V8e2/jg==", + "dependencies": { + "@apollo/react-common": "^3.1.4", + "@apollo/react-hooks": "^3.1.5", + "prop-types": "^15.7.2", + "ts-invariant": "^0.4.4", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": "^16.8.0", + "apollo-cache": "^1.3.2", + "apollo-client": "^2.6.4", + "apollo-link": "^1.2.12", + "apollo-utilities": "^1.3.2", + "graphql": "^14.3.1", + "react": "^16.8.0", + "react-dom": "^16.8.0" + } + }, + "node_modules/@apollo/react-components/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@apollo/react-hoc": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@apollo/react-hoc/-/react-hoc-3.1.5.tgz", + "integrity": "sha512-jlZ2pvEnRevLa54H563BU0/xrYSgWQ72GksarxUzCHQW85nmn9wQln0kLBX7Ua7SBt9WgiuYQXQVechaaCulfQ==", + "dependencies": { + "@apollo/react-common": "^3.1.4", + "@apollo/react-components": "^3.1.5", + "hoist-non-react-statics": "^3.3.0", + "ts-invariant": "^0.4.4", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": "^16.8.0", + "apollo-client": "^2.6.4", + "graphql": "^14.3.1", + "react": "^16.8.0", + "react-dom": "^16.8.0" + } + }, + "node_modules/@apollo/react-hoc/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@apollo/react-hooks": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@apollo/react-hooks/-/react-hooks-3.1.5.tgz", + "integrity": "sha512-y0CJ393DLxIIkksRup4nt+vSjxalbZBXnnXxYbviq/woj+zKa431zy0yT4LqyRKpFy9ahMIwxBnBwfwIoupqLQ==", + "dependencies": { + "@apollo/react-common": "^3.1.4", + "@wry/equality": "^0.1.9", + "ts-invariant": "^0.4.4", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "@types/react": "^16.8.0", + "apollo-client": "^2.6.4", + "graphql": "^14.3.1", + "react": "^16.8.0", + "react-dom": "^16.8.0" + } + }, + "node_modules/@apollo/react-hooks/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@apollo/react-ssr": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@apollo/react-ssr/-/react-ssr-3.1.5.tgz", + "integrity": "sha512-wuLPkKlctNn3u8EU8rlECyktpOUCeekFfb0KhIKknpGY6Lza2Qu0bThx7D9MIbVEzhKadNNrzLcpk0Y8/5UuWg==", + "dependencies": { + "@apollo/react-common": "^3.1.4", + "@apollo/react-hooks": "^3.1.5", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "react": "^16.8.0", + "react-dom": "^16.8.0" + } + }, + "node_modules/@apollo/react-ssr/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz", + "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.3.tgz", + "integrity": "sha512-qIJONzoa/qiHghnm0l1n4i/6IIziDpzqc36FBs4pzMhDUraHqponwJLiAKm1hGLP3OSB/TVNz6rMwVGpwxxySw==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helpers": "^7.21.0", + "@babel/parser": "^7.21.3", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.3", + "@babel/types": "^7.21.3", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz", + "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==", + "dependencies": { + "@babel/types": "^7.21.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.0.tgz", + "integrity": "sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-member-expression-to-functions": "^7.21.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.0.tgz", + "integrity": "sha512-N+LaFW/auRSWdx7SHD/HiARwXQju1vXTW4fKr4u5SgBUTm51OKEjKgj+cs00ggW3kEvNqwErnlwuq7Y3xBe4eg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", + "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz", + "integrity": "sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==", + "dependencies": { + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz", + "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.2", + "@babel/types": "^7.21.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", + "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz", + "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==", + "dependencies": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.21.0", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", + "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz", + "integrity": "sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz", + "integrity": "sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/plugin-syntax-decorators": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-default-from": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz", + "integrity": "sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-default-from": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dependencies": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz", + "integrity": "sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz", + "integrity": "sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-default-from": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz", + "integrity": "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz", + "integrity": "sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz", + "integrity": "sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz", + "integrity": "sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz", + "integrity": "sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz", + "integrity": "sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-flow": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz", + "integrity": "sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "dependencies": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.21.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz", + "integrity": "sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==", + "dependencies": { + "@babel/helper-module-transforms": "^7.21.2", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-assign": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.18.6.tgz", + "integrity": "sha512-mQisZ3JfqWh2gVXvfqYCAAyRs6+7oev+myBsTwW5RnPhYXOTuCEw2oe3YgxlXMViXUS53lG8koulI7mJ+8JE+A==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", + "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz", + "integrity": "sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz", + "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz", + "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.0.tgz", + "integrity": "sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==", + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz", + "integrity": "sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-typescript": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-flow": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.18.6.tgz", + "integrity": "sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-flow-strip-types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.21.0.tgz", + "integrity": "sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==", + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.21.0", + "@babel/plugin-transform-typescript": "^7.21.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.21.0.tgz", + "integrity": "sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw==", + "dependencies": { + "clone-deep": "^4.0.1", + "find-cache-dir": "^2.0.0", + "make-dir": "^2.1.0", + "pirates": "^4.0.5", + "source-map-support": "^0.5.16" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/register/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/register/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@babel/register/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" + }, + "node_modules/@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz", + "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.21.3", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.21.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.21.3", + "@babel/types": "^7.21.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz", + "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.3.0.tgz", + "integrity": "sha512-v3oplH6FYCULtFuCeqyuTd9D2WKO937Dxdq+GmHOLL72TTRriLxz2VLlNfkZRsvj6PKnOPAtuT6dwrs/pA5DvA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", + "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", + "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.5.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@expo/bunyan": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.0.tgz", + "integrity": "sha512-Ydf4LidRB/EBI+YrB+cVLqIseiRfjUI/AeHBgjGMtq3GroraDu81OV7zqophRgupngoL3iS3JUMDMnxO7g39qA==", + "engines": [ + "node >=0.10.0" + ], + "dependencies": { + "uuid": "^8.0.0" + }, + "optionalDependencies": { + "mv": "~2", + "safe-json-stringify": "~1" + } + }, + "node_modules/@expo/bunyan/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@expo/cli": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.4.11.tgz", + "integrity": "sha512-L9Ci9RBh0aPFEDF1AjDYPk54OgeUJIKzxF3lRgITm+lQpI3IEKjAc9LaYeQeO1mlZMUQmPkHArF8iyz1eOeVoQ==", + "dependencies": { + "@babel/runtime": "^7.14.0", + "@expo/code-signing-certificates": "0.0.5", + "@expo/config": "~7.0.2", + "@expo/config-plugins": "~5.0.3", + "@expo/dev-server": "0.1.124", + "@expo/devcert": "^1.0.0", + "@expo/json-file": "^8.2.35", + "@expo/metro-config": "~0.5.0", + "@expo/osascript": "^2.0.31", + "@expo/package-manager": "~0.0.53", + "@expo/plist": "^0.0.18", + "@expo/prebuild-config": "5.0.7", + "@expo/rudder-sdk-node": "1.1.1", + "@expo/spawn-async": "1.5.0", + "@expo/xcpretty": "^4.2.1", + "@urql/core": "2.3.6", + "@urql/exchange-retry": "0.3.0", + "accepts": "^1.3.8", + "arg": "4.1.0", + "better-opn": "~3.0.2", + "bplist-parser": "^0.3.1", + "cacache": "^15.3.0", + "chalk": "^4.0.0", + "ci-info": "^3.3.0", + "debug": "^4.3.4", + "env-editor": "^0.4.1", + "form-data": "^3.0.1", + "freeport-async": "2.0.0", + "fs-extra": "~8.1.0", + "getenv": "^1.0.0", + "graphql": "15.8.0", + "graphql-tag": "^2.10.1", + "https-proxy-agent": "^5.0.1", + "internal-ip": "4.3.0", + "is-root": "^2.1.0", + "js-yaml": "^3.13.1", + "json-schema-deref-sync": "^0.13.0", + "md5-file": "^3.2.3", + "md5hex": "^1.0.0", + "minipass": "3.1.6", + "node-fetch": "^2.6.7", + "node-forge": "^1.3.1", + "npm-package-arg": "^7.0.0", + "ora": "3.4.0", + "pretty-bytes": "5.6.0", + "progress": "2.0.3", + "prompts": "^2.3.2", + "qrcode-terminal": "0.11.0", + "requireg": "^0.2.2", + "resolve-from": "^5.0.0", + "semver": "^6.3.0", + "send": "^0.18.0", + "slugify": "^1.3.4", + "structured-headers": "^0.4.1", + "tar": "^6.0.5", + "tempy": "^0.7.1", + "terminal-link": "^2.1.1", + "text-table": "^0.2.0", + "url-join": "4.0.0", + "uuid": "^3.4.0", + "wrap-ansi": "^7.0.0" + }, + "bin": { + "expo-internal": "build/bin/cli" + } + }, + "node_modules/@expo/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@expo/cli/node_modules/graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/@expo/cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/code-signing-certificates": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz", + "integrity": "sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==", + "dependencies": { + "node-forge": "^1.2.1", + "nullthrows": "^1.1.1" + } + }, + "node_modules/@expo/config": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-7.0.3.tgz", + "integrity": "sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, + "node_modules/@expo/config-plugins": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-5.0.4.tgz", + "integrity": "sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==", + "dependencies": { + "@expo/config-types": "^47.0.0", + "@expo/json-file": "8.2.36", + "@expo/plist": "0.0.18", + "@expo/sdk-runtime-versions": "^1.0.0", + "@react-native/normalize-color": "^2.0.0", + "chalk": "^4.1.2", + "debug": "^4.3.1", + "find-up": "~5.0.0", + "getenv": "^1.0.0", + "glob": "7.1.6", + "resolve-from": "^5.0.0", + "semver": "^7.3.5", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.4.23" + } + }, + "node_modules/@expo/config-plugins/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/config-plugins/node_modules/@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/@expo/config-plugins/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/config-plugins/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/config-plugins/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/config-plugins/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@expo/config-plugins/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/config-plugins/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config-plugins/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-plugins/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@expo/config-plugins/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/config-plugins/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/config-plugins/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/config-plugins/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-plugins/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/config-plugins/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/config-plugins/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/@expo/config-plugins/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@expo/config-types": { + "version": "47.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-47.0.0.tgz", + "integrity": "sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==" + }, + "node_modules/@expo/config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/config/node_modules/@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/@expo/config/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/config/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@expo/config/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/config/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/@expo/configure-splash-screen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@expo/configure-splash-screen/-/configure-splash-screen-0.6.0.tgz", + "integrity": "sha512-4DyPoNXJqx9bN4nEwF3HQreo//ECu7gDe1Xor3dnnzFm9P/VDxAKdbEhA0n+R6fgkNfT2onVHWijqvdpTS3Xew==", + "dependencies": { + "color-string": "^1.5.3", + "commander": "^5.1.0", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "lodash": "^4.17.15", + "pngjs": "^5.0.0", + "xcode": "^3.0.0", + "xml-js": "^1.6.11" + }, + "bin": { + "configure-splash-screen": "build/index-cli.js", + "expo-splash-screen": "build/index-cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/configure-splash-screen/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/@expo/configure-splash-screen/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/configure-splash-screen/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@expo/configure-splash-screen/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/dev-server": { + "version": "0.1.124", + "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.1.124.tgz", + "integrity": "sha512-iHczVcf+rgWupCY/3b3ePIizNtzsy1O/w8jdKv3bKvoOfXiVIVOo4KGiVDpAJOahKiMOsRlbKeemB8OLNKzdSA==", + "dependencies": { + "@expo/bunyan": "4.0.0", + "@expo/metro-config": "~0.5.1", + "@expo/osascript": "2.0.33", + "@expo/spawn-async": "^1.5.0", + "body-parser": "^1.20.1", + "chalk": "^4.0.0", + "connect": "^3.7.0", + "fs-extra": "9.0.0", + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1", + "node-fetch": "^2.6.0", + "open": "^8.3.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "serialize-error": "6.0.0", + "temp-dir": "^2.0.0" + } + }, + "node_modules/@expo/dev-server/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/dev-server/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/dev-server/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/dev-server/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@expo/dev-server/node_modules/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/dev-server/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/dev-server/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@expo/dev-server/node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/dev-server/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/dev-server/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/dev-server/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/devcert": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@expo/devcert/-/devcert-1.1.0.tgz", + "integrity": "sha512-ghUVhNJQOCTdQckSGTHctNp/0jzvVoMMkVh+6SHn+TZj8sU15U/npXIDt8NtQp0HedlPaCgkVdMu8Sacne0aEA==", + "dependencies": { + "application-config-path": "^0.1.0", + "command-exists": "^1.2.4", + "debug": "^3.1.0", + "eol": "^0.9.1", + "get-port": "^3.2.0", + "glob": "^7.1.2", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "password-prompt": "^1.0.4", + "rimraf": "^2.6.2", + "sudo-prompt": "^8.2.0", + "tmp": "^0.0.33", + "tslib": "^2.4.0" + } + }, + "node_modules/@expo/devcert/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@expo/image-utils": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.3.22.tgz", + "integrity": "sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ==", + "dependencies": { + "@expo/spawn-async": "1.5.0", + "chalk": "^4.0.0", + "fs-extra": "9.0.0", + "getenv": "^1.0.0", + "jimp-compact": "0.16.1", + "mime": "^2.4.4", + "node-fetch": "^2.6.0", + "parse-png": "^2.1.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "tempy": "0.3.0" + } + }, + "node_modules/@expo/image-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/image-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/image-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/image-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@expo/image-utils/node_modules/crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/image-utils/node_modules/fs-extra": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz", + "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/image-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@expo/image-utils/node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/image-utils/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/image-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils/node_modules/temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/image-utils/node_modules/tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "dependencies": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/image-utils/node_modules/type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@expo/image-utils/node_modules/unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha512-ODgiYu03y5g76A1I9Gt0/chLCzQjvzDy7DsZGsLOE/1MrF6wriEskSncj1+/C58Xk/kPZDppSctDybCwOSaGAg==", + "dependencies": { + "crypto-random-string": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/image-utils/node_modules/universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/json-file": { + "version": "8.2.37", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.37.tgz", + "integrity": "sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/json-file/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/@expo/metro-config": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.5.2.tgz", + "integrity": "sha512-W1qsZPA5BXuRBkNLydKBYQ1+ubObhOK0gk2Fpc+XnhW+UUIHC9sDR5pZRYGNSnDDc3rG8y7c32UzSW9nlK+mog==", + "dependencies": { + "@expo/config": "~7.0.2", + "@expo/json-file": "8.2.36", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "getenv": "^1.0.0", + "resolve-from": "^5.0.0", + "sucrase": "^3.20.0" + } + }, + "node_modules/@expo/metro-config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/metro-config/node_modules/@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/@expo/metro-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/metro-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/metro-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/metro-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@expo/metro-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/metro-config/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@expo/metro-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/metro-config/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/@expo/osascript": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", + "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==", + "dependencies": { + "@expo/spawn-async": "^1.5.0", + "exec-async": "^2.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/package-manager": { + "version": "0.0.60", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-0.0.60.tgz", + "integrity": "sha512-MdV7dpFA4aI8HIW0xsW2DBUem5aFKL8+/v5LXKPZuXmYW02/EXPSp7DBJAwow8ULpa3Q2VlYfb46hWPre3hw4A==", + "dependencies": { + "@expo/json-file": "^8.2.37", + "@expo/spawn-async": "^1.5.0", + "ansi-regex": "^5.0.0", + "chalk": "^4.0.0", + "find-up": "^5.0.0", + "find-yarn-workspace-root": "~2.0.0", + "npm-package-arg": "^7.0.0", + "rimraf": "^3.0.2", + "split": "^1.0.1", + "sudo-prompt": "9.1.1" + } + }, + "node_modules/@expo/package-manager/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/package-manager/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/package-manager/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/package-manager/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@expo/package-manager/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/package-manager/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/package-manager/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/package-manager/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/package-manager/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/package-manager/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@expo/package-manager/node_modules/sudo-prompt": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==" + }, + "node_modules/@expo/package-manager/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/plist": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.18.tgz", + "integrity": "sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==", + "dependencies": { + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "node_modules/@expo/prebuild-config": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-5.0.7.tgz", + "integrity": "sha512-D+TBpJUHe4+oTGFPb4o0rrw/h1xxc6wF+abJnbDHUkhnaeiHkE2O3ByS7FdiZ2FT36t0OKqeSKG/xFwWT3m1Ew==", + "dependencies": { + "@expo/config": "~7.0.2", + "@expo/config-plugins": "~5.0.3", + "@expo/config-types": "^47.0.0", + "@expo/image-utils": "0.3.22", + "@expo/json-file": "8.2.36", + "debug": "^4.3.1", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "7.3.2", + "xml2js": "0.4.23" + }, + "peerDependencies": { + "expo-modules-autolinking": ">=0.8.1" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/json-file": { + "version": "8.2.36", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-8.2.36.tgz", + "integrity": "sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" + } + }, + "node_modules/@expo/prebuild-config/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/prebuild-config/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/@expo/prebuild-config/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@expo/prebuild-config/node_modules/semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/prebuild-config/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@expo/prebuild-config/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/@expo/react-native-action-sheet": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@expo/react-native-action-sheet/-/react-native-action-sheet-4.0.1.tgz", + "integrity": "sha512-FwCFpjpB6yzrK8CIWssLlh/i6zQFytFBiJfNdz0mJ2ckU4hWk8SrjB37P0Q4kF7w0bnIdYzPgRbdPR9hnfFqPw==", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.1", + "hoist-non-react-statics": "^3.3.0" + }, + "peerDependencies": { + "react": ">=16.3.0" + } + }, + "node_modules/@expo/rudder-sdk-node": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz", + "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==", + "dependencies": { + "@expo/bunyan": "^4.0.0", + "@segment/loosely-validate-event": "^2.0.0", + "fetch-retry": "^4.1.1", + "md5": "^2.2.1", + "node-fetch": "^2.6.1", + "remove-trailing-slash": "^0.1.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@expo/rudder-sdk-node/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@expo/sdk-runtime-versions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz", + "integrity": "sha512-Doz2bfiPndXYFPMRwPyGa1k5QaKDVpY806UJj570epIiMzWaYyCtobasyfC++qfIXVb5Ocy7r3tP9d62hAQ7IQ==" + }, + "node_modules/@expo/spawn-async": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@expo/spawn-async/-/spawn-async-1.5.0.tgz", + "integrity": "sha512-LB7jWkqrHo+5fJHNrLAFdimuSXQ2MQ4lA7SQW5bf/HbsXuV2VrT/jN/M8f/KoWt0uJMGN4k/j7Opx4AvOOxSew==", + "dependencies": { + "cross-spawn": "^6.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/spawn-async/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/@expo/spawn-async/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@expo/spawn-async/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@expo/spawn-async/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@expo/spawn-async/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@expo/spawn-async/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/@expo/vector-icons": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-13.0.0.tgz", + "integrity": "sha512-TI+l71+5aSKnShYclFa14Kum+hQMZ86b95SH6tQUG3qZEmLTarvWpKwqtTwQKqvlJSJrpFiSFu3eCuZokY6zWA==" + }, + "node_modules/@expo/xcpretty": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.2.2.tgz", + "integrity": "sha512-Lke/geldJqUV0Dfxg5/QIOugOzdqZ/rQ9yHKSgGbjZtG1uiSqWyFwWvXmrdd3/sIdX33eykGvIcf+OrvvcXVUw==", + "dependencies": { + "@babel/code-frame": "7.10.4", + "chalk": "^4.1.0", + "find-up": "^5.0.0", + "js-yaml": "^4.1.0" + }, + "bin": { + "excpretty": "build/cli.js" + } + }, + "node_modules/@expo/xcpretty/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@expo/xcpretty/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@expo/xcpretty/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/@expo/xcpretty/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@expo/xcpretty/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@expo/xcpretty/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@expo/xcpretty/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/xcpretty/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/xcpretty/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@expo/xcpretty/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/xcpretty/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@expo/xcpretty/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@expo/xcpretty/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@ide/backoff": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@ide/backoff/-/backoff-1.0.0.tgz", + "integrity": "sha512-F0YfUDjvT+Mtt/R4xdl2X0EYCHMMiJqNLdxHD++jDT5ydEFIyqbCHh51Qx2E211dgZprPKhV7sHmnXKpLuvc5g==" + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", + "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", + "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/reporters": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.5.0", + "jest-config": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-resolve-dependencies": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "jest-watcher": "^29.5.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/create-cache-key-function": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.5.0.tgz", + "integrity": "sha512-LIDZyZgnZss7uikvBKBB/USWwG+GO8+GnwRWT+YkCGDGsqLQlhm9BC3z6+7+eMs1kUlvXQIWEzBR8Q2Pnvx6lg==", + "dependencies": { + "@jest/types": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", + "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", + "dev": true, + "dependencies": { + "expect": "^29.5.0", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", + "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", + "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/types": "^29.5.0", + "jest-mock": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", + "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", + "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "dependencies": { + "@sinclair/typebox": "^0.25.16" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", + "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", + "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", + "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", + "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.5.0", + "@jridgewell/trace-mapping": "^0.3.15", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "dependencies": { + "@jest/schemas": "^29.4.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@koale/useworker": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@koale/useworker/-/useworker-4.0.2.tgz", + "integrity": "sha512-xPIPADtom8/3/4FLNj7MvNcBM/Z2FleH85Fdx2O869eoKW8+PoEgtSVvoxWjCWMA46Sm9A5/R1TyzNGc+yM0wg==", + "dependencies": { + "dequal": "^1.0.0" + }, + "peerDependencies": { + "react": "^16.8.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/fs/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/fs/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@ptomasroos/react-native-multi-slider": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@ptomasroos/react-native-multi-slider/-/react-native-multi-slider-2.2.2.tgz", + "integrity": "sha512-HWyCnRD3Z3SbHK2FLWYmBBqd1B4iXipeKv1+AK0FoY/CElEDTEixHE8hN60TsqxalPrznn798LE2Q4tHuCiyaA==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@react-native-async-storage/async-storage": { + "version": "1.17.12", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.17.12.tgz", + "integrity": "sha512-BXg4OxFdjPTRt+8MvN6jz4muq0/2zII3s7HeT/11e4Zeh3WCgk/BleLzUcDfVqF3OzFHUqEkSrb76d6Ndjd/Nw==", + "dependencies": { + "merge-options": "^3.0.4" + }, + "peerDependencies": { + "react-native": "^0.0.0-0 || 0.60 - 0.71 || 1000.0.0" + } + }, + "node_modules/@react-native-community/cli": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-9.2.1.tgz", + "integrity": "sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ==", + "dependencies": { + "@react-native-community/cli-clean": "^9.2.1", + "@react-native-community/cli-config": "^9.2.1", + "@react-native-community/cli-debugger-ui": "^9.0.0", + "@react-native-community/cli-doctor": "^9.2.1", + "@react-native-community/cli-hermes": "^9.2.1", + "@react-native-community/cli-plugin-metro": "^9.2.1", + "@react-native-community/cli-server-api": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", + "@react-native-community/cli-types": "^9.1.0", + "chalk": "^4.1.2", + "commander": "^9.4.0", + "execa": "^1.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.0", + "semver": "^6.3.0" + }, + "bin": { + "react-native": "build/bin.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@react-native-community/cli-clean": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-9.2.1.tgz", + "integrity": "sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==", + "dependencies": { + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "prompts": "^2.4.0" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-clean/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-clean/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-config": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-9.2.1.tgz", + "integrity": "sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==", + "dependencies": { + "@react-native-community/cli-tools": "^9.2.1", + "cosmiconfig": "^5.1.0", + "deepmerge": "^3.2.0", + "glob": "^7.1.3", + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli-config/node_modules/deepmerge": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.3.0.tgz", + "integrity": "sha512-GRQOafGHwMHpjPx9iCvTgpu9NojZ49q794EEL94JVEw6VaeA8XTUyBKvAkOOjBX9oJNiV6G3P+T+tihFjo2TqA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@react-native-community/cli-debugger-ui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-9.0.0.tgz", + "integrity": "sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==", + "dependencies": { + "serve-static": "^1.13.1" + } + }, + "node_modules/@react-native-community/cli-doctor": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-9.3.0.tgz", + "integrity": "sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA==", + "dependencies": { + "@react-native-community/cli-config": "^9.2.1", + "@react-native-community/cli-platform-ios": "^9.3.0", + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "envinfo": "^7.7.2", + "execa": "^1.0.0", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5", + "node-stream-zip": "^1.9.1", + "ora": "^5.4.1", + "prompts": "^2.4.0", + "semver": "^6.3.0", + "strip-ansi": "^5.2.0", + "sudo-prompt": "^9.0.0", + "wcwidth": "^1.0.1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/@react-native-community/cli-platform-ios": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.3.0.tgz", + "integrity": "sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw==", + "dependencies": { + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "glob": "^7.1.3", + "ora": "^5.4.1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-doctor/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@react-native-community/cli-doctor/node_modules/sudo-prompt": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==" + }, + "node_modules/@react-native-community/cli-doctor/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-hermes": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-9.3.1.tgz", + "integrity": "sha512-Mq4PK8m5YqIdaVq5IdRfp4qK09aVO+aiCtd6vjzjNUgk1+1X5cgUqV6L65h4N+TFJYJHcp2AnB+ik1FAYXvYPQ==", + "dependencies": { + "@react-native-community/cli-platform-android": "^9.3.1", + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/@react-native-community/cli-platform-android": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.3.1.tgz", + "integrity": "sha512-m0bQ6Twewl7OEZoVf79I2GZmsDqh+Gh0bxfxWgwxobsKDxLx8/RNItAo1lVtTCgzuCR75cX4EEO8idIF9jYhew==", + "dependencies": { + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "logkitty": "^0.7.1", + "slash": "^3.0.0" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-hermes/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-hermes/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-9.2.1.tgz", + "integrity": "sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg==", + "dependencies": { + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "fs-extra": "^8.1.0", + "glob": "^7.1.3", + "logkitty": "^0.7.1", + "slash": "^3.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.2.1.tgz", + "integrity": "sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg==", + "dependencies": { + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "execa": "^1.0.0", + "glob": "^7.1.3", + "ora": "^5.4.1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-platform-ios/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-plugin-metro": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.2.1.tgz", + "integrity": "sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ==", + "dependencies": { + "@react-native-community/cli-server-api": "^9.2.1", + "@react-native-community/cli-tools": "^9.2.1", + "chalk": "^4.1.2", + "metro": "0.72.3", + "metro-config": "0.72.3", + "metro-core": "0.72.3", + "metro-react-native-babel-transformer": "0.72.3", + "metro-resolver": "0.72.3", + "metro-runtime": "0.72.3", + "readline": "^1.3.0" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-server-api": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-9.2.1.tgz", + "integrity": "sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==", + "dependencies": { + "@react-native-community/cli-debugger-ui": "^9.0.0", + "@react-native-community/cli-tools": "^9.2.1", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.0", + "nocache": "^3.0.1", + "pretty-format": "^26.6.2", + "serve-static": "^1.13.1", + "ws": "^7.5.1" + } + }, + "node_modules/@react-native-community/cli-server-api/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@react-native-community/cli-tools": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-9.2.1.tgz", + "integrity": "sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==", + "dependencies": { + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", + "find-up": "^5.0.0", + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^6.3.0", + "shell-quote": "^1.7.3" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli-tools/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-tools/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-types": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-9.1.0.tgz", + "integrity": "sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==", + "dependencies": { + "joi": "^17.2.1" + } + }, + "node_modules/@react-native-community/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@react-native-community/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@react-native-community/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/@react-native-community/cli/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/@react-native-community/cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/masked-view": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@react-native-community/masked-view/-/masked-view-0.1.11.tgz", + "integrity": "sha512-rQfMIGSR/1r/SyN87+VD8xHHzDYeHaJq6elOSCAD+0iLagXkSI2pfA0LmSXP21uw5i3em7GkkRjfJ8wpqWXZNw==", + "deprecated": "Repository was moved to @react-native-masked-view/masked-view", + "peerDependencies": { + "react": ">=16.0", + "react-native": ">=0.57" + } + }, + "node_modules/@react-native/assets": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@react-native/assets/-/assets-1.0.0.tgz", + "integrity": "sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==" + }, + "node_modules/@react-native/normalize-color": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.1.0.tgz", + "integrity": "sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==" + }, + "node_modules/@react-native/normalize-colors": { + "version": "0.72.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz", + "integrity": "sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw==" + }, + "node_modules/@react-native/polyfills": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-native/polyfills/-/polyfills-2.0.0.tgz", + "integrity": "sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==" + }, + "node_modules/@react-navigation/core": { + "version": "6.4.8", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-6.4.8.tgz", + "integrity": "sha512-klZ9Mcf/P2j+5cHMoGyIeurEzyBM2Uq9+NoSFrF6sdV5iCWHLFhrCXuhbBiQ5wVLCKf4lavlkd/DDs47PXs9RQ==", + "dependencies": { + "@react-navigation/routers": "^6.1.8", + "escape-string-regexp": "^4.0.0", + "nanoid": "^3.1.23", + "query-string": "^7.1.3", + "react-is": "^16.13.0", + "use-latest-callback": "^0.1.5" + }, + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@react-navigation/drawer": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@react-navigation/drawer/-/drawer-6.6.2.tgz", + "integrity": "sha512-6qt4guBdz7bkdo/8BLSCcFNdQdSPYyNn05D9cD+VCY3mGThSiD8bRiP9ju+64im7LsSU+bNWXaP8RxA/FtTVQg==", + "dependencies": { + "@react-navigation/elements": "^1.3.17", + "color": "^4.2.3", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": ">= 1.0.0", + "react-native-reanimated": ">= 1.0.0", + "react-native-safe-area-context": ">= 3.0.0", + "react-native-screens": ">= 3.0.0" + } + }, + "node_modules/@react-navigation/elements": { + "version": "1.3.17", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.17.tgz", + "integrity": "sha512-sui8AzHm6TxeEvWT/NEXlz3egYvCUog4tlXA4Xlb2Vxvy3purVXDq/XsM56lJl344U5Aj/jDzkVanOTMWyk4UA==", + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-safe-area-context": ">= 3.0.0" + } + }, + "node_modules/@react-navigation/native": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-6.1.6.tgz", + "integrity": "sha512-14PmSy4JR8HHEk04QkxQ0ZLuqtiQfb4BV9kkMXD2/jI4TZ+yc43OnO6fQ2o9wm+Bq8pY3DxyerC2AjNUz+oH7Q==", + "dependencies": { + "@react-navigation/core": "^6.4.8", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.1.23" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/@react-navigation/native-stack": { + "version": "6.9.12", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-6.9.12.tgz", + "integrity": "sha512-kS2zXCWP0Rgt7uWaCUKrRl7U2U1Gp19rM1kyRY2YzBPXhWGVPjQ2ygBp88CTQzjgy8M07H/79jvGiZ0mlEJI+g==", + "dependencies": { + "@react-navigation/elements": "^1.3.17", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-safe-area-context": ">= 3.0.0", + "react-native-screens": ">= 3.0.0" + } + }, + "node_modules/@react-navigation/routers": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-6.1.8.tgz", + "integrity": "sha512-CEge+ZLhb1HBrSvv4RwOol7EKLW1QoqVIQlE9TN5MpxS/+VoQvP+cLbuz0Op53/iJfYhtXRFd1ZAd3RTRqto9w==", + "dependencies": { + "nanoid": "^3.1.23" + } + }, + "node_modules/@react-navigation/stack": { + "version": "6.3.16", + "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-6.3.16.tgz", + "integrity": "sha512-KTOn9cNuZ6p154Htbl2DiR95Wl+c7niLPRiGs7gjOkyVDGiaGQF9ODNQTYBDE1OxZGHe/EyYc6T2CbmiItLWDg==", + "dependencies": { + "@react-navigation/elements": "^1.3.17", + "color": "^4.2.3", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-gesture-handler": ">= 1.0.0", + "react-native-safe-area-context": ">= 3.0.0", + "react-native-screens": ">= 3.0.0" + } + }, + "node_modules/@segment/loosely-validate-event": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz", + "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==", + "dependencies": { + "component-type": "^1.2.1", + "join-component": "^1.1.0" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sinclair/typebox": { + "version": "0.25.24", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", + "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==" + }, + "node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", + "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", + "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.3.tgz", + "integrity": "sha512-1kbcJ40lLB7MHsj39U4Sh1uTd2E7rLEa79kmDpI6cy+XiXsteB3POdQomoq4FxszMrO3ZYchkhYJw7A2862b3w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.10", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", + "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==" + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", + "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", + "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==" + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/invariant": { + "version": "2.2.35", + "resolved": "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz", + "integrity": "sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.15.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.3.tgz", + "integrity": "sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==" + }, + "node_modules/@types/prettier": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", + "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" + }, + "node_modules/@types/react": { + "version": "18.0.28", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz", + "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", + "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", + "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "17.0.22", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.22.tgz", + "integrity": "sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" + }, + "node_modules/@types/zen-observable": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", + "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==" + }, + "node_modules/@urql/core": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz", + "integrity": "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.0", + "wonka": "^4.0.14" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/@urql/exchange-retry": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-0.3.0.tgz", + "integrity": "sha512-hHqer2mcdVC0eYnVNbWyi28AlGOPb2vjH3lP3/Bc8Lc8BjhMsDwFMm7WhoP5C1+cfbr/QJ6Er3H/L08wznXxfg==", + "dependencies": { + "@urql/core": ">=2.3.1", + "wonka": "^4.0.14" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/@wry/context": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.4.4.tgz", + "integrity": "sha512-LrKVLove/zw6h2Md/KZyWxIkFM6AoyKp71OqpH9Hiip1csjPVoD3tPxlbQUNxEnHENks3UGgNpSBCAfq9KWuag==", + "dependencies": { + "@types/node": ">=6", + "tslib": "^1.9.3" + } + }, + "node_modules/@wry/context/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@wry/equality": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", + "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", + "dependencies": { + "tslib": "^1.9.3" + } + }, + "node_modules/@wry/equality/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/@xmldom/xmldom": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz", + "integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/absolute-path": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/absolute-path/-/absolute-path-0.0.0.tgz", + "integrity": "sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==" + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-fragments": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", + "dependencies": { + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "node_modules/ansi-fragments/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-fragments/node_modules/colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" + }, + "node_modules/ansi-fragments/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-fragments/node_modules/slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dependencies": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-fragments/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apollo-boost": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/apollo-boost/-/apollo-boost-0.4.9.tgz", + "integrity": "sha512-05y5BKcDaa8w47f8d81UVwKqrAjn8uKLv6QM9fNdldoNzQ+rnOHgFlnrySUZRz9QIT3vPftQkEz2UEASp1Mi5g==", + "dependencies": { + "apollo-cache": "^1.3.5", + "apollo-cache-inmemory": "^1.6.6", + "apollo-client": "^2.6.10", + "apollo-link": "^1.0.6", + "apollo-link-error": "^1.0.3", + "apollo-link-http": "^1.3.1", + "graphql-tag": "^2.4.2", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-boost/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-cache": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.3.5.tgz", + "integrity": "sha512-1XoDy8kJnyWY/i/+gLTEbYLnoiVtS8y7ikBr/IfmML4Qb+CM7dEEbIUOjnY716WqmZ/UpXIxTfJsY7rMcqiCXA==", + "dependencies": { + "apollo-utilities": "^1.3.4", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-cache-inmemory": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/apollo-cache-inmemory/-/apollo-cache-inmemory-1.6.6.tgz", + "integrity": "sha512-L8pToTW/+Xru2FFAhkZ1OA9q4V4nuvfoPecBM34DecAugUZEBhI2Hmpgnzq2hTKZ60LAMrlqiASm0aqAY6F8/A==", + "dependencies": { + "apollo-cache": "^1.3.5", + "apollo-utilities": "^1.3.4", + "optimism": "^0.10.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-cache-inmemory/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-cache-persist": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/apollo-cache-persist/-/apollo-cache-persist-0.1.1.tgz", + "integrity": "sha512-/7GAyblPR169ryW3ugbtHqiU0UGkhIt10NeaO2gn2ClxjLHF/nIkJD5mx/0OCF2vLNbbnzLZVDeIO1pf72TrEA==" + }, + "node_modules/apollo-cache/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-client": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.6.10.tgz", + "integrity": "sha512-jiPlMTN6/5CjZpJOkGeUV0mb4zxx33uXWdj/xQCfAMkuNAC3HN7CvYDyMHHEzmcQ5GV12LszWoQ/VlxET24CtA==", + "dependencies": { + "@types/zen-observable": "^0.8.0", + "apollo-cache": "1.3.5", + "apollo-link": "^1.0.0", + "apollo-utilities": "1.3.4", + "symbol-observable": "^1.0.2", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0", + "zen-observable": "^0.8.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-client/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", + "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", + "dependencies": { + "apollo-utilities": "^1.3.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3", + "zen-observable-ts": "^0.8.21" + }, + "peerDependencies": { + "graphql": "^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-link-context": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/apollo-link-context/-/apollo-link-context-1.0.20.tgz", + "integrity": "sha512-MLLPYvhzNb8AglNsk2NcL9AvhO/Vc9hn2ZZuegbhRHGet3oGr0YH9s30NS9+ieoM0sGT11p7oZ6oAILM/kiRBA==", + "dependencies": { + "apollo-link": "^1.2.14", + "tslib": "^1.9.3" + } + }, + "node_modules/apollo-link-context/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link-error": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/apollo-link-error/-/apollo-link-error-1.1.13.tgz", + "integrity": "sha512-jAZOOahJU6bwSqb2ZyskEK1XdgUY9nkmeclCrW7Gddh1uasHVqmoYc4CKdb0/H0Y1J9lvaXKle2Wsw/Zx1AyUg==", + "dependencies": { + "apollo-link": "^1.2.14", + "apollo-link-http-common": "^0.2.16", + "tslib": "^1.9.3" + } + }, + "node_modules/apollo-link-error/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link-http": { + "version": "1.5.17", + "resolved": "https://registry.npmjs.org/apollo-link-http/-/apollo-link-http-1.5.17.tgz", + "integrity": "sha512-uWcqAotbwDEU/9+Dm9e1/clO7hTB2kQ/94JYcGouBVLjoKmTeJTUPQKcJGpPwUjZcSqgYicbFqQSoJIW0yrFvg==", + "dependencies": { + "apollo-link": "^1.2.14", + "apollo-link-http-common": "^0.2.16", + "tslib": "^1.9.3" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-link-http-common": { + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/apollo-link-http-common/-/apollo-link-http-common-0.2.16.tgz", + "integrity": "sha512-2tIhOIrnaF4UbQHf7kjeQA/EmSorB7+HyJIIrUjJOKBgnXwuexi8aMecRlqTIDWcyVXCeqLhUnztMa6bOH/jTg==", + "dependencies": { + "apollo-link": "^1.2.14", + "ts-invariant": "^0.4.0", + "tslib": "^1.9.3" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-link-http-common/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link-http/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link-state": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/apollo-link-state/-/apollo-link-state-0.4.2.tgz", + "integrity": "sha512-xMPcAfuiPVYXaLwC6oJFIZrKgV3GmdO31Ag2eufRoXpvT0AfJZjdaPB4450Nu9TslHRePN9A3quxNueILlQxlw==", + "dependencies": { + "apollo-utilities": "^1.0.8", + "graphql-anywhere": "^4.1.0-alpha.0" + }, + "peerDependencies": { + "apollo-link": "^1.0.0" + } + }, + "node_modules/apollo-link-ws": { + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/apollo-link-ws/-/apollo-link-ws-1.0.20.tgz", + "integrity": "sha512-mjSFPlQxmoLArpHBeUb2Xj+2HDYeTaJqFGOqQ+I8NVJxgL9lJe84PDWcPah/yMLv3rB7QgBDSuZ0xoRFBPlySw==", + "dependencies": { + "apollo-link": "^1.2.14", + "tslib": "^1.9.3" + }, + "peerDependencies": { + "subscriptions-transport-ws": "^0.9.0" + } + }, + "node_modules/apollo-link-ws/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-link/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/apollo-upload-client": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/apollo-upload-client/-/apollo-upload-client-10.0.1.tgz", + "integrity": "sha512-K6WnuYQi0RRTNO+aSPVjoUWXp4QSr+eoKU4fE0OKQp25XRF2oXl2cTLs+Q4Nk0wOIHM76YGdo/IHtzuNR7jO+A==", + "dependencies": { + "apollo-link": "^1.2.11", + "apollo-link-http-common": "^0.2.13", + "extract-files": "^5.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/apollo-utilities": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", + "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", + "dependencies": { + "@wry/equality": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "ts-invariant": "^0.4.0", + "tslib": "^1.10.0" + }, + "peerDependencies": { + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" + } + }, + "node_modules/apollo-utilities/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/appdirsjs": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==" + }, + "node_modules/application-config-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/application-config-path/-/application-config-path-0.1.1.tgz", + "integrity": "sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==" + }, + "node_modules/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "node_modules/assert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", + "dependencies": { + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-types": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.14.2.tgz", + "integrity": "sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + }, + "node_modules/async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "dev": true + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==", + "dev": true, + "dependencies": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha512-02I9jDjnVEuGy2BR3LRm9nPRb/+Ja0pvZVLr1eI5TYAA/dB0Xoc+WBo50+aDfhGDLhlBY1+QURjn9uvcFd8gzg==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "esutils": "^2.0.2" + } + }, + "node_modules/babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==", + "dev": true, + "dependencies": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==", + "dev": true, + "dependencies": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==", + "dev": true, + "dependencies": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==", + "dev": true, + "dependencies": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", + "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.5.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.5.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", + "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-module-resolver": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz", + "integrity": "sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA==", + "dependencies": { + "find-babel-config": "^1.2.0", + "glob": "^7.1.6", + "pkg-up": "^3.1.0", + "reselect": "^4.0.0", + "resolve": "^1.13.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-react-native-web": { + "version": "0.18.12", + "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.18.12.tgz", + "integrity": "sha512-4djr9G6fMdwQoD6LQ7hOKAm39+y12flWgovAqS1k5O8f42YQ3A1FFMyV5kKfetZuGhZO5BmNmOdRRZQ1TixtDw==" + }, + "node_modules/babel-plugin-react-transform": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-transform/-/babel-plugin-react-transform-3.0.0.tgz", + "integrity": "sha512-4vJGddwPiHAOgshzZdGwYy4zRjjIr5SMY7gkOaCyIASjgpcsyLTlZNuB5rHOFoaTvGlhfo8/g4pobXPyHqm/3w==", + "dev": true, + "dependencies": { + "lodash": "^4.6.1" + } + }, + "node_modules/babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==", + "dev": true + }, + "node_modules/babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA==", + "dev": true + }, + "node_modules/babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA==", + "dev": true + }, + "node_modules/babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==", + "dev": true + }, + "node_modules/babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha512-HbTDIoG1A1op7Tl/wIFQPULIBA61tsJ8Ntq2FAhLwuijrzosM/92kAfgU1Q3Kc7DH/cprJg5vDfuTY4QUL4rDA==", + "dev": true + }, + "node_modules/babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", + "dev": true + }, + "node_modules/babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==", + "dev": true + }, + "node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==", + "dev": true + }, + "node_modules/babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg==", + "dev": true, + "dependencies": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==", + "dev": true, + "dependencies": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==", + "dev": true, + "dependencies": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "dependencies": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "node_modules/babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==", + "dev": true, + "dependencies": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==", + "dev": true, + "dependencies": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" + } + }, + "node_modules/babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha512-TxIM0ZWNw9oYsoTthL3lvAK3+eTujzktoXJg4ubGvICGbVuXVYv5hHv0XXpz8fbqlJaGYY4q5SVzaSmsg3t4Fg==", + "dev": true, + "dependencies": { + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-object-assign": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-assign/-/babel-plugin-transform-object-assign-6.22.0.tgz", + "integrity": "sha512-N6Pddn/0vgLjnGr+mS7ttlFkQthqcnINE9EMOxB0CF8F4t6kuJXz6NUeLfSoRbLmkGh0mgDs9i2isdaZj0Ghtg==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha512-ocgA9VJvyxwt+qJB0ncxV8kb/CjfTcECUY4tQ5VT7nP6Aohzobm8CDFaQ5FHdvZQzLmf0sgDxB8iRXZXxwZcyA==", + "dev": true, + "dependencies": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "node_modules/babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha512-QLYkLiZeeED2PKd4LuXGg5y9fCgPB5ohF8olWUuETE2ryHNRqqnXlEVP7RPuef89+HTfd3syptMGVHeoAu0Wig==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha512-s+q/Y2u2OgDPHRuod3t6zyLoV8pUHc64i/O7ZNgIOEdYTq+ChPeybcKBi/xk9VI60VriILzFPW+dUxAEbTxh2w==", + "dev": true, + "dependencies": { + "babel-helper-builder-react-jsx": "^6.24.1", + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha512-pcDNDsZ9q/6LJmujQ/OhjeoIlp5Nl546HJ2yiFIJK3mYpgNXhI5/S9mXfVxu5yqWAi7HdI7e/q6a9xtzwL69Vw==", + "dev": true, + "dependencies": { + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "node_modules/babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.10.0" + } + }, + "node_modules/babel-plugin-transform-regenerator/node_modules/regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "node_modules/babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-expo": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.2.2.tgz", + "integrity": "sha512-69cSPObZWFz0AaUT6IhCu2VzPVTICUtXzhX5ecoDttFe+9wb9yMV8m7rBNZptJQ3wtiKB5iEL7/wvtKygPz/mQ==", + "dependencies": { + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-object-rest-spread": "^7.12.13", + "@babel/plugin-transform-react-jsx": "^7.12.17", + "@babel/preset-env": "^7.12.9", + "babel-plugin-module-resolver": "^4.1.0", + "babel-plugin-react-native-web": "~0.18.2", + "metro-react-native-babel-preset": "0.72.3" + } + }, + "node_modules/babel-preset-expo/node_modules/metro-react-native-babel-preset": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz", + "integrity": "sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==", + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/babel-preset-fbjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", + "dependencies": { + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-syntax-class-properties": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.0.0", + "@babel/plugin-syntax-jsx": "^7.0.0", + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-block-scoped-functions": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-for-of": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-member-expression-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-object-super": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-property-literals": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-fbjs/node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "7.0.0-beta.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==" + }, + "node_modules/babel-preset-jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", + "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.5.0", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-react-native": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-native/-/babel-preset-react-native-4.0.1.tgz", + "integrity": "sha512-uhFXnl1WbEWNG4W8QB/jeQaVXkd0a0AD+wh4D2VqtdRnEyvscahqyHExnwKLU9N0sXRYwDyed4JfbiBtiOSGgA==", + "dev": true, + "dependencies": { + "babel-plugin-check-es2015-constants": "^6.5.0", + "babel-plugin-react-transform": "^3.0.0", + "babel-plugin-syntax-async-functions": "^6.5.0", + "babel-plugin-syntax-class-properties": "^6.5.0", + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-syntax-flow": "^6.5.0", + "babel-plugin-syntax-jsx": "^6.5.0", + "babel-plugin-syntax-trailing-function-commas": "^6.5.0", + "babel-plugin-transform-class-properties": "^6.5.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.5.0", + "babel-plugin-transform-es2015-block-scoping": "^6.5.0", + "babel-plugin-transform-es2015-classes": "^6.5.0", + "babel-plugin-transform-es2015-computed-properties": "^6.5.0", + "babel-plugin-transform-es2015-destructuring": "^6.5.0", + "babel-plugin-transform-es2015-for-of": "^6.5.0", + "babel-plugin-transform-es2015-function-name": "^6.5.0", + "babel-plugin-transform-es2015-literals": "^6.5.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.5.0", + "babel-plugin-transform-es2015-parameters": "^6.5.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.5.0", + "babel-plugin-transform-es2015-spread": "^6.5.0", + "babel-plugin-transform-es2015-template-literals": "^6.5.0", + "babel-plugin-transform-exponentiation-operator": "^6.5.0", + "babel-plugin-transform-flow-strip-types": "^6.5.0", + "babel-plugin-transform-object-assign": "^6.5.0", + "babel-plugin-transform-object-rest-spread": "^6.5.0", + "babel-plugin-transform-react-display-name": "^6.5.0", + "babel-plugin-transform-react-jsx": "^6.5.0", + "babel-plugin-transform-react-jsx-source": "^6.5.0", + "babel-plugin-transform-regenerator": "^6.5.0", + "babel-template": "^6.24.1", + "react-transform-hmr": "^1.0.4" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "dev": true, + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "node_modules/babel-traverse/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/babel-traverse/node_modules/globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babel-traverse/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/babel-types/node_modules/to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true, + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" + }, + "node_modules/badgin": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/badgin/-/badgin-1.2.3.tgz", + "integrity": "sha512-NQGA7LcfCpSzIbGRbkgjgdWkjy7HI+Th5VLxTJfW5EeaAf3fnS+xWQaQOCYiny+q6QSvxqoSO04vCx+4u++EJw==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/big-integer": { + "version": "1.6.51", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", + "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/blueimp-md5": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.19.0.tgz", + "integrity": "sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/bplist-creator": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", + "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==", + "dependencies": { + "stream-buffers": "2.2.x" + } + }, + "node_modules/bplist-parser": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dependencies": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cacache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001468", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001468.tgz", + "integrity": "sha512-zgAo8D5kbOyUcRAgSmgyuvBkjrGk5CGYG5TYgFdpQv+ywcyEpo1LOWoG8YmoflGnh+V+UsNuKYedsoYs0hzV5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "engines": { + "node": "*" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", + "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" + }, + "node_modules/compare-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-urls/-/compare-urls-2.0.0.tgz", + "integrity": "sha512-eCJcWn2OYFEIqbm70ta7LQowJOOZZqq1a2YbbFCFI1uwSvj+TWMwXVn7vPR1ceFNcAIt5RSTDbwdlX82gYLTkA==", + "dependencies": { + "normalize-url": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/component-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.1.tgz", + "integrity": "sha512-Kgy+2+Uwr75vAi6ChWXgHuLvd+QLD7ssgpaRq2zCvt80ptvAfMc/hijcJxXkBa2wMlEZcJvC2H8Ubo+A9ATHIg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true + }, + "node_modules/core-js-compat": { + "version": "3.29.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.29.1.tgz", + "integrity": "sha512-QmchCua884D8wWskMX8tW5ydINzd8oSJVx38lx/pVkFGqztxt73GYre3pm/hyYq8bPf+MW5In4I/uRShFDsbrA==", + "dependencies": { + "browserslist": "^4.21.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cosmiconfig/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "dependencies": { + "node-fetch": "2.6.7" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "engines": { + "node": "*" + } + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/csstype": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", + "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==" + }, + "node_modules/dag-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", + "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==" + }, + "node_modules/dayjs": { + "version": "1.11.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz", + "integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dependencies": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults/node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/denodeify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/deprecated-react-native-prop-types": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.0.0.tgz", + "integrity": "sha512-q0kk77qFPC4adlnZH7cv9lfbHALeaTkl7wT1uNERc+e0Os3KcBKKy1rVliTE8sfey6TP6OPzoIXpr9OPidvvHw==", + "dependencies": { + "@react-native/normalize-colors": "*", + "invariant": "*", + "prop-types": "*" + } + }, + "node_modules/dequal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-1.0.1.tgz", + "integrity": "sha512-Fx8jxibzkJX2aJgyfSdLhr9tlRoTnHKrRJuu2XHlAgKioN2j19/Bcbe0d4mFXYZ3+wpE2KVobUVTfDutcD17xQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz", + "integrity": "sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.1" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.333", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.333.tgz", + "integrity": "sha512-YyE8+GKyGtPEP1/kpvqsdhD6rA/TP1DUFDN4uiU/YI52NzDxmwHkEb3qjId8hLBa5siJvG0sfC3O66501jMruQ==" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eol": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==" + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-stack-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "dependencies": { + "stackframe": "^1.3.4" + } + }, + "node_modules/errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "dependencies": { + "accepts": "~1.3.7", + "escape-html": "~1.0.3" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-abstract": { + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-object-assign": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==" + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.5.0", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-standard": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", + "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0", + "eslint-plugin-promise": "^6.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", + "has": "^1.0.3", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-promise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz", + "integrity": "sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-standard": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-5.0.0.tgz", + "integrity": "sha512-eSIXPc9wBM4BrniMzJRBm2uoVuXz2EPa+NXPk2+itrVt+r5SbKFERx/IgrK/HmfjddyKVz2f+j+7gBRvu19xLg==", + "deprecated": "standard 16.0.0 and eslint-config-standard 16.0.0 no longer require the eslint-plugin-standard package. You can remove it from your dependencies with 'npm rm eslint-plugin-standard'. More info here: https://github.com/standard/standard/issues/1316", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peerDependencies": { + "eslint": ">=5.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" + }, + "node_modules/exec-async": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", + "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==" + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/expect": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", + "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/expo": { + "version": "47.0.13", + "resolved": "https://registry.npmjs.org/expo/-/expo-47.0.13.tgz", + "integrity": "sha512-9VjjGdViCJ9NfWbUE7brkwFBDvKuA35V345vMtHFYNKoGJjXib36yitmawreMDQFv0kMTqTnzc7T2191Pod7Ng==", + "dependencies": { + "@babel/runtime": "^7.14.0", + "@expo/cli": "0.4.11", + "@expo/config": "7.0.3", + "@expo/config-plugins": "5.0.4", + "@expo/vector-icons": "^13.0.0", + "babel-preset-expo": "~9.2.2", + "cross-spawn": "^6.0.5", + "expo-application": "~5.0.1", + "expo-asset": "~8.7.0", + "expo-constants": "~14.0.2", + "expo-file-system": "~15.1.1", + "expo-font": "~11.0.1", + "expo-keep-awake": "~11.0.1", + "expo-modules-autolinking": "1.0.2", + "expo-modules-core": "1.1.1", + "fbemitter": "^3.0.0", + "getenv": "^1.0.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "node-fetch": "^2.6.7", + "pretty-format": "^26.5.2", + "uuid": "^3.4.0" + }, + "bin": { + "expo": "bin/cli.js" + }, + "optionalDependencies": { + "expo-error-recovery": "~4.0.1" + } + }, + "node_modules/expo-app-loading": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/expo-app-loading/-/expo-app-loading-2.1.1.tgz", + "integrity": "sha512-b3VNkPuFaI9J847HSpjI4uiuyE4+IWyAIPT9uzbkS7QFknL99DMoihtgzeWzKaJKSAmbYc3ph2Vl9skJAkVYUg==", + "dependencies": { + "expo-splash-screen": "~0.17.0" + } + }, + "node_modules/expo-apple-authentication": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/expo-apple-authentication/-/expo-apple-authentication-5.0.1.tgz", + "integrity": "sha512-xdHZb57gQb2eQYQdmZ2M5x4tQOiK1mkL5FW5oYDg9WefN3LMi1ypcjcVTeFstdkdpgwQDx18P2F52JtNA/jJdQ==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-application": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.0.1.tgz", + "integrity": "sha512-bThxK5zH/Lc2tkCvEXGjfM7ayvOVmPWYcWzXsMIU1RtG73TyXo4cq+73FvfDNIWn6gKS0WyMcmoPB3WXEV/jsw==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-asset": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.7.0.tgz", + "integrity": "sha512-lkoNsHK6vf+outISB6/37SonXcAL6Buw0ycjiwQVFfpOBKpkQa+zw5wm1m3KwjH2txmR3xdIzcpWsJkgovYCvQ==", + "dependencies": { + "blueimp-md5": "^2.10.0", + "expo-constants": "~14.0.0", + "expo-file-system": "~15.1.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "path-browserify": "^1.0.0", + "url-parse": "^1.5.9" + } + }, + "node_modules/expo-auth-session": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/expo-auth-session/-/expo-auth-session-3.8.0.tgz", + "integrity": "sha512-pQ8GryTTZL/JKHvifUGD4GGlZWo7RrcoQlvQ0O5m5edYfoa7fMHCg20MBX4Da4P3eVgJlqWZWCHfBC2fZxcRfA==", + "dependencies": { + "expo-constants": "~14.0.0", + "expo-crypto": "~12.0.0", + "expo-linking": "~3.3.0", + "expo-web-browser": "~12.0.0", + "invariant": "^2.2.4", + "qs": "6.9.1" + }, + "peerDependencies": { + "expo-random": "*" + }, + "peerDependenciesMeta": { + "expo-random": { + "optional": true + } + } + }, + "node_modules/expo-auth-session/node_modules/qs": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==", + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/expo-camera": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/expo-camera/-/expo-camera-13.1.0.tgz", + "integrity": "sha512-YD1Gd5nyhk3ekXgVTsTLrhd0Nlug51NI7hjBKq2BOP+X5YyrcZLVarZAXXdc5vgeW73VBYIne1rpX9Q0qJdlrw==", + "dependencies": { + "@koale/useworker": "^4.0.2", + "invariant": "^2.2.4" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-constants": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.0.2.tgz", + "integrity": "sha512-wzV3nrzTXTI8yG0tfas3fnqCfKV6YE+1GphEREyVDAShEB6mBInX1b6HgtpHFy2wOtnml+lPVmTCeGtjjLnZhA==", + "dependencies": { + "@expo/config": "~7.0.2", + "uuid": "^3.3.2" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-contacts": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/expo-contacts/-/expo-contacts-11.0.1.tgz", + "integrity": "sha512-tyoPNySlTgYMnz6dhn47TUpiEbjXYrChruzhsSq0cW/m8Yc8TDT310FuFw0jZQn+FF0a4gMDye2a47YWmtkoOg==", + "dependencies": { + "uuid": "^3.4.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-crypto": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/expo-crypto/-/expo-crypto-12.0.0.tgz", + "integrity": "sha512-2KC52eLYsXndDZOVFyr+K3Zs9wDgpqZ7F7fwAiUg+yNbE21CJrHKDFvo/Br0FAaDf/w9pUks5/qi1azB5sDzvg==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-device": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-5.0.0.tgz", + "integrity": "sha512-FWlbOUMzAjHojLER8fnS42vLT7aqZ7IoEY+nw/RqmW17SA3GE2lzcYxRYZs1vAIgDnLzcS5CQMp08Eu+EXih1g==", + "dependencies": { + "ua-parser-js": "^0.7.19" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-eas-client": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/expo-eas-client/-/expo-eas-client-0.4.1.tgz", + "integrity": "sha512-bIj2rm6lw/iZAOAW5CSAxshSXi2oY+ORpHRp4ZdqSDuwA0RIa9jGyMm1Jhostjjz5y9k2uur5vtVqq6P3Bwx/Q==" + }, + "node_modules/expo-error-recovery": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/expo-error-recovery/-/expo-error-recovery-4.0.1.tgz", + "integrity": "sha512-wceptnRX+N3qCSVTNbIchUFu3GmY30onRH5L66OF8HMLpAIQfrZMLxJfz7SAMJTcr3jxsJ11vSa2l2RaPKgHsQ==", + "optional": true, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-file-system": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.1.1.tgz", + "integrity": "sha512-MYYDKxjLo9VOkvGHqym5EOAUS+ero9O66X5zI+EXJzqNznKvnfScdXeeAaQzShmWtmLkdVDCoYFGOaTvTA1wTQ==", + "dependencies": { + "uuid": "^3.4.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-font": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.0.1.tgz", + "integrity": "sha512-LGAIluWZfru0J0n87dzb6pwAB6TVMTEiLcsd/ktozzbn4DlN7SeQy40+ruU6bvAKCOGrnRneYbKSIOGkrd7oNg==", + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-image-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-4.0.0.tgz", + "integrity": "sha512-hVMhXagsO1cSng5s70IEjuJAuHy2hX/inu5MM3T0ecJMf7L/7detKf22molQBRymerbk6Tzu+20h11eU0n/3jQ==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-image-picker": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/expo-image-picker/-/expo-image-picker-14.0.3.tgz", + "integrity": "sha512-VN5wMWzhYhIRhFq8I1pjMbn/ivjlhWfxzJpz5jUOf3mQ8vxrI5GcR8cJO9kyYwuCrI9W3GUzh/aDt7QRSTQDDA==", + "dependencies": { + "expo-image-loader": "~4.0.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-json-utils": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/expo-json-utils/-/expo-json-utils-0.4.0.tgz", + "integrity": "sha512-lK6gjea72XTYafpKNNJaMrBK5dYAX8LFLXrp/M1MKJU4Zy7EHd2rKrLwop3GZts8VdwLHeVcMko79SAbhe3i5Q==" + }, + "node_modules/expo-keep-awake": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-11.0.1.tgz", + "integrity": "sha512-44ZjgLE4lnce2d40Pv8xsjMVc6R5GvgHOwZfkLYtGmgYG9TYrEJeEj5UfSeweXPL3pBFhXKfFU8xpGYMaHdP0A==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-linking": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/expo-linking/-/expo-linking-3.3.1.tgz", + "integrity": "sha512-T3VIZMyZhkBOpHIyfT514rweGZZMbdg1vwavsfAkm6BFJ8G0iNVGbYMTpoUiQ9xdA0ARCcZbXFFb+WhqEUITgQ==", + "dependencies": { + "@types/qs": "^6.5.3", + "expo-constants": "~14.0.0", + "invariant": "^2.2.4", + "qs": "^6.9.1", + "url-parse": "^1.5.9" + } + }, + "node_modules/expo-localization": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-14.0.0.tgz", + "integrity": "sha512-Rx4ZAANTTVuY6EnM3WXjNWn+CSpDUOaJziHPB4Az+lb4r3JMQ1H+go9s8KY9DYP0IiRM3sQhiyFQqSWzsUgvHA==", + "dependencies": { + "rtl-detect": "^1.0.2" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-location": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/expo-location/-/expo-location-15.0.1.tgz", + "integrity": "sha512-GOAP24m8fMahFcBT75H07f2+IQAOCOdNTzb8Ci/19NZ+Y/CY2lIvb55V8zu7Gn0+76FKPb7XC3ebQaq4ctn1QA==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-manifests": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-0.4.0.tgz", + "integrity": "sha512-IdZjIYDxx4nH0Gb3X4T4/2YknmR/jSLxymAS0m7SfJ9V7Vlu/y0p3lNwUys9/JzihxX9PDIuOi/Y4/uqL6TlXg==", + "dependencies": { + "expo-json-utils": "~0.4.0" + } + }, + "node_modules/expo-modules-autolinking": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.0.2.tgz", + "integrity": "sha512-skAUXERKw1gtSw8xsvft9DE0KVhBvw4dujAtgCZoG2l513fN7ds+B5+30ZVgZATMC+EjtlmjKXzhp5QS44DCFA==", + "dependencies": { + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0" + }, + "bin": { + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" + } + }, + "node_modules/expo-modules-autolinking/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expo-modules-autolinking/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expo-modules-autolinking/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expo-modules-autolinking/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/expo-modules-autolinking/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo-modules-autolinking/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-modules-autolinking/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-modules-autolinking/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/expo-modules-autolinking/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo-modules-autolinking/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/expo-modules-autolinking/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-modules-autolinking/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/expo-modules-autolinking/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-modules-core": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.1.1.tgz", + "integrity": "sha512-+AcaYmaWphIfkBcccu65dyOhWnpOJ3+SQpoI4lI/Plg1nNjOLuBjmrdVvpiJOvkN+CqbNGsJ5Yll8LLk+C107Q==", + "dependencies": { + "compare-versions": "^3.4.0", + "invariant": "^2.2.4" + } + }, + "node_modules/expo-notifications": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/expo-notifications/-/expo-notifications-0.17.0.tgz", + "integrity": "sha512-PPjV5WaL5iIKAqi/qsNUVf0g4htz+Mx+6tZ/Py7vIurAHbA2PymgV7UPSEB1gUbhzi5PZMGj/DNFJpSZwgqmNg==", + "dependencies": { + "@expo/image-utils": "^0.3.18", + "@ide/backoff": "^1.0.0", + "abort-controller": "^3.0.0", + "assert": "^2.0.0", + "badgin": "^1.1.5", + "expo-application": "~5.0.0", + "expo-constants": "~14.0.0", + "fs-extra": "^9.1.0", + "uuid": "^3.4.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-notifications/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/expo-notifications/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/expo-notifications/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/expo-random": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/expo-random/-/expo-random-13.0.0.tgz", + "integrity": "sha512-aGb0vtUmFFuW0TF1rdOgsz89zEVD/RXUPUnnZy5+i3jJeQ2PerJ4uo72/EuWqHpCBNto8/qT+aCzFinmQDeTAA==", + "dependencies": { + "base64-js": "^1.3.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-sensors": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/expo-sensors/-/expo-sensors-12.0.1.tgz", + "integrity": "sha512-XsrHC7RD8dx9jHiY7DKvMhm14k59uCyKoZki0A0hyOn8NeVG/GUuCZtZwqFog2Ozc4jKidBWQ1OQp5Xq4xJXvQ==", + "dependencies": { + "invariant": "^2.2.4" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-splash-screen": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/expo-splash-screen/-/expo-splash-screen-0.17.5.tgz", + "integrity": "sha512-ejSO78hwHXz8T9u8kh8t4r6CR4h70iBvA65gX8GK+dYxZl6/IANPbIb2VnUpND9vqfW+JnkDw+ZFst+gDnkpcQ==", + "dependencies": { + "@expo/configure-splash-screen": "^0.6.0", + "@expo/prebuild-config": "5.0.7" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-status-bar": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/expo-status-bar/-/expo-status-bar-1.4.4.tgz", + "integrity": "sha512-5DV0hIEWgatSC3UgQuAZBoQeaS9CqeWRZ3vzBR9R/+IUD87Adbi4FGhU10nymRqFXOizGsureButGZIXPs7zEA==" + }, + "node_modules/expo-structured-headers": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/expo-structured-headers/-/expo-structured-headers-3.0.1.tgz", + "integrity": "sha512-x6hkzuQL5HJoyB+xQyBf9M04ZUmrjFWqEW7gzIYWN/6LA+dgyaV4fF6U9++Re+GgGjF03vHJFqR1xYaosKKZYQ==" + }, + "node_modules/expo-tracking-transparency": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/expo-tracking-transparency/-/expo-tracking-transparency-3.0.3.tgz", + "integrity": "sha512-jM/wIEKGV6DlHKNcEWN39HRPosJhRcbCrmfgWVn5A3ILYsWWvM4pToKGz34BLmg/6iTsq+ONNzuQiwBxJJzbWA==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-updates": { + "version": "0.15.6", + "resolved": "https://registry.npmjs.org/expo-updates/-/expo-updates-0.15.6.tgz", + "integrity": "sha512-g5BuCmWdyiLqFaVkVz+m7r6U7MHJrLKvqybs04H6ArMNpTEf6FhUwSzmnCyOkSSP35KFNkC/I0dYlgW3Vcf1sw==", + "dependencies": { + "@expo/code-signing-certificates": "0.0.5", + "@expo/config": "~7.0.2", + "@expo/config-plugins": "~5.0.3", + "@expo/metro-config": "~0.5.0", + "arg": "4.1.0", + "expo-eas-client": "~0.4.0", + "expo-manifests": "~0.4.0", + "expo-structured-headers": "~3.0.0", + "expo-updates-interface": "~0.8.0", + "fbemitter": "^3.0.0", + "resolve-from": "^5.0.0", + "uuid": "^3.4.0" + }, + "bin": { + "expo-updates": "bin/cli.js" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-updates-interface": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/expo-updates-interface/-/expo-updates-interface-0.8.1.tgz", + "integrity": "sha512-1TPFCTQFHMZbltFGnxig3PbN/b6nO4T0RyL8XqdmYvQY0ElOCprZXQQ8vNDqeLYHgausG1lD4OyJwFzh2SNBSA==", + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-web-browser": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/expo-web-browser/-/expo-web-browser-12.0.0.tgz", + "integrity": "sha512-7/RUuE0sv5kf+mTw5/SOnks0Am1ctoxvT1Xi53Nom2EuXTKBV+b2Kf5xAw3ItoW5W4MHJUX3FdNI6qc9sS9+Pw==", + "dependencies": { + "compare-urls": "^2.0.0" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/expo/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/expo/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/expo/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expo/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expo/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-files": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-5.0.1.tgz", + "integrity": "sha512-qRW6y9eKF0VbCyOoOEtFhzJ3uykAw8GKwQVXyAIqwocyEWW4m+v+evec34RwtUkkxxHh7NKBLJ6AnXM8W4dH5w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "dependencies": { + "fbjs": "^3.0.0" + } + }, + "node_modules/fbjs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.4.tgz", + "integrity": "sha512-ucV0tDODnGV3JCnnkmoszb5lf4bNpzjv80K41wd4k798Etq+UYD0y0TIfalLjZoKgjive6/adkRnszwapiDgBQ==", + "dependencies": { + "cross-fetch": "^3.1.5", + "fbjs-css-vars": "^1.0.0", + "loose-envify": "^1.0.0", + "object-assign": "^4.1.0", + "promise": "^7.1.1", + "setimmediate": "^1.0.5", + "ua-parser-js": "^0.7.30" + } + }, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" + }, + "node_modules/fetch-retry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", + "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-babel-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/find-babel-config/-/find-babel-config-1.2.0.tgz", + "integrity": "sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA==", + "dependencies": { + "json5": "^0.5.1", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-babel-config/node_modules/json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dependencies": { + "micromatch": "^4.0.2" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true + }, + "node_modules/flow-parser": { + "version": "0.121.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.121.0.tgz", + "integrity": "sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getenv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-1.0.0.tgz", + "integrity": "sha512-7yetJWqbS9sbn0vIfliPsFgoXMKn/YMF+Wuiog97x+urnSRRRZ7xB+uVkwGKzRgq9CDFfMQnE9ruL5DHv9c6Xg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "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/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/graphql": { + "version": "16.6.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz", + "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/graphql-anywhere": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/graphql-anywhere/-/graphql-anywhere-4.2.8.tgz", + "integrity": "sha512-bKeJJoY9JyWMAiz5isKrtYUdIUBOBiXUOrA9CQgs9Drh9itFtxhWndQH4UBuYfrMticum6Oj1uQ6iSvZk94cMQ==", + "dependencies": { + "apollo-utilities": "^1.3.4", + "ts-invariant": "^0.3.2", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "graphql": ">= 0.11.0" + } + }, + "node_modules/graphql-anywhere/node_modules/ts-invariant": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.3.3.tgz", + "integrity": "sha512-UReOKsrJFGC9tUblgSRWo+BsVNbEd77Cl6WiV/XpMlkifXwNIJbknViCucHvVZkXSC/mcWeRnIGdY7uprcwvdQ==", + "dependencies": { + "tslib": "^1.9.3" + } + }, + "node_modules/graphql-anywhere/node_modules/ts-invariant/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/graphql-tag": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "dependencies": { + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hermes-estree": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.8.0.tgz", + "integrity": "sha512-W6JDAOLZ5pMPMjEiQGLCXSSV7pIBEgRR5zGkxgmzGSXHOxqV5dC/M1Zevqpbm9TZDE5tu358qZf8Vkzmsc+u7Q==" + }, + "node_modules/hermes-parser": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.8.0.tgz", + "integrity": "sha512-yZKalg1fTYG5eOiToLUaw69rQfZq/fi+/NtEXRU7N87K/XobNRhRWorh80oSge2lWUiZfTgUvRJH+XgZWrhoqA==", + "dependencies": { + "hermes-estree": "0.8.0" + } + }, + "node_modules/hermes-profile-transformer": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", + "dependencies": { + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/hermes-profile-transformer/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hosted-git-info": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", + "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/i18n-js": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/i18n-js/-/i18n-js-3.9.2.tgz", + "integrity": "sha512-+Gm8h5HL0emzKhRx2avMKX+nKiVPXeaOZm7Euf2/pbbFcLQoJ3zZYiUykAzoRasijCoWos2Kl1tslmScTgAQKw==" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.6.3.tgz", + "integrity": "sha512-47xSUiQioGaB96nqtp5/q55m0aBQSQdyIloMOc/x+QVTDZLNmXE892IIDrJ0hM1A5vcNUDD5tDffkSP5lCaIIA==", + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==" + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dependencies": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "node_modules/ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-invalid-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", + "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==", + "dependencies": { + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-invalid-path/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-invalid-path/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-valid-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", + "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==", + "dependencies": { + "is-invalid-path": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterall": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", + "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==" + }, + "node_modules/jest": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", + "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/types": "^29.5.0", + "import-local": "^3.0.2", + "jest-cli": "^29.5.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", + "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", + "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/expect": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.5.0", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.5.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", + "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", + "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.5.0", + "@jest/types": "^29.5.0", + "babel-jest": "^29.5.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.5.0", + "jest-environment-node": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-runner": "^29.5.0", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", + "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", + "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", + "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "jest-util": "^29.5.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", + "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-mock": "^29.5.0", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", + "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", + "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.5.0", + "jest-worker": "^29.5.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", + "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-matcher-utils": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", + "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", + "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.5.0", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.5.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", + "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "jest-util": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-react-native": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/jest-react-native/-/jest-react-native-18.0.0.tgz", + "integrity": "sha512-BPL0WBX1kx+qo4KB92o82pcq4uFXH6gmYtN7DDj+etMK6pvtWwPFWpvT9JHmaS96wP5Xf9Vq2ilAxXycgHeMog==", + "dev": true, + "peerDependencies": { + "react-native": ">=0.38.0" + } + }, + "node_modules/jest-regex-util": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", + "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", + "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.5.0", + "jest-validate": "^29.5.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", + "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.4.3", + "jest-snapshot": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", + "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.5.0", + "@jest/environment": "^29.5.0", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.4.3", + "jest-environment-node": "^29.5.0", + "jest-haste-map": "^29.5.0", + "jest-leak-detector": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-resolve": "^29.5.0", + "jest-runtime": "^29.5.0", + "jest-util": "^29.5.0", + "jest-watcher": "^29.5.0", + "jest-worker": "^29.5.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", + "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.5.0", + "@jest/fake-timers": "^29.5.0", + "@jest/globals": "^29.5.0", + "@jest/source-map": "^29.4.3", + "@jest/test-result": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-mock": "^29.5.0", + "jest-regex-util": "^29.4.3", + "jest-resolve": "^29.5.0", + "jest-snapshot": "^29.5.0", + "jest-util": "^29.5.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-serializer": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz", + "integrity": "sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==", + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", + "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.5.0", + "@jest/transform": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.5.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.5.0", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.5.0", + "jest-message-util": "^29.5.0", + "jest-util": "^29.5.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.5.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/jest-util": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", + "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", + "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.5.0", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.4.3", + "leven": "^3.1.0", + "pretty-format": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", + "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.4.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", + "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.5.0", + "@jest/types": "^29.5.0", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.5.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", + "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.5.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jimp-compact": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", + "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==" + }, + "node_modules/joi": { + "version": "17.8.4", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.8.4.tgz", + "integrity": "sha512-jjdRHb5WtL+KgSHvOULQEPPv4kcl+ixd1ybOFQq3rWLgEEqc03QMmilodL0GVJE14U/SQDXkUhQUSZANGDH/AA==", + "dependencies": { + "@hapi/hoek": "^9.0.0", + "@hapi/topo": "^5.0.0", + "@sideway/address": "^4.1.3", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/join-component": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz", + "integrity": "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==" + }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-android": { + "version": "250230.2.1", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250230.2.1.tgz", + "integrity": "sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==" + }, + "node_modules/jscodeshift": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.13.1.tgz", + "integrity": "sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==", + "dependencies": { + "@babel/core": "^7.13.16", + "@babel/parser": "^7.13.16", + "@babel/plugin-proposal-class-properties": "^7.13.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8", + "@babel/plugin-proposal-optional-chaining": "^7.13.12", + "@babel/plugin-transform-modules-commonjs": "^7.13.8", + "@babel/preset-flow": "^7.13.13", + "@babel/preset-typescript": "^7.13.0", + "@babel/register": "^7.13.16", + "babel-core": "^7.0.0-bridge.0", + "chalk": "^4.1.2", + "flow-parser": "0.*", + "graceful-fs": "^4.2.4", + "micromatch": "^3.1.10", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.20.4", + "temp": "^0.8.4", + "write-file-atomic": "^2.3.0" + }, + "bin": { + "jscodeshift": "bin/jscodeshift.js" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" + } + }, + "node_modules/jscodeshift/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jscodeshift/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jscodeshift/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/jscodeshift/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/jscodeshift/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/jscodeshift/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jscodeshift/node_modules/temp": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", + "dependencies": { + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/jscodeshift/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jscodeshift/node_modules/write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dependencies": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-deref-sync": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.13.0.tgz", + "integrity": "sha512-YBOEogm5w9Op337yb6pAT6ZXDqlxAsQCanM3grid8lMWNxRJO/zWEJi3ZzqDL8boWfwhTFym5EFrNgWwpqcBRg==", + "dependencies": { + "clone": "^2.1.2", + "dag-map": "~1.0.0", + "is-valid-path": "^0.1.1", + "lodash": "^4.17.13", + "md5": "~2.2.0", + "memory-cache": "~0.2.0", + "traverse": "~0.6.6", + "valid-url": "~1.0.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/json-schema-deref-sync/node_modules/md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", + "dependencies": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/lint-staged": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.2.0.tgz", + "integrity": "sha512-GbyK5iWinax5Dfw5obm2g2ccUiZXNGtAS4mCbJ0Lv4rq6iEtfBSjOYdcbOtAIFtM114t0vdpViDDetjVTSd8Vw==", + "dev": true, + "dependencies": { + "chalk": "5.2.0", + "cli-truncate": "^3.1.0", + "commander": "^10.0.0", + "debug": "^4.3.4", + "execa": "^7.0.0", + "lilconfig": "2.1.0", + "listr2": "^5.0.7", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.3", + "pidtree": "^0.6.0", + "string-argv": "^0.3.1", + "yaml": "^2.2.1" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", + "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/commander": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", + "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.8.tgz", + "integrity": "sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.19", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.8.0", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/listr2/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/listr2/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/listr2/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.throttle": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" + }, + "node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dependencies": { + "chalk": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-update/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "dependencies": { + "ansi-fragments": "^0.2.1", + "dayjs": "^1.8.15", + "yargs": "^15.1.0" + }, + "bin": { + "logkitty": "bin/logkitty.js" + } + }, + "node_modules/logkitty/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/logkitty/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/logkitty/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/logkitty/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/logkitty/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/logkitty/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/logkitty/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/logkitty/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/md5-file": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz", + "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", + "dependencies": { + "buffer-alloc": "^1.1.0" + }, + "bin": { + "md5-file": "cli.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/md5hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz", + "integrity": "sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==" + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha512-nOBDrc/wgpkd3X/JOhMqYR+/eLqlfLP4oQfoBA6QExIxEl+GU01oyEkwWyueyO8110pUKijtiHGhEmYoOn88oQ==", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mem/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/memoize-one": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + }, + "node_modules/memory-cache": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", + "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==" + }, + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/metro": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.72.3.tgz", + "integrity": "sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "absolute-path": "^0.0.0", + "accepts": "^1.3.7", + "async": "^3.2.2", + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "connect": "^3.6.5", + "debug": "^2.2.0", + "denodeify": "^1.2.1", + "error-stack-parser": "^2.0.6", + "fs-extra": "^1.0.0", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.8.0", + "image-size": "^0.6.0", + "invariant": "^2.2.4", + "jest-worker": "^27.2.0", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.72.3", + "metro-cache": "0.72.3", + "metro-cache-key": "0.72.3", + "metro-config": "0.72.3", + "metro-core": "0.72.3", + "metro-file-map": "0.72.3", + "metro-hermes-compiler": "0.72.3", + "metro-inspector-proxy": "0.72.3", + "metro-minify-uglify": "0.72.3", + "metro-react-native-babel-preset": "0.72.3", + "metro-resolver": "0.72.3", + "metro-runtime": "0.72.3", + "metro-source-map": "0.72.3", + "metro-symbolicate": "0.72.3", + "metro-transform-plugins": "0.72.3", + "metro-transform-worker": "0.72.3", + "mime-types": "^2.1.27", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "rimraf": "^2.5.4", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "temp": "0.8.3", + "throat": "^5.0.0", + "ws": "^7.5.1", + "yargs": "^15.3.1" + }, + "bin": { + "metro": "src/cli.js" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.72.3.tgz", + "integrity": "sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw==", + "dependencies": { + "@babel/core": "^7.14.0", + "hermes-parser": "0.8.0", + "metro-source-map": "0.72.3", + "nullthrows": "^1.1.1" + } + }, + "node_modules/metro-cache": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.72.3.tgz", + "integrity": "sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A==", + "dependencies": { + "metro-core": "0.72.3", + "rimraf": "^2.5.4" + } + }, + "node_modules/metro-cache-key": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.72.3.tgz", + "integrity": "sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg==" + }, + "node_modules/metro-config": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.72.3.tgz", + "integrity": "sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw==", + "dependencies": { + "cosmiconfig": "^5.0.5", + "jest-validate": "^26.5.2", + "metro": "0.72.3", + "metro-cache": "0.72.3", + "metro-core": "0.72.3", + "metro-runtime": "0.72.3" + } + }, + "node_modules/metro-config/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/metro-config/node_modules/@types/yargs": { + "version": "15.0.15", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", + "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/metro-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro-config/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/metro-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/metro-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-config/node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/metro-config/node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/metro-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-core": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.72.3.tgz", + "integrity": "sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A==", + "dependencies": { + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.72.3" + } + }, + "node_modules/metro-file-map": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.72.3.tgz", + "integrity": "sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA==", + "dependencies": { + "abort-controller": "^3.0.0", + "anymatch": "^3.0.3", + "debug": "^2.2.0", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "invariant": "^2.2.4", + "jest-regex-util": "^27.0.6", + "jest-serializer": "^27.0.6", + "jest-util": "^27.2.0", + "jest-worker": "^27.2.0", + "micromatch": "^4.0.4", + "walker": "^1.0.7" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" + } + }, + "node_modules/metro-file-map/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/metro-file-map/node_modules/@types/yargs": { + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.5.tgz", + "integrity": "sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/metro-file-map/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro-file-map/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro-file-map/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-file-map/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/metro-file-map/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro-file-map/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-file-map/node_modules/jest-regex-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/metro-file-map/node_modules/jest-util": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/metro-file-map/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/metro-file-map/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/metro-file-map/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/metro-file-map/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-hermes-compiler": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-hermes-compiler/-/metro-hermes-compiler-0.72.3.tgz", + "integrity": "sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg==" + }, + "node_modules/metro-inspector-proxy": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.72.3.tgz", + "integrity": "sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw==", + "dependencies": { + "connect": "^3.6.5", + "debug": "^2.2.0", + "ws": "^7.5.1", + "yargs": "^15.3.1" + }, + "bin": { + "metro-inspector-proxy": "src/cli.js" + } + }, + "node_modules/metro-inspector-proxy/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro-inspector-proxy/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/metro-inspector-proxy/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro-inspector-proxy/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/metro-inspector-proxy/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro-inspector-proxy/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/metro-inspector-proxy/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/metro-inspector-proxy/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/metro-inspector-proxy/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/metro-inspector-proxy/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/metro-minify-uglify": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.72.3.tgz", + "integrity": "sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA==", + "dependencies": { + "uglify-es": "^3.1.9" + } + }, + "node_modules/metro-react-native-babel-preset": { + "version": "0.75.1", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.75.1.tgz", + "integrity": "sha512-a4Se/koIVsH+wmfWsSOiRpFLBSICJcbd6o1wv37QRoFSnH7mYXDOfYxNBZYX46PwN1QwmgR49Iwsef79JOaJMg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.18.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.4.0" + }, + "engines": { + "node": ">=14.17.0" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro-react-native-babel-transformer": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.72.3.tgz", + "integrity": "sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA==", + "dependencies": { + "@babel/core": "^7.14.0", + "babel-preset-fbjs": "^3.4.0", + "hermes-parser": "0.8.0", + "metro-babel-transformer": "0.72.3", + "metro-react-native-babel-preset": "0.72.3", + "metro-source-map": "0.72.3", + "nullthrows": "^1.1.1" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro-react-native-babel-transformer/node_modules/metro-react-native-babel-preset": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz", + "integrity": "sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==", + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro-resolver": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.72.3.tgz", + "integrity": "sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w==", + "dependencies": { + "absolute-path": "^0.0.0" + } + }, + "node_modules/metro-runtime": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.72.3.tgz", + "integrity": "sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "react-refresh": "^0.4.0" + } + }, + "node_modules/metro-source-map": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.72.3.tgz", + "integrity": "sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ==", + "dependencies": { + "@babel/traverse": "^7.14.0", + "@babel/types": "^7.0.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.72.3", + "nullthrows": "^1.1.1", + "ob1": "0.72.3", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + } + }, + "node_modules/metro-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-symbolicate": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.72.3.tgz", + "integrity": "sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw==", + "dependencies": { + "invariant": "^2.2.4", + "metro-source-map": "0.72.3", + "nullthrows": "^1.1.1", + "source-map": "^0.5.6", + "through2": "^2.0.1", + "vlq": "^1.0.0" + }, + "bin": { + "metro-symbolicate": "src/index.js" + }, + "engines": { + "node": ">=8.3" + } + }, + "node_modules/metro-symbolicate/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-transform-plugins": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.72.3.tgz", + "integrity": "sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg==", + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.14.0", + "nullthrows": "^1.1.1" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.72.3.tgz", + "integrity": "sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ==", + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/generator": "^7.14.0", + "@babel/parser": "^7.14.0", + "@babel/types": "^7.0.0", + "babel-preset-fbjs": "^3.4.0", + "metro": "0.72.3", + "metro-babel-transformer": "0.72.3", + "metro-cache": "0.72.3", + "metro-cache-key": "0.72.3", + "metro-hermes-compiler": "0.72.3", + "metro-source-map": "0.72.3", + "metro-transform-plugins": "0.72.3", + "nullthrows": "^1.1.1" + } + }, + "node_modules/metro/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/metro/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/metro/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/metro/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/metro/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/metro/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/metro/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/metro/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/metro/node_modules/fs-extra": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-1.0.0.tgz", + "integrity": "sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0" + } + }, + "node_modules/metro/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/metro/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/metro/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/metro/node_modules/metro-react-native-babel-preset": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz", + "integrity": "sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==", + "dependencies": { + "@babel/core": "^7.14.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.0.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.0.0", + "@babel/plugin-syntax-dynamic-import": "^7.0.0", + "@babel/plugin-syntax-export-default-from": "^7.0.0", + "@babel/plugin-syntax-flow": "^7.2.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", + "@babel/plugin-syntax-optional-chaining": "^7.0.0", + "@babel/plugin-transform-arrow-functions": "^7.0.0", + "@babel/plugin-transform-async-to-generator": "^7.0.0", + "@babel/plugin-transform-block-scoping": "^7.0.0", + "@babel/plugin-transform-classes": "^7.0.0", + "@babel/plugin-transform-computed-properties": "^7.0.0", + "@babel/plugin-transform-destructuring": "^7.0.0", + "@babel/plugin-transform-exponentiation-operator": "^7.0.0", + "@babel/plugin-transform-flow-strip-types": "^7.0.0", + "@babel/plugin-transform-function-name": "^7.0.0", + "@babel/plugin-transform-literals": "^7.0.0", + "@babel/plugin-transform-modules-commonjs": "^7.0.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0", + "@babel/plugin-transform-parameters": "^7.0.0", + "@babel/plugin-transform-react-display-name": "^7.0.0", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/plugin-transform-react-jsx-self": "^7.0.0", + "@babel/plugin-transform-react-jsx-source": "^7.0.0", + "@babel/plugin-transform-runtime": "^7.0.0", + "@babel/plugin-transform-shorthand-properties": "^7.0.0", + "@babel/plugin-transform-spread": "^7.0.0", + "@babel/plugin-transform-sticky-regex": "^7.0.0", + "@babel/plugin-transform-template-literals": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.5.0", + "@babel/plugin-transform-unicode-regex": "^7.0.0", + "@babel/template": "^7.0.0", + "react-refresh": "^0.4.0" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/metro/node_modules/serialize-error": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/metro/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/metro/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "optional": true, + "dependencies": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/mv/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "optional": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mv/node_modules/rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "optional": true, + "dependencies": { + "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "optional": true, + "bin": { + "ncp": "bin/ncp" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/nested-error-stacks": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz", + "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==" + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" + }, + "node_modules/nocache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/node-dir": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", + "dependencies": { + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.10.5" + } + }, + "node_modules/node-fetch": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" + }, + "node_modules/node-releases": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", + "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" + }, + "node_modules/node-stream-zip": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", + "engines": { + "node": ">=0.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/antelle" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dependencies": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/normalize-url/node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url/node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-package-arg": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-7.0.0.tgz", + "integrity": "sha512-xXxr8y5U0kl8dVkz2oK7yZjPBvqM2fwaO5l3Yg13p03v8+E3qQcD0JNhHzjL1vyGgxcKkD0cco+NLR72iuPk3g==", + "dependencies": { + "hosted-git-info": "^3.0.2", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "node_modules/npm-package-arg/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nullthrows": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==" + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ob1": { + "version": "0.72.3", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.72.3.tgz", + "integrity": "sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg==" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optimism": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.10.3.tgz", + "integrity": "sha512-9A5pqGoQk49H6Vhjb9kPgAeeECfUDF6aIICbMDL23kDLStBn1MWk3YvcZ4xWF9CsSf6XEgvRLkXy4xof/56vVw==", + "dependencies": { + "@wry/context": "^0.4.0" + } + }, + "node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "dependencies": { + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dependencies": { + "restore-cursor": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dependencies": { + "mimic-fn": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dependencies": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dependencies": { + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/os-locale/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/os-locale/node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/os-locale/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/os-locale/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/os-locale/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-locale/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-locale/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/os-locale/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", + "dependencies": { + "pngjs": "^3.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/parse-png/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.2.tgz", + "integrity": "sha512-bpuBhROdrhuN3E7G/koAju0WjVw9/uQOG5Co5mokNj0MiOSBVZS1JTwM4zl55hu0WFmIEFvO9cU9sJQiBIYeIA==", + "dependencies": { + "ansi-escapes": "^3.1.0", + "cross-spawn": "^6.0.5" + } + }, + "node_modules/password-prompt/node_modules/ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/password-prompt/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/password-prompt/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/password-prompt/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/password-prompt/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/password-prompt/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/patch-package": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", + "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^4.1.2", + "cross-spawn": "^6.0.5", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^9.0.0", + "is-ci": "^2.0.0", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.6", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^5.6.0", + "slash": "^2.0.0", + "tmp": "^0.0.33", + "yaml": "^1.10.2" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "node": ">=10", + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/patch-package/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/patch-package/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/patch-package/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/patch-package/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/patch-package/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/patch-package/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/patch-package/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/patch-package/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/patch-package/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/patch-package/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/patch-package/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/patch-package/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/patch-package/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/patch-package/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/plist": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz", + "integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==", + "dependencies": { + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/plist/node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.5.tgz", + "integrity": "sha512-3gzuxrHbKUePRBB4ZeU08VNkUcqEHaUaouNt0m7LGP4Hti/NuB07C7PPTM/LkWqXoJYJn2McEo5+kxPNrtQkLQ==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-config-standard": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/prettier-config-standard/-/prettier-config-standard-5.0.0.tgz", + "integrity": "sha512-QK252QwCxlsak8Zx+rPKZU31UdbRcu9iUk9X1ONYtLSO221OgvV9TlKoTf6iPDZtvF3vE2mkgzFIEgSUcGELSQ==", + "dev": true, + "peerDependencies": { + "prettier": "^2.4.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/pretty-format/node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/pretty-format/node_modules/@types/yargs": { + "version": "15.0.15", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.15.tgz", + "integrity": "sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/pretty-format/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/pretty-format/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + }, + "node_modules/pretty-format/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.1.tgz", + "integrity": "sha512-t+x1zEHDjBwkDGY5v5ApnZ/utcd4XYDiJsaQQoptTXgUXX95sDg1elCdJghzicm7n2mbCBJ3uYWr6M22SO19rg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/qrcode-terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==", + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "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", + "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "dependencies": { + "decode-uri-component": "^0.2.2", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.1.0.tgz", + "integrity": "sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-apollo": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/react-apollo/-/react-apollo-3.1.5.tgz", + "integrity": "sha512-xOxMqxORps+WHrUYbjVHPliviomefOpu5Sh35oO3osuOyPTxvrljdfTLGCggMhcXBsDljtS5Oy4g+ijWg3D4JQ==", + "dependencies": { + "@apollo/react-common": "^3.1.4", + "@apollo/react-components": "^3.1.5", + "@apollo/react-hoc": "^3.1.5", + "@apollo/react-hooks": "^3.1.5", + "@apollo/react-ssr": "^3.1.5" + }, + "peerDependencies": { + "@types/react": "^16.8.0", + "apollo-client": "^2.6.4", + "graphql": "^14.3.1", + "react": "^16.8.0", + "react-dom": "^16.8.0" + } + }, + "node_modules/react-deep-force-update": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-1.1.2.tgz", + "integrity": "sha512-WUSQJ4P/wWcusaH+zZmbECOk7H5N2pOIl0vzheeornkIMhu+qrNdGFm0bDZLCb0hSF0jf/kH1SgkNGfBdTc4wA==", + "dev": true + }, + "node_modules/react-devtools-core": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.24.0.tgz", + "integrity": "sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg==", + "dependencies": { + "shell-quote": "^1.6.1", + "ws": "^7" + } + }, + "node_modules/react-devtools-core/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/react-freeze": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.3.tgz", + "integrity": "sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": ">=17.0.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-native": { + "version": "0.70.5", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.70.5.tgz", + "integrity": "sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw==", + "dependencies": { + "@jest/create-cache-key-function": "^29.0.3", + "@react-native-community/cli": "9.2.1", + "@react-native-community/cli-platform-android": "9.2.1", + "@react-native-community/cli-platform-ios": "9.2.1", + "@react-native/assets": "1.0.0", + "@react-native/normalize-color": "2.0.0", + "@react-native/polyfills": "2.0.0", + "abort-controller": "^3.0.0", + "anser": "^1.4.9", + "base64-js": "^1.1.2", + "event-target-shim": "^5.0.1", + "invariant": "^2.2.4", + "jsc-android": "^250230.2.1", + "memoize-one": "^5.0.0", + "metro-react-native-babel-transformer": "0.72.3", + "metro-runtime": "0.72.3", + "metro-source-map": "0.72.3", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "pretty-format": "^26.5.2", + "promise": "^8.0.3", + "react-devtools-core": "4.24.0", + "react-native-codegen": "^0.70.6", + "react-native-gradle-plugin": "^0.70.3", + "react-refresh": "^0.4.0", + "react-shallow-renderer": "^16.15.0", + "regenerator-runtime": "^0.13.2", + "scheduler": "^0.22.0", + "stacktrace-parser": "^0.1.3", + "use-sync-external-store": "^1.0.0", + "whatwg-fetch": "^3.0.0", + "ws": "^6.1.4" + }, + "bin": { + "react-native": "cli.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": "18.1.0" + } + }, + "node_modules/react-native-animatable": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/react-native-animatable/-/react-native-animatable-1.3.3.tgz", + "integrity": "sha512-2ckIxZQAsvWn25Ho+DK3d1mXIgj7tITkrS4pYDvx96WyOttSvzzFeQnM2od0+FUMzILbdHDsDEqZvnz1DYNQ1w==", + "dependencies": { + "prop-types": "^15.7.2" + } + }, + "node_modules/react-native-button": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/react-native-button/-/react-native-button-3.0.1.tgz", + "integrity": "sha512-Tkj7PwATNEXPOX4ubE+P8WnyJMenywU6Es/Bk2r2aR15204+AxSOEB3sp7JDP44LI+tUMetjudNBRRuKQOmoPw==", + "dependencies": { + "prop-types": "^15.5.10" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/react-native-codegen": { + "version": "0.70.6", + "resolved": "https://registry.npmjs.org/react-native-codegen/-/react-native-codegen-0.70.6.tgz", + "integrity": "sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw==", + "dependencies": { + "@babel/parser": "^7.14.0", + "flow-parser": "^0.121.0", + "jscodeshift": "^0.13.1", + "nullthrows": "^1.1.1" + } + }, + "node_modules/react-native-communications": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-native-communications/-/react-native-communications-2.2.1.tgz", + "integrity": "sha512-5+C0X9mopI0+qxyQHzOPEi5v5rxNBQjxydPPiKMQSlX1RBIcJ8uTcqUPssQ9Mo8p6c1IKIWJUSqCj4jAmD0qVQ==" + }, + "node_modules/react-native-flash-message": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/react-native-flash-message/-/react-native-flash-message-0.4.0.tgz", + "integrity": "sha512-ZCVnQj+82cQnWqBtkIVPxMEJxwzWqq8WQcIulUqc9UiCdvWQJRLN0Pe0PvzFs/l/GM2ek6zXSck7LJzUq8pahQ==", + "dependencies": { + "prop-types": "^15.8.1", + "react-native-iphone-screen-helper": "^2.0.2" + }, + "peerDependencies": { + "prop-types": "^15.0 || ^16.0", + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-flatlist-slider": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/react-native-flatlist-slider/-/react-native-flatlist-slider-1.0.6.tgz", + "integrity": "sha512-F1C87eGIte9nfBU/MyNI6OOVKR/uCwFMrjVGv2j5u0LZjBm2WoEso96kPF2j0PIG8+XerD7Y2pmtGdCMCWxtcA==" + }, + "node_modules/react-native-gesture-handler": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.8.0.tgz", + "integrity": "sha512-poOSfz/w0IyD6Qwq7aaIRRfEaVTl1ecQFoyiIbpOpfNTjm2B1niY2FLrdVQIOtIOe+K9nH55Qal04nr4jGkHdQ==", + "dependencies": { + "@egjs/hammerjs": "^2.0.17", + "hoist-non-react-statics": "^3.3.0", + "invariant": "^2.2.4", + "lodash": "^4.17.21", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-gifted-chat": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/react-native-gifted-chat/-/react-native-gifted-chat-1.1.1.tgz", + "integrity": "sha512-dixjMqeNEM16m8zp0DLqyusH5SxUglhAdKEw2qLmeMpJsvqguPVMklT0QUXEw/aWVYr1+YC+UnOA3f4aPdzbsg==", + "dependencies": { + "@expo/react-native-action-sheet": "4.0.1", + "dayjs": "1.8.26", + "prop-types": "15.7.2", + "react-native-communications": "2.2.1", + "react-native-iphone-x-helper": "1.3.1", + "react-native-lightbox-v2": "0.9.0", + "react-native-parsed-text": "0.0.22", + "react-native-safe-area-context": "4.4.1", + "react-native-typing-animation": "0.1.7", + "use-memo-one": "1.1.2", + "uuid": "3.4.0" + }, + "peerDependencies": { + "@expo/react-native-action-sheet": "*", + "dayjs": "*", + "react": "*", + "react-native": "*", + "react-native-communications": "*", + "react-native-lightbox": "*", + "react-native-parsed-text": "*", + "react-native-safe-area-context": "*", + "react-native-typing-animation": "*" + } + }, + "node_modules/react-native-gifted-chat/node_modules/dayjs": { + "version": "1.8.26", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.26.tgz", + "integrity": "sha512-KqtAuIfdNfZR5sJY1Dixr2Is4ZvcCqhb0dZpCOt5dGEFiMzoIbjkTSzUb4QKTCsP+WNpGwUjAFIZrnZvUxxkhw==" + }, + "node_modules/react-native-gifted-chat/node_modules/prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "node_modules/react-native-gradle-plugin": { + "version": "0.70.3", + "resolved": "https://registry.npmjs.org/react-native-gradle-plugin/-/react-native-gradle-plugin-0.70.3.tgz", + "integrity": "sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==" + }, + "node_modules/react-native-iphone-screen-helper": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/react-native-iphone-screen-helper/-/react-native-iphone-screen-helper-2.0.3.tgz", + "integrity": "sha512-gbSnV0iYWQ3hne3inYoueatSJL/Un49biIkHLGKsm7J7QjFhL+/WSPB1sZhQ87lNIANwFh33nvxcjixxR4T+NQ==", + "peerDependencies": { + "react-native": ">=0.42.0" + } + }, + "node_modules/react-native-iphone-x-helper": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.3.1.tgz", + "integrity": "sha512-HOf0jzRnq2/aFUcdCJ9w9JGzN3gdEg0zFE4FyYlp4jtidqU03D5X7ZegGKfT1EWteR0gPBGp9ye5T5FvSWi9Yg==", + "peerDependencies": { + "react-native": ">=0.42.0" + } + }, + "node_modules/react-native-lightbox-v2": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/react-native-lightbox-v2/-/react-native-lightbox-v2-0.9.0.tgz", + "integrity": "sha512-Fc5VFHFj2vokS+OegyTsANKb1CYoUlOtAv+EBH5wtpJn1b5cey6jVXH7136G5+8OC9JmKWSgKHc5thFwOoZTUg==", + "peerDependencies": { + "react": ">=16.8.0", + "react-native": ">=0.61.0" + } + }, + "node_modules/react-native-maps": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/react-native-maps/-/react-native-maps-1.3.2.tgz", + "integrity": "sha512-NB7HGRZOgxxXCWzrhIVucx/bsrEWANvk3DLci1ov4P9MQnEVQYQCCkTxsnaEvO191GeBOCRDyYn6jckqbfMtmg==", + "dependencies": { + "@types/geojson": "^7946.0.8" + }, + "peerDependencies": { + "react": ">= 17.0.1", + "react-native": ">= 0.64.3", + "react-native-web": ">= 0.11" + }, + "peerDependenciesMeta": { + "react-native-web": { + "optional": true + } + } + }, + "node_modules/react-native-material-textfield": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/react-native-material-textfield/-/react-native-material-textfield-0.16.1.tgz", + "integrity": "sha512-pcV/ic3i6vYEODS7pvAMUYJ+evkzIB8cjXtSzkab9rBtYNGRpAlM0Yp8QNnjZ7foZqkj9Ynav0nguWcuJST10A==", + "dependencies": { + "prop-types": "^15.5.9" + }, + "peerDependencies": { + "react": ">=16.3.0", + "react-native": ">=0.55.0" + } + }, + "node_modules/react-native-modal": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/react-native-modal/-/react-native-modal-13.0.1.tgz", + "integrity": "sha512-UB+mjmUtf+miaG/sDhOikRfBOv0gJdBU2ZE1HtFWp6UixW9jCk/bhGdHUgmZljbPpp0RaO/6YiMmQSSK3kkMaw==", + "dependencies": { + "prop-types": "^15.6.2", + "react-native-animatable": "1.3.3" + }, + "peerDependencies": { + "react": "*", + "react-native": ">=0.65.0" + } + }, + "node_modules/react-native-modalize": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/react-native-modalize/-/react-native-modalize-2.1.1.tgz", + "integrity": "sha512-4/7EZWsrUqAAkkAVEnOsSdpAPQaEBewX7TvwFuzgvGDzxKpq3O58I9SnSeU8QtG/r91XYHJNaU5dAuDrcLjUaQ==", + "peerDependencies": { + "react": "> 15.0.0", + "react-native": "> 0.50.0", + "react-native-gesture-handler": "> 1.0.0" + } + }, + "node_modules/react-native-parsed-text": { + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/react-native-parsed-text/-/react-native-parsed-text-0.0.22.tgz", + "integrity": "sha512-hfD83RDXZf9Fvth3DowR7j65fMnlqM9PpxZBGWkzVcUTFtqe6/yPcIoIAgrJbKn6YmtzkivmhWE2MCE4JKBXrQ==", + "dependencies": { + "prop-types": "^15.7.x" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-reanimated": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-2.9.1.tgz", + "integrity": "sha512-309SIhDBwY4F1n6e5Mr5D1uPZm2ESIcmZsGXHUu8hpKX4oIOlZj2MilTk+kHhi05LjChoJkcpfkstotCJmPRPg==", + "dependencies": { + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-transform-object-assign": "^7.16.7", + "@babel/preset-typescript": "^7.16.7", + "@types/invariant": "^2.2.35", + "invariant": "^2.2.4", + "lodash.isequal": "^4.5.0", + "setimmediate": "^1.0.5", + "string-hash-64": "^1.0.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-safe-area-context": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.4.1.tgz", + "integrity": "sha512-N9XTjiuD73ZpVlejHrUWIFZc+6Z14co1K/p1IFMkImU7+avD69F3y+lhkqA2hN/+vljdZrBSiOwXPkuo43nFQA==", + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-screens": { + "version": "3.18.2", + "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.18.2.tgz", + "integrity": "sha512-ANUEuvMUlsYJ1QKukEhzhfrvOUO9BVH9Nzg+6eWxpn3cfD/O83yPBOF8Mx6x5H/2+sMy+VS5x/chWOOo/U7QJw==", + "dependencies": { + "react-freeze": "^1.0.0", + "warn-once": "^0.1.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-star-rating": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/react-native-star-rating/-/react-native-star-rating-1.1.0.tgz", + "integrity": "sha512-ocOYx+BKUvfruvXm45MBbQZtpkVO3PQieBDepB0FaLuxE3vUtDTPzHqXuBes3iCM5oRi5umrnmMUMsM0mEq5ZA==", + "dependencies": { + "prop-types": "^15.5.10", + "react-native-animatable": "^1.2.4", + "react-native-button": "^2.3.0", + "react-native-vector-icons": "^4.5.0" + } + }, + "node_modules/react-native-star-rating/node_modules/react-native-button": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/react-native-button/-/react-native-button-2.4.0.tgz", + "integrity": "sha512-4siaJlpOLeL9fAhX8VU3cnUfcGLe3E2zABDWSKxkF+NiYOd+AnKeYY29WXlV8hXhCFo+Ry7E+alrJ6zjZLTSfg==", + "dependencies": { + "prop-types": "^15.5.10" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/react-native-svg": { + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-13.4.0.tgz", + "integrity": "sha512-B3TwK+H0+JuRhYPzF21AgqMt4fjhCwDZ9QUtwNstT5XcslJBXC0FoTkdZo8IEb1Sv4suSqhZwlAY6lwOv3tHag==", + "dependencies": { + "css-select": "^5.1.0", + "css-tree": "^1.1.3" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-timeline-flatlist": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/react-native-timeline-flatlist/-/react-native-timeline-flatlist-0.8.0.tgz", + "integrity": "sha512-IVfCOxYx7Js84CaUJmtuxq2eyLvoQ1nRO5GG0mri14NH2NbMUwL9VhX19/yI8LpU2bnarlo7kjR6GLUP3DM/iQ==", + "peerDependencies": { + "react-native": ">= 0.58.2" + } + }, + "node_modules/react-native-typing-animation": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/react-native-typing-animation/-/react-native-typing-animation-0.1.7.tgz", + "integrity": "sha512-4H3rF9M+I2yAZpYJcY0Mb29TXkn98QK12rrKSY6LZj1BQD9NNmRZuNXzwX4XHapsIz+N/J8M3p27FOQPbfzqeg==", + "peerDependencies": { + "prop-types": "*", + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-vector-icons": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-4.6.0.tgz", + "integrity": "sha512-rpfhfPiXCK2PX1nrNhdxSMrEGB/Gw/SvKoPM0G2wAkSoqynnes19K0VYI+Up7DqR1rFIpE4hP2erpT1tNx2tfg==", + "dependencies": { + "lodash": "^4.0.0", + "prop-types": "^15.5.10", + "yargs": "^8.0.2" + }, + "bin": { + "generate-icon": "bin/generate-icon.js" + } + }, + "node_modules/react-native-vector-icons/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/react-native-vector-icons/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/cliui/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "node_modules/react-native-vector-icons/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/react-native-vector-icons/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==" + }, + "node_modules/react-native-vector-icons/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-native-vector-icons/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/react-native-vector-icons/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/react-native-vector-icons/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/wrap-ansi/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" + }, + "node_modules/react-native-vector-icons/node_modules/yargs": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", + "integrity": "sha512-3RiZrpLpjrzIAKgGdPktBcMP/eG5bDFlkI+PHle1qwzyVXyDQL+pD/eZaMoOOO0Y7LLBfjpucObuUm/icvbpKQ==", + "dependencies": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^7.0.0" + } + }, + "node_modules/react-native-vector-icons/node_modules/yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha512-WhzC+xgstid9MbVUktco/bf+KJG+Uu6vMX0LN1sLJvwmbCQVxb4D8LzogobonKycNasCZLdOzTAk1SK7+K7swg==", + "dependencies": { + "camelcase": "^4.1.0" + } + }, + "node_modules/react-native-webview": { + "version": "11.23.1", + "resolved": "https://registry.npmjs.org/react-native-webview/-/react-native-webview-11.23.1.tgz", + "integrity": "sha512-bmqsdg4RYOUYD37R9XTrQALm7eD62KbLNPRfgvpLGd1SjaurvAjjsLrLN4mt6yOtKOMKeZvlcAl3x6De6cCQsA==", + "dependencies": { + "escape-string-regexp": "2.0.0", + "invariant": "2.2.4" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" + } + }, + "node_modules/react-native-webview/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/react-native/node_modules/@react-native/normalize-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-native/normalize-color/-/normalize-color-2.0.0.tgz", + "integrity": "sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw==" + }, + "node_modules/react-native/node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dependencies": { + "asap": "~2.0.6" + } + }, + "node_modules/react-native/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/react-proxy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/react-proxy/-/react-proxy-1.1.8.tgz", + "integrity": "sha512-46GkBpZD97R/vV+iw+u6aFACzIHOst9gCl41d5K5vepPBz2i2gqHmXQJWKXsrUsSOdylKahN3sd9taswFN8Wzw==", + "dev": true, + "dependencies": { + "lodash": "^4.6.1", + "react-deep-force-update": "^1.0.0" + } + }, + "node_modules/react-refresh": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-shallow-renderer": { + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", + "dependencies": { + "object-assign": "^4.1.1", + "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-test-renderer": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.2.0.tgz", + "integrity": "sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==", + "dev": true, + "dependencies": { + "react-is": "^18.2.0", + "react-shallow-renderer": "^16.15.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-test-renderer/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/react-test-renderer/node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/react-transform-hmr": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/react-transform-hmr/-/react-transform-hmr-1.0.4.tgz", + "integrity": "sha512-8bK1DWUZynE6swD2jNPbzO5mvhB8fs9Ub5GksoVqYkc9i06FdSLC36qQYjaKOW79KBdsROq2cK0tRKITiEzmyg==", + "dev": true, + "dependencies": { + "global": "^4.3.0", + "react-proxy": "^1.1.7" + } + }, + "node_modules/read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dependencies": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dependencies": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg-up/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "dependencies": { + "pify": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readline": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==" + }, + "node_modules/recast": { + "version": "0.20.5", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.20.5.tgz", + "integrity": "sha512-E5qICoPoNL4yU0H0NoBDntNB0Q5oMSNh9usFctYniLBluTthi3RsQVBXIJNbApOlvSwW/RGxIuokPcAc59J5fQ==", + "dependencies": { + "ast-types": "0.14.2", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/remove-trailing-slash": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz", + "integrity": "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==" + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/requireg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", + "dependencies": { + "nested-error-stacks": "~2.0.1", + "rc": "~1.2.7", + "resolve": "~1.7.1" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/requireg/node_modules/resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "dependencies": { + "path-parse": "^1.0.5" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/reselect": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.7.tgz", + "integrity": "sha512-Zu1xbUt3/OPwsXL46hvOOoQrap2azE7ZQbokq61BQfiXvhewsKDwhMeZjTX9sX0nvw1t/U5Audyn1I9P/m9z0A==" + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated" + }, + "node_modules/resolve.exports": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.1.tgz", + "integrity": "sha512-OEJWVeimw8mgQuj3HfkNl4KqRevH7lzeQNaWRPfx0PPse7Jk6ozcsG4FKVgtzDsC1KUF+YlTHh17NcgHOPykLw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rtl-detect": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.0.4.tgz", + "integrity": "sha512-EBR4I2VDSSYr7PkBmFy04uhycIpDKp+21p/jARYXlCSjQksTBQcJ0HFUPOO79EPPH5JS6VAhiIQbycf0O3JAxQ==" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "optional": true + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/scheduler": { + "version": "0.22.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.22.0.tgz", + "integrity": "sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-error": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-6.0.0.tgz", + "integrity": "sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA==", + "dependencies": { + "type-fest": "^0.12.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", + "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.0.tgz", + "integrity": "sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-plist": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/simple-plist/-/simple-plist-1.3.1.tgz", + "integrity": "sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==", + "dependencies": { + "bplist-creator": "0.1.0", + "bplist-parser": "0.3.1", + "plist": "^3.0.5" + } + }, + "node_modules/simple-plist/node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slugify": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.5.tgz", + "integrity": "sha512-8mo9bslnBO3tr5PEVFzMPIWwWnipGS0xVbYf65zxDqfNwmzYn1LpiKNrR6DlClusuvo+hDHd1zKpmfAe83NQSQ==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", + "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==" + }, + "node_modules/split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stackframe": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-buffers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz", + "integrity": "sha512-uyQK/mx5QjHun80FLJTfaWE7JtwfRMKBLkMne6udYOmvH0CawotVa7TfgYHzAnpphn4+TweIx1QKMnRIbipmUg==", + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-hash-64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string-hash-64/-/string-hash-64-1.0.3.tgz", + "integrity": "sha512-D5OKWKvDhyVWWn2x5Y9b+37NUllks34q1dCDhk/vYcso9fmhs+Tl3KR/gE4v5UNj2UA35cnX4KdVVGkG1deKqw==" + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/structured-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", + "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==" + }, + "node_modules/subscriptions-transport-ws": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.11.0.tgz", + "integrity": "sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==", + "deprecated": "The `subscriptions-transport-ws` package is no longer maintained. We recommend you use `graphql-ws` instead. For help migrating Apollo software to `graphql-ws`, see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws For general help using `graphql-ws`, see https://github.com/enisdenjo/graphql-ws/blob/master/README.md", + "dependencies": { + "backo2": "^1.0.2", + "eventemitter3": "^3.1.0", + "iterall": "^1.2.1", + "symbol-observable": "^1.0.4", + "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependencies": { + "graphql": "^15.7.2 || ^16.0.0" + } + }, + "node_modules/sucrase": { + "version": "3.29.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.29.0.tgz", + "integrity": "sha512-bZPAuGA5SdFHuzqIhTAqt9fvNEo9rESqXIG3oiKdF8K4UmkQxC4KlNL3lVyAErXp+mPvUqZ5l13qx6TrDIGf3A==", + "dependencies": { + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sudo-prompt": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-8.2.5.tgz", + "integrity": "sha512-rlBo3HU/1zAJUrkY6jNxDOC9eVYliG6nS4JA8u8KAshITd07tafMc/Br7xQwCSseXwJ2iCcHCE8SNWX3q8Z+kw==" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz", + "integrity": "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/temp": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha512-jtnWJs6B1cZlHs9wPG7BrowKxZw/rf6+UpGAkr8AaYmiTyTO7zQlLoST8zx/8TcUPnZmeBoB+H8ARuHZaSijVw==", + "engines": [ + "node >=0.8.0" + ], + "dependencies": { + "os-tmpdir": "^1.0.0", + "rimraf": "~2.2.6" + } + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/temp/node_modules/rimraf": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha512-R5KMKHnPAQaZMqLOsyuyUmcIjSeDm+73eoqQpaXA7AZ22BL+6C+1mcUscgOsNd8WVlJuvlgAPsegcx7pjlV0Dg==", + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/tempy": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", + "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", + "dependencies": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==" + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/traverse": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" + }, + "node_modules/ts-invariant": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", + "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", + "dependencies": { + "tslib": "^1.9.3" + } + }, + "node_modules/ts-invariant/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.34.tgz", + "integrity": "sha512-cJMeh/eOILyGu0ejgTKB95yKT3zOenSe9UGE3vj6WfiOwgGYnmATUsnDixMFvdU+rNMvWih83hrUP8VwhF9yXQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0", + "dependencies": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uglify-es/node_modules/commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "engines": { + "node": ">=4" + } + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated" + }, + "node_modules/url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==" + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/use-latest-callback": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.1.5.tgz", + "integrity": "sha512-HtHatS2U4/h32NlkhupDsPlrbiD27gSH5swBdtXbCAlc6pfOFzaj0FehW/FO12rx8j2Vy4/lJScCiJyM01E+bQ==" + }, + "node_modules/use-memo-one": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.2.tgz", + "integrity": "sha512-u2qFKtxLsia/r8qG0ZKkbytbztzRb317XCkT7yP8wxL0tZ/CzK2G+WWie5vWvpyeP7+YoPIwbJoIHJ4Ba4k0oQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", + "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/validate.js": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/validate.js/-/validate.js-0.13.1.tgz", + "integrity": "sha512-PnFM3xiZ+kYmLyTiMgTYmU7ZHkjBZz2/+F0DaALc/uUtVzdCt1wAosvYJ5hFQi/hz8O4zb52FQhHZRC+uVkJ+g==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vlq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==" + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/warn-once": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/warn-once/-/warn-once-0.1.1.tgz", + "integrity": "sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-fetch": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==" + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wonka": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz", + "integrity": "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==" + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/xcode": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", + "dependencies": { + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/xcode/node_modules/uuid": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-14.0.0.tgz", + "integrity": "sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zen-observable": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", + "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==" + }, + "node_modules/zen-observable-ts": { + "version": "0.8.21", + "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", + "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", + "dependencies": { + "tslib": "^1.9.3", + "zen-observable": "^0.8.0" + } + }, + "node_modules/zen-observable-ts/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } +} diff --git a/CustomerApp/package.json b/CustomerApp/package.json new file mode 100644 index 0000000..c3aa4b7 --- /dev/null +++ b/CustomerApp/package.json @@ -0,0 +1,126 @@ +{ + "name": "enatega-full-app", + "version": "5.0.0", + "scripts": { + "start": "expo start", + "android": "expo start --android", + "ios": "expo start --ios", + "eject": "expo eject", + "test": "jest", + "format": "prettier --write '**/*.js'", + "lint:fix": "eslint . --ext .js --fix", + "postinstall": "patch-package" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "*.js": [ + "npm run format", + "npm run lint:fix" + ] + }, + "dependencies": { + "@amplitude/analytics-react-native": "^1.1.1", + "@apollo/react-hooks": "^3.1.3", + + "@expo/vector-icons": "^13.0.0", + "@ptomasroos/react-native-multi-slider": "^2.2.2", + "@react-native-async-storage/async-storage": "~1.17.3", + "@react-native-community/masked-view": "0.1.11", + "@react-navigation/drawer": "^6.6.0", + "@react-navigation/native": "^6.1.4", + "@react-navigation/native-stack": "^6.9.10", + "@react-navigation/stack": "^6.3.14", + "apollo-boost": "^0.4.9", + "apollo-cache-inmemory": "^1.5.1", + "apollo-cache-persist": "^0.1.1", + "apollo-client": "^2.5.1", + "apollo-link-context": "^1.0.17", + "apollo-link-http": "^1.5.14", + "apollo-link-state": "^0.4.2", + "apollo-link-ws": "^1.0.20", + "apollo-upload-client": "^10.0.0", + "apollo-utilities": "^1.3.4", + "deprecated-react-native-prop-types": "^4.0.0", + "expo": "^47.0.12", + "expo-app-loading": "~2.1.1", + "expo-apple-authentication": "~5.0.1", + "expo-application": "~5.0.1", + "expo-asset": "~8.7.0", + "expo-auth-session": "^3.8.0", + "expo-camera": "~13.1.0", + "expo-constants": "~14.0.2", + "expo-contacts": "~11.0.1", + "expo-device": "~5.0.0", + "expo-font": "~11.0.1", + "expo-image-picker": "~14.0.2", + "expo-linking": "~3.3.1", + "expo-localization": "~14.0.0", + "expo-location": "~15.0.1", + "expo-notifications": "~0.17.0", + "expo-random": "~13.0.0", + "expo-sensors": "~12.0.1", + "expo-splash-screen": "~0.17.5", + "expo-status-bar": "~1.4.2", + "expo-tracking-transparency": "~3.0.1", + "expo-updates": "~0.15.6", + "graphql": "^16.6.0", + "graphql-tag": "^2.10.1", + "i18n-js": "^3.2.2", + "lodash": "^4.17.21", + "patch-package": "^6.5.1", + "react": "18.1.0", + "react-apollo": "^3.1.5", + "react-native": "0.70.5", + "react-native-button": "^3.0.1", + "react-native-flash-message": "^0.4.0", + "react-native-flatlist-slider": "^1.0.5", + "react-native-gesture-handler": "~2.8.0", + "react-native-gifted-chat": "^1.1.1", + "react-native-maps": "1.3.2", + "react-native-material-textfield": "^0.16.1", + "react-native-modal": "^13.0.1", + "react-native-modalize": "^2.0.8", + "react-native-reanimated": "~2.9.1", + "react-native-safe-area-context": "4.4.1", + "react-native-screens": "~3.18.0", + "react-native-star-rating": "^1.1.0", + "react-native-svg": "13.4.0", + "react-native-timeline-flatlist": "^0.8.0", + "react-native-webview": "11.23.1", + "subscriptions-transport-ws": "^0.11.0", + "uuid": "^3.3.2", + "validate.js": "^0.13.1" + }, + "devDependencies": { + "@babel/core": "^7.12.9", + "babel-jest": "^29.4.3", + "babel-preset-expo": "~9.2.1", + "babel-preset-react-native": "^4.0.1", + "eslint": "^8.34.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.20.2", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.20.0", + "eslint-plugin-standard": "^5.0.0", + "husky": "^8.0.3", + "jest": "^29.4.3", + "jest-react-native": "^18.0.0", + "lint-staged": "^13.1.2", + "metro-react-native-babel-preset": "^0.75.0", + "prettier": "^2.3.1", + "prettier-config-standard": "^5.0.0", + "react-test-renderer": "^18.2.0" + }, + "jest": { + "preset": "react-native" + }, + "private": true, + "resolutions": { + "standard-version-expo/**/@expo/config-plugins": "5.0.2" + } +} diff --git a/CustomerApp/patches/react-native-button+3.0.1.patch b/CustomerApp/patches/react-native-button+3.0.1.patch new file mode 100644 index 0000000..9f94f0c --- /dev/null +++ b/CustomerApp/patches/react-native-button+3.0.1.patch @@ -0,0 +1,38 @@ +diff --git a/node_modules/react-native-button/Button.js b/node_modules/react-native-button/Button.js +index b248176..3c6aefa 100644 +--- a/node_modules/react-native-button/Button.js ++++ b/node_modules/react-native-button/Button.js +@@ -1,4 +1,5 @@ + import PropTypes from 'prop-types'; ++import {TextPropTypes,ViewPropTypes} from 'deprecated-react-native-prop-types' + import React, { Component } from 'react'; + import { + Platform, +@@ -7,7 +8,7 @@ import { + TouchableOpacity, + TouchableNativeFeedback, + View, +- ViewPropTypes ++ //ViewPropTypes + } from 'react-native'; + + import coalesceNonElementChildren from './coalesceNonElementChildren'; +@@ -18,12 +19,15 @@ export default class Button extends Component { + static propTypes = { + ...TouchableOpacity.propTypes, + accessibilityLabel: PropTypes.string, +- allowFontScaling: Text.propTypes.allowFontScaling, ++ // allowFontScaling: Text.propTypes.allowFontScaling, ++ allowFontScaling: TextPropTypes.allowFontScaling, + containerStyle: ViewPropTypes.style, + disabledContainerStyle: ViewPropTypes.style, + disabled: PropTypes.bool, +- style: Text.propTypes.style, +- styleDisabled: Text.propTypes.style, ++ style: TextPropTypes.style, ++ styleDisabled: TextPropTypes.style, ++ // style: Text.propTypes.style, ++ // styleDisabled: Text.propTypes.style, + childGroupStyle: ViewPropTypes.style, + androidBackground: PropTypes.object, + }; diff --git a/CustomerApp/patches/react-native-material-textfield+0.16.1.patch b/CustomerApp/patches/react-native-material-textfield+0.16.1.patch new file mode 100644 index 0000000..138731f --- /dev/null +++ b/CustomerApp/patches/react-native-material-textfield+0.16.1.patch @@ -0,0 +1,405 @@ +diff --git a/node_modules/react-native-material-textfield/src/components/affix/index.js b/node_modules/react-native-material-textfield/src/components/affix/index.js +index 0f85022..e467adb 100644 +--- a/node_modules/react-native-material-textfield/src/components/affix/index.js ++++ b/node_modules/react-native-material-textfield/src/components/affix/index.js +@@ -9,26 +9,26 @@ export default class Affix extends PureComponent { + numberOfLines: 1, + }; + +- static propTypes = { +- numberOfLines: PropTypes.number, +- style: Animated.Text.propTypes.style, ++ // static propTypes = { ++ // numberOfLines: PropTypes.number, ++ // style: PropTypes.object, + +- color: PropTypes.string.isRequired, +- fontSize: PropTypes.number.isRequired, ++ // color: PropTypes.string.isRequired, ++ // fontSize: PropTypes.number.isRequired, + +- type: PropTypes +- .oneOf(['prefix', 'suffix']) +- .isRequired, ++ // type: PropTypes ++ // .oneOf(['prefix', 'suffix']) ++ // .isRequired, + +- labelAnimation: PropTypes +- .instanceOf(Animated.Value) +- .isRequired, ++ // labelAnimation: PropTypes ++ // .instanceOf(Animated.Value) ++ // .isRequired, + +- children: PropTypes.oneOfType([ +- PropTypes.arrayOf(PropTypes.node), +- PropTypes.node, +- ]), +- }; ++ // children: PropTypes.oneOfType([ ++ // PropTypes.arrayOf(PropTypes.node), ++ // PropTypes.node, ++ // ]), ++ // }; + + render() { + let { labelAnimation, style, children, type, fontSize, color } = this.props; +diff --git a/node_modules/react-native-material-textfield/src/components/counter/index.js b/node_modules/react-native-material-textfield/src/components/counter/index.js +index 35d3264..089b871 100644 +--- a/node_modules/react-native-material-textfield/src/components/counter/index.js ++++ b/node_modules/react-native-material-textfield/src/components/counter/index.js +@@ -5,15 +5,15 @@ import { Text } from 'react-native'; + import styles from './styles'; + + export default class Counter extends PureComponent { +- static propTypes = { +- count: PropTypes.number.isRequired, +- limit: PropTypes.number, ++ // static propTypes = { ++ // count: PropTypes.number.isRequired, ++ // limit: PropTypes.number, + +- baseColor: PropTypes.string.isRequired, +- errorColor: PropTypes.string.isRequired, ++ // baseColor: PropTypes.string.isRequired, ++ // errorColor: PropTypes.string.isRequired, + +- style: Text.propTypes.style, +- }; ++ // style: PropTypes.object, ++ // }; + + render() { + let { count, limit, baseColor, errorColor, style } = this.props; +diff --git a/node_modules/react-native-material-textfield/src/components/field/index.js b/node_modules/react-native-material-textfield/src/components/field/index.js +index 494bbaa..2a71c82 100644 +--- a/node_modules/react-native-material-textfield/src/components/field/index.js ++++ b/node_modules/react-native-material-textfield/src/components/field/index.js +@@ -1,5 +1,6 @@ + import PropTypes from 'prop-types'; + import React, { PureComponent } from 'react'; ++import {ViewPropTypes} from 'deprecated-react-native-prop-types'; + import { + View, + Text, +@@ -7,7 +8,7 @@ import { + Animated, + StyleSheet, + Platform, +- ViewPropTypes, ++ //ViewPropTypes, + } from 'react-native'; + + import Line from '../line'; +@@ -65,60 +66,60 @@ export default class TextField extends PureComponent { + disabled: false, + }; + +- static propTypes = { +- ...TextInput.propTypes, ++ // static propTypes = { ++ // ...TextInput.propTypes, + +- animationDuration: PropTypes.number, ++ // animationDuration: PropTypes.number, + +- fontSize: PropTypes.number, +- labelFontSize: PropTypes.number, ++ // fontSize: PropTypes.number, ++ // labelFontSize: PropTypes.number, + +- contentInset: PropTypes.shape({ +- top: PropTypes.number, +- label: PropTypes.number, +- input: PropTypes.number, +- left: PropTypes.number, +- right: PropTypes.number, +- }), ++ // contentInset: PropTypes.shape({ ++ // top: PropTypes.number, ++ // label: PropTypes.number, ++ // input: PropTypes.number, ++ // left: PropTypes.number, ++ // right: PropTypes.number, ++ // }), + +- labelOffset: Label.propTypes.offset, ++ // labelOffset: Label.propTypes.offset, + +- labelTextStyle: Text.propTypes.style, +- titleTextStyle: Text.propTypes.style, +- affixTextStyle: Text.propTypes.style, ++ // labelTextStyle: PropTypes.object.style, ++ // // titleTextStyle: PropTypes.object.style, ++ // // affixTextStyle: PropTypes.object.style, + +- tintColor: PropTypes.string, +- textColor: PropTypes.string, +- baseColor: PropTypes.string, ++ // tintColor: PropTypes.string, ++ // textColor: PropTypes.string, ++ // baseColor: PropTypes.string, + +- label: PropTypes.string, +- title: PropTypes.string, ++ // label: PropTypes.string, ++ // title: PropTypes.string, + +- characterRestriction: PropTypes.number, ++ // characterRestriction: PropTypes.number, + +- error: PropTypes.string, +- errorColor: PropTypes.string, ++ // error: PropTypes.string, ++ // errorColor: PropTypes.string, + +- lineWidth: PropTypes.number, +- activeLineWidth: PropTypes.number, +- disabledLineWidth: PropTypes.number, ++ // lineWidth: PropTypes.number, ++ // activeLineWidth: PropTypes.number, ++ // disabledLineWidth: PropTypes.number, + +- lineType: Line.propTypes.lineType, +- disabledLineType: Line.propTypes.lineType, ++ // lineType: Line.propTypes.lineType, ++ // disabledLineType: Line.propTypes.lineType, + +- disabled: PropTypes.bool, ++ // disabled: PropTypes.bool, + +- formatText: PropTypes.func, ++ // formatText: PropTypes.func, + +- renderLeftAccessory: PropTypes.func, +- renderRightAccessory: PropTypes.func, ++ // renderLeftAccessory: PropTypes.func, ++ // renderRightAccessory: PropTypes.func, + +- prefix: PropTypes.string, +- suffix: PropTypes.string, ++ // prefix: PropTypes.string, ++ // suffix: PropTypes.string, + +- containerStyle: (ViewPropTypes || View.propTypes).style, +- inputContainerStyle: (ViewPropTypes || View.propTypes).style, +- }; ++ // containerStyle: (ViewPropTypes || View.propTypes).style, ++ // inputContainerStyle: (ViewPropTypes || View.propTypes).style, ++ // }; + + static inputContainerStyle = styles.inputContainer; + +@@ -221,6 +222,7 @@ export default class TextField extends PureComponent { + + let options = { + toValue: this.focusState(), ++ useNativeDriver: false, + duration, + }; + +diff --git a/node_modules/react-native-material-textfield/src/components/helper/index.js b/node_modules/react-native-material-textfield/src/components/helper/index.js +index 6060f9f..86ac2c0 100644 +--- a/node_modules/react-native-material-textfield/src/components/helper/index.js ++++ b/node_modules/react-native-material-textfield/src/components/helper/index.js +@@ -1,23 +1,24 @@ + import PropTypes from 'prop-types'; ++ + import React, { PureComponent } from 'react'; + import { Animated } from 'react-native'; + + import styles from './styles'; + + export default class Helper extends PureComponent { +- static propTypes = { +- title: PropTypes.string, +- error: PropTypes.string, ++ // static propTypes = { ++ // title: PropTypes.string, ++ // error: PropTypes.string, + +- disabled: PropTypes.bool, ++ // disabled: PropTypes.bool, + +- style: Animated.Text.propTypes.style, ++ // style: PropTypes.object, + +- baseColor: PropTypes.string, +- errorColor: PropTypes.string, ++ // baseColor: PropTypes.string, ++ // errorColor: PropTypes.string, + +- focusAnimation: PropTypes.instanceOf(Animated.Value), +- }; ++ // focusAnimation: PropTypes.instanceOf(Animated.Value), ++ // }; + + constructor(props) { + super(props); +diff --git a/node_modules/react-native-material-textfield/src/components/label/index.js b/node_modules/react-native-material-textfield/src/components/label/index.js +index 82eaf03..1ad9a93 100644 +--- a/node_modules/react-native-material-textfield/src/components/label/index.js ++++ b/node_modules/react-native-material-textfield/src/components/label/index.js +@@ -11,41 +11,41 @@ export default class Label extends PureComponent { + restricted: false, + }; + +- static propTypes = { +- numberOfLines: PropTypes.number, ++ // static propTypes = { ++ // numberOfLines: PropTypes.number, + +- disabled: PropTypes.bool, +- restricted: PropTypes.bool, ++ // disabled: PropTypes.bool, ++ // restricted: PropTypes.bool, + +- fontSize: PropTypes.number.isRequired, +- activeFontSize: PropTypes.number.isRequired, ++ // fontSize: PropTypes.number.isRequired, ++ // activeFontSize: PropTypes.number.isRequired, + +- baseColor: PropTypes.string.isRequired, +- tintColor: PropTypes.string.isRequired, +- errorColor: PropTypes.string.isRequired, ++ // baseColor: PropTypes.string.isRequired, ++ // tintColor: PropTypes.string.isRequired, ++ // errorColor: PropTypes.string.isRequired, + +- focusAnimation: PropTypes +- .instanceOf(Animated.Value) +- .isRequired, ++ // focusAnimation: PropTypes ++ // .instanceOf(Animated.Value) ++ // .isRequired, + +- labelAnimation: PropTypes +- .instanceOf(Animated.Value) +- .isRequired, ++ // labelAnimation: PropTypes ++ // .instanceOf(Animated.Value) ++ // .isRequired, + +- contentInset: PropTypes.shape({ +- label: PropTypes.number, +- }), ++ // contentInset: PropTypes.shape({ ++ // label: PropTypes.number, ++ // }), + +- offset: PropTypes.shape({ +- x0: PropTypes.number, +- y0: PropTypes.number, +- x1: PropTypes.number, +- y1: PropTypes.number, +- }), ++ // offset: PropTypes.shape({ ++ // x0: PropTypes.number, ++ // y0: PropTypes.number, ++ // x1: PropTypes.number, ++ // y1: PropTypes.number, ++ // }), + +- style: Animated.Text.propTypes.style, +- label: PropTypes.string, +- }; ++ // style: PropTypes.object, ++ // label: PropTypes.string, ++ // }; + + render() { + let { +diff --git a/node_modules/react-native-material-textfield/src/components/line/index.js b/node_modules/react-native-material-textfield/src/components/line/index.js +index 44995e9..b689387 100644 +--- a/node_modules/react-native-material-textfield/src/components/line/index.js ++++ b/node_modules/react-native-material-textfield/src/components/line/index.js +@@ -16,23 +16,23 @@ export default class Line extends PureComponent { + restricted: false, + }; + +- static propTypes = { +- lineType: lineTypes, +- disabledLineType: lineTypes, ++ // static propTypes = { ++ // lineType: lineTypes, ++ // disabledLineType: lineTypes, + +- disabled: PropTypes.bool, +- restricted: PropTypes.bool, ++ // disabled: PropTypes.bool, ++ // restricted: PropTypes.bool, + +- tintColor: PropTypes.string, +- baseColor: PropTypes.string, +- errorColor: PropTypes.string, ++ // tintColor: PropTypes.string, ++ // baseColor: PropTypes.string, ++ // errorColor: PropTypes.string, + +- lineWidth: PropTypes.number, +- activeLineWidth: PropTypes.number, +- disabledLineWidth: PropTypes.number, ++ // lineWidth: PropTypes.number, ++ // activeLineWidth: PropTypes.number, ++ // disabledLineWidth: PropTypes.number, + +- focusAnimation: PropTypes.instanceOf(Animated.Value), +- }; ++ // focusAnimation: PropTypes.instanceOf(Animated.Value), ++ // }; + + static getDerivedStateFromProps(props, state) { + let { lineWidth, activeLineWidth, disabledLineWidth } = props; +diff --git a/node_modules/react-native-material-textfield/src/components/outline/index.js b/node_modules/react-native-material-textfield/src/components/outline/index.js +index 9347a99..9c3e8a3 100644 +--- a/node_modules/react-native-material-textfield/src/components/outline/index.js ++++ b/node_modules/react-native-material-textfield/src/components/outline/index.js +@@ -11,29 +11,29 @@ export default class Line extends PureComponent { + restricted: false, + }; + +- static propTypes = { +- lineType: PropTypes.oneOf(['solid', 'none']), ++ // static propTypes = { ++ // lineType: PropTypes.oneOf(['solid', 'none']), + +- disabled: PropTypes.bool, +- restricted: PropTypes.bool, ++ // disabled: PropTypes.bool, ++ // restricted: PropTypes.bool, + +- tintColor: PropTypes.string, +- baseColor: PropTypes.string, +- errorColor: PropTypes.string, ++ // tintColor: PropTypes.string, ++ // baseColor: PropTypes.string, ++ // errorColor: PropTypes.string, + +- lineWidth: PropTypes.number, +- activeLineWidth: PropTypes.number, +- disabledLineWidth: PropTypes.number, ++ // lineWidth: PropTypes.number, ++ // activeLineWidth: PropTypes.number, ++ // disabledLineWidth: PropTypes.number, + +- focusAnimation: PropTypes.instanceOf(Animated.Value), +- labelAnimation: PropTypes.instanceOf(Animated.Value), +- labelWidth: PropTypes.instanceOf(Animated.Value), ++ // focusAnimation: PropTypes.instanceOf(Animated.Value), ++ // labelAnimation: PropTypes.instanceOf(Animated.Value), ++ // labelWidth: PropTypes.instanceOf(Animated.Value), + +- contentInset: PropTypes.shape({ +- left: PropTypes.number, +- right: PropTypes.number, +- }), +- }; ++ // contentInset: PropTypes.shape({ ++ // left: PropTypes.number, ++ // right: PropTypes.number, ++ // }), ++ // }; + + borderProps() { + let { diff --git a/CustomerApp/patches/react-native-star-rating++react-native-button+2.4.0.patch b/CustomerApp/patches/react-native-star-rating++react-native-button+2.4.0.patch new file mode 100644 index 0000000..7229158 --- /dev/null +++ b/CustomerApp/patches/react-native-star-rating++react-native-button+2.4.0.patch @@ -0,0 +1,34 @@ +diff --git a/node_modules/react-native-star-rating/node_modules/react-native-button/Button.js b/node_modules/react-native-star-rating/node_modules/react-native-button/Button.js +index fb7cf46..8e4c522 100644 +--- a/node_modules/react-native-star-rating/node_modules/react-native-button/Button.js ++++ b/node_modules/react-native-star-rating/node_modules/react-native-button/Button.js +@@ -1,11 +1,12 @@ + import PropTypes from 'prop-types'; + import React, { Component } from 'react'; ++import {TextPropTypes,ViewPropTypes} from 'deprecated-react-native-prop-types' + import { + StyleSheet, + Text, + TouchableOpacity, + View, +- ViewPropTypes, ++ //ViewPropTypes, + } from 'react-native'; + + import coalesceNonElementChildren from './coalesceNonElementChildren'; +@@ -16,12 +17,12 @@ export default class Button extends Component { + static propTypes = { + ...TouchableOpacity.propTypes, + accessibilityLabel: PropTypes.string, +- allowFontScaling: Text.propTypes.allowFontScaling, ++ allowFontScaling: TextPropTypes.allowFontScaling, + containerStyle: ViewPropTypes.style, + disabledContainerStyle: ViewPropTypes.style, + disabled: PropTypes.bool, +- style: Text.propTypes.style, +- styleDisabled: Text.propTypes.style, ++ style: TextPropTypes.style, ++ styleDisabled: TextPropTypes.style, + childGroupStyle: ViewPropTypes.style, + }; + diff --git a/CustomerApp/patches/react-native-star-rating+1.1.0.patch b/CustomerApp/patches/react-native-star-rating+1.1.0.patch new file mode 100644 index 0000000..0a84633 --- /dev/null +++ b/CustomerApp/patches/react-native-star-rating+1.1.0.patch @@ -0,0 +1,26 @@ +diff --git a/node_modules/react-native-star-rating/StarButton.js b/node_modules/react-native-star-rating/StarButton.js +index b6db613..8a62f5a 100644 +--- a/node_modules/react-native-star-rating/StarButton.js ++++ b/node_modules/react-native-star-rating/StarButton.js +@@ -1,6 +1,7 @@ + // React and react native imports + import React, { Component } from 'react'; +-import { Image, StyleSheet, ViewPropTypes } from 'react-native'; ++import { Image, StyleSheet } from 'react-native'; ++import {ViewPropTypes} from 'deprecated-react-native-prop-types'; + import PropTypes from 'prop-types'; + import { createIconSetFromIcoMoon } from 'react-native-vector-icons'; + +diff --git a/node_modules/react-native-star-rating/StarRating.js b/node_modules/react-native-star-rating/StarRating.js +index 7aecc95..de6397c 100644 +--- a/node_modules/react-native-star-rating/StarRating.js ++++ b/node_modules/react-native-star-rating/StarRating.js +@@ -1,6 +1,7 @@ + // React and react native imports + import React, { Component } from 'react'; +-import { View, ViewPropTypes, StyleSheet } from 'react-native'; ++import { View, StyleSheet } from 'react-native'; ++import {ViewPropTypes} from 'deprecated-react-native-prop-types'; + import PropTypes from 'prop-types'; + import { View as AnimatableView } from 'react-native-animatable'; + diff --git a/CustomerApp/src/.DS_Store b/CustomerApp/src/.DS_Store new file mode 100644 index 0000000..c694681 Binary files /dev/null and b/CustomerApp/src/.DS_Store differ diff --git a/CustomerApp/src/Theme/Colors.js b/CustomerApp/src/Theme/Colors.js new file mode 100644 index 0000000..5068c63 --- /dev/null +++ b/CustomerApp/src/Theme/Colors.js @@ -0,0 +1,26 @@ +const COLORS = { + white: '#FFFFFF', + black: '#000000', + black02: 'rgba(0, 0, 0, 0.2)', + primary: '#febb2c', + darkGrey: '#333333', + offWhite: '#FAFAFA', + lineGrey: '#e7e5e4', + lightGrey: '#a5a5a5', + lightWhite: '#FCFCFC', + whitishGrey: '#7F7F7F', + lightBlack: '#292929', + redishPink: '#ff4866', + primaryBlue: '#00b9c6', + primaryBlack: '#0b0b0b', + blueShadeGrey: '#f7f7fb', + primaryLightBlue: '#0cc8d5', + lightBlueShadeGrey: '#f8f9fa', + mediumBlueShadeGrey: '#f2f4f5', + black06: 'rgba(0,0,0,0.6)', + white06: 'rgba(255,255,255,0.6)', + redishOrange: '#FA7751', + blueColor: '#00b9c6', + yellowishOrange: '#fff1d4' +} +export { COLORS } diff --git a/CustomerApp/src/Theme/Theme.js b/CustomerApp/src/Theme/Theme.js new file mode 100644 index 0000000..95cea24 --- /dev/null +++ b/CustomerApp/src/Theme/Theme.js @@ -0,0 +1,82 @@ +import { DarkTheme, DefaultTheme } from '@react-navigation/native' +import { COLORS } from './Colors' +const Theme = { + Light: { + ...DefaultTheme, + colors: { + ...DefaultTheme.colors, + black: COLORS.black, + white: COLORS.white, + curve: COLORS.primary, + selected: COLORS.primary, + fontWhite: COLORS.white, + tagColor: COLORS.primary, + iconColor: COLORS.darkGrey, + iconColorPrimary: COLORS.primary, + cardContainer: COLORS.white, + rippleColor: COLORS.black02, + background: COLORS.white, + lightBackground: COLORS.lightBlueShadeGrey, + headerbackground: COLORS.primary, + headerbackground2: COLORS.offWhite, + headerTextColor: COLORS.primaryBlack, + fontMainColor: COLORS.primaryBlack, + fontSecondColor: COLORS.lightGrey, + placeHolderColor: COLORS.lightGrey, + buttonBackground: COLORS.primary, + buttonBackgroundLight: COLORS.mediumBlueShadeGrey, + buttonBackgroundBlue: COLORS.primaryLightBlue, + active: COLORS.primaryLightBlue, + buttonText: COLORS.white, + horizontalLine: COLORS.lineGrey, + shadowColor: COLORS.black06, + drawerBackground: COLORS.primary, + spinnerColor: COLORS.primary, + errorColor: COLORS.redishOrange, + radioColor: COLORS.white, + radioOuterColor: COLORS.primary, + blueColor: COLORS.blueColor, + chatBubblePrimary: COLORS.yellowishOrange + } + }, + Dark: { + ...DarkTheme, + colors: { + ...DarkTheme.colors, + white: COLORS.white, + black: COLORS.black, + curve: COLORS.primary, + selected: COLORS.primary, + fontWhite: COLORS.white, + tagColor: COLORS.primary, + rippleColor: COLORS.black02, + background: COLORS.lightBlack, + lightBackground: COLORS.lightBlueShadeGrey, + cardContainer: COLORS.darkGrey, + iconColor: COLORS.lightWhite, + iconColorPrimary: COLORS.primary, + headerbackground: COLORS.black, + headerbackground2: COLORS.black, + headerTextColor: COLORS.primaryBlack, + fontMainColor: COLORS.lightWhite, + fontSecondColor: COLORS.whitishGrey, + placeHolderColor: COLORS.lightGrey, + buttonBackground: COLORS.primary, + buttonBackgroundLight: COLORS.mediumBlueShadeGrey, + buttonBackgroundBlue: COLORS.primaryLightBlue, + active: COLORS.primaryLightBlue, + buttonText: COLORS.white, + horizontalLine: COLORS.lineGrey, + shadowColor: COLORS.white06, + drawerBackground: COLORS.primary, + spinnerColor: COLORS.primary, + errorColor: COLORS.redishOrange, + radioColor: COLORS.white, + radioOuterColor: COLORS.primary, + blueColor: COLORS.blueColor, + chatBubblePrimary: COLORS.yellowishOrange + } + } +} + +export default Theme diff --git a/CustomerApp/src/Theme/index.js b/CustomerApp/src/Theme/index.js new file mode 100644 index 0000000..2963af9 --- /dev/null +++ b/CustomerApp/src/Theme/index.js @@ -0,0 +1,4 @@ +import { COLORS } from './Colors' +import THEME from './Theme' + +export { COLORS, THEME } diff --git a/CustomerApp/src/apollo/index.js b/CustomerApp/src/apollo/index.js new file mode 100644 index 0000000..aacc619 --- /dev/null +++ b/CustomerApp/src/apollo/index.js @@ -0,0 +1,92 @@ +import AsyncStorage from '@react-native-async-storage/async-storage' +import { defaultDataIdFromObject, InMemoryCache } from 'apollo-cache-inmemory' +import { persistCache } from 'apollo-cache-persist' +import { ApolloClient } from 'apollo-client' +import { ApolloLink, concat, Observable, split } from 'apollo-link' +import { createHttpLink } from 'apollo-link-http' +import { WebSocketLink } from 'apollo-link-ws' +import { getMainDefinition } from 'apollo-utilities' +import getEnvVars from '../../environment' + +const { GRAPHQL_URL, WS_GRAPHQL_URL } = getEnvVars() + +const cache = new InMemoryCache({ + dataIdFromObject: object => { + switch (object.__typename) { + case 'CartItem': + return object.key // use `key` as the primary key + default: + return defaultDataIdFromObject(object) // fall back to default handling + } + } +}) + +const httpLink = createHttpLink({ + uri: GRAPHQL_URL +}) + +const wsLink = new WebSocketLink({ + uri: WS_GRAPHQL_URL, + options: { + reconnect: true + } +}) + +const request = async operation => { + const token = await AsyncStorage.getItem('token') + + operation.setContext({ + // get the authentication token from local storage if it exists + // return the headers to the context so httpLink can read them + headers: { + authorization: token ? `Bearer ${token}` : '' + } + }) +} + +const requestLink = new ApolloLink( + (operation, forward) => + new Observable(observer => { + // console.log(observer) + let handle + Promise.resolve(operation) + .then(oper => request(oper)) + .then(() => { + handle = forward(operation).subscribe({ + next: observer.next.bind(observer), + error: observer.error.bind(observer), + complete: observer.complete.bind(observer) + }) + }) + .catch(observer.error.bind(observer)) + + return () => { + if (handle) handle.unsubscribe() + } + }) +) + +const terminatingLink = split(({ query }) => { + const { kind, operation } = getMainDefinition(query) + return kind === 'OperationDefinition' && operation === 'subscription' +}, wsLink) + +const setupApollo = async() => { + await persistCache({ + cache, + storage: AsyncStorage + }) + const client = new ApolloClient({ + link: concat(ApolloLink.from([terminatingLink, requestLink]), httpLink), + cache, + resolvers: {} + }) + + // set ref for global use + // eslint-disable-next-line no-undef + clientRef = client + + return client +} + +export default setupApollo diff --git a/CustomerApp/src/apollo/server.js b/CustomerApp/src/apollo/server.js new file mode 100644 index 0000000..aa0510e --- /dev/null +++ b/CustomerApp/src/apollo/server.js @@ -0,0 +1,590 @@ +export const login = ` +mutation Login($facebookId:String,$email:String,$password:String,$type:String!,$appleId:String,$name:String,$notificationToken:String){ + login(facebookId:$facebookId,email:$email,password:$password,type:$type,appleId:$appleId,name:$name,notificationToken:$notificationToken){ + userId + token + tokenExpiration + name + email + phone + } +} +` + +export const categories = ` +{ + categories{ + _id + title + description + img_menu + } +}` + +export const foods = ` +query FoodByCategory($category:String!,$onSale:Boolean,$inStock:Boolean,$min:Float,$max:Float,$search:String){ + foodByCategory(category:$category,onSale:$onSale,inStock:$inStock,min:$min,max:$max,search:$search){ + _id + title + description + variations{ + _id + title + price + discounted + addons{ + _id + title + description + quantity_minimum + quantity_maximum + options{ + _id + title + description + price + } + } + } + category{_id} + img_url + stock + } + }` + +export const createUser = ` + mutation CreateUser($facebookId:String,$phone:String,$email:String,$password:String,$name:String,$notificationToken:String,$appleId:String){ + createUser(userInput:{ + facebookId:$facebookId, + phone:$phone, + email:$email, + password:$password, + name:$name, + notificationToken:$notificationToken, + appleId:$appleId + }){ + userId + token + tokenExpiration + name + email + phone + notificationToken + } + }` + +export const updateUser = ` + mutation UpdateUser($name:String!,$phone:String!){ + updateUser(updateUserInput:{name:$name,phone:$phone}){ + _id + name + phone + } + }` + +export const updateNotificationStatus = ` + mutation UpdateNotificationStatus($offerNotification:Boolean!,$orderNotification:Boolean!){ + updateNotificationStatus(offerNotification:$offerNotification,orderNotification:$orderNotification){ + _id + notificationToken + is_order_notification + is_offer_notification + } + }` +export const profile = ` + query{ + profile{ + _id + name + phone + email + notificationToken + is_order_notification + is_offer_notification + addresses{ + _id + label + delivery_address + details + longitude + latitude + selected + } + } + }` + +export const order = `query Order($id:String!){ + order(id:$id){ + _id + delivery_address{ + latitude + longitude + delivery_address + details + label + } + delivery_charges + order_id + user{ + _id + phone + } + items{ + _id + food{ + _id + title + category{ + _id + } + description + img_url + + } + variation{ + _id + title + price + } + addons{ + _id + title + description + quantity_minimum + quantity_maximum + options{ + _id + title + description + price + } + } + quantity + } + payment_status + payment_method + order_amount + paid_amount + order_status + status_queue{ + pending + preparing + picked + delivered + cancelled + } + createdAt + review{ + _id + rating + description + } + rider{ + _id + } + } +} +` + +export const myOrders = `query Orders($offset:Int){ + orders(offset:$offset){ + _id + delivery_address{ + latitude + longitude + delivery_address + details + label + } + delivery_charges + order_id + user{ + _id + phone + } + + items{ + _id + food{ + _id + title + category{ + _id + } + description + img_url + } + variation{ + _id + title + price + } + addons{ + _id + title + description + quantity_minimum + quantity_maximum + options{ + _id + title + description + price + } + } + quantity + } + payment_status + payment_method + order_amount + paid_amount + order_status + status_queue{ + pending + preparing + picked + delivered + cancelled + } + createdAt + review{ + _id + rating + description + } + rider{ + _id + } + } +} +` + +// +// can we get userId from request instead?? +// needs research +// + +export const orderStatusChanged = `subscription OrderStatusChanged($userId:String!){ + orderStatusChanged(userId:$userId) + { + userId + origin + order{ + _id + delivery_address{ + latitude + longitude + delivery_address + details + label + } + delivery_charges + order_id + user{ + _id + phone + } + + items{ + _id + food{ + _id + title + category{ + _id + } + description + img_url + } + variation{ + _id + title + price + } + addons{ + _id + title + description + quantity_minimum + quantity_maximum + options{ + _id + title + description + price + } + } + quantity + } + payment_status + payment_method + order_amount + paid_amount + order_status + status_queue{ + pending + preparing + picked + delivered + cancelled + } + createdAt + review{ + _id + rating + description + } + rider{ + _id + } + } + } +} +` + +// +// status queue?? +// can we use address id instead of address object, then get the address on backend?? +// +export const placeOrder = ` +mutation PlaceOrder($orderInput:[OrderInput!]!,$paymentMethod:String!,$couponCode:String,$address:AddressInput!){ + placeOrder(orderInput: $orderInput,paymentMethod:$paymentMethod,couponCode:$couponCode,address:$address) { + _id + order_id + delivery_address{ + latitude + longitude + delivery_address + details + label + } + delivery_charges + items{ + _id + food{ + _id + title + category{ + _id + } + description + img_url + } + variation{ + _id + title + price + } + addons{ + _id + title + description + quantity_minimum + quantity_maximum + options{ + _id + title + description + price + } + } + quantity + } + user { + _id + phone + email + } + rider{ + _id + } + payment_status + payment_method + paid_amount + order_amount + order_status + status_queue{ + pending + preparing + picked + delivered + cancelled + } + createdAt + review{ + _id + rating + description + } + } +}` + +export const reviewOrder = `mutation ReviewOrder( + $orderId:String!, + $rating:Int!, + $description:String +){ + reviewOrder(reviewInput:{ + orderId:$orderId, + rating:$rating, + description:$description + }){ + _id + order_id + review{ + _id + rating + description + } + createdAt + updatedAt + is_active + } +}` + +// +// use this to push token instead of login, signup mutation? +// needs research +// +export const pushToken = `mutation PushToken($token:String!){ + pushToken(token:$token){ + _id + notificationToken + } +}` + +export const getConfiguration = `query Configuration{ + configuration{ + _id + currency + currency_symbol + delivery_charges + } +}` + +export const foodByIds = `query FoodByIds($ids:[String!]!){ + foodByIds(ids: $ids) { + _id + title + description + img_url + stock + category { + _id + } + variations { + _id + title + price + discounted + addons { + _id + title + description + quantity_minimum + quantity_maximum + options { + _id + title + description + price + } + } + } + } +}` + +export const getCoupon = `mutation Coupon($coupon:String!){ + coupon(coupon:$coupon){ + _id + code + discount + enabled + } +}` + +export const deleteAddress = `mutation DeleteAddress($id:ID!){ + deleteAddress(id:$id){ + _id + addresses{ + _id + label + delivery_address + details + longitude + latitude + selected + } + } +}` + +export const createAddress = `mutation CreateAddress($addressInput:AddressInput!){ + createAddress(addressInput:$addressInput){ + _id + addresses{ + _id + label + delivery_address + details + longitude + latitude + selected + } + } +}` + +export const editAddress = `mutation EditAddress($addressInput:AddressInput!){ + editAddress(addressInput:$addressInput){ + _id + label + delivery_address + details + longitude + latitude + } +}` + +export const changePassword = `mutation ChangePassword($oldPassword:String!,$newPassword:String!){ + changePassword(oldPassword:$oldPassword,newPassword:$newPassword) +}` + +export const forgotPassword = `mutation ForgotPassword($email:String!){ + forgotPassword(email:$email){ + result + } +}` + +export const selectAddress = `mutation SelectAddress($id:String!){ + selectAddress(id:$id){ + _id + addresses{ + _id + label + delivery_address + details + longitude + latitude + selected + } + } +}` + +export const subscriptionRiderLocation = `subscription SubscriptionRiderLocation($riderId:String!){ + subscriptionRiderLocation(riderId:$riderId) { + _id + location { + latitude + longitude + } + } +}` + +export const rider = `query Rider($id:String){ + rider(id:$id){ + _id + location { + latitude + longitude + } + } +}` diff --git a/CustomerApp/src/assets/.DS_Store b/CustomerApp/src/assets/.DS_Store new file mode 100644 index 0000000..1c976ac Binary files /dev/null and b/CustomerApp/src/assets/.DS_Store differ diff --git a/CustomerApp/src/assets/font/Poppin/Poppins-Bold.ttf b/CustomerApp/src/assets/font/Poppin/Poppins-Bold.ttf new file mode 100644 index 0000000..b94d47f Binary files /dev/null and b/CustomerApp/src/assets/font/Poppin/Poppins-Bold.ttf differ diff --git a/CustomerApp/src/assets/font/Poppin/Poppins-Light.ttf b/CustomerApp/src/assets/font/Poppin/Poppins-Light.ttf new file mode 100644 index 0000000..2ab0221 Binary files /dev/null and b/CustomerApp/src/assets/font/Poppin/Poppins-Light.ttf differ diff --git a/CustomerApp/src/assets/font/Poppin/Poppins-Medium.ttf b/CustomerApp/src/assets/font/Poppin/Poppins-Medium.ttf new file mode 100644 index 0000000..e90e87e Binary files /dev/null and b/CustomerApp/src/assets/font/Poppin/Poppins-Medium.ttf differ diff --git a/CustomerApp/src/assets/font/Poppin/Poppins-Regular.ttf b/CustomerApp/src/assets/font/Poppin/Poppins-Regular.ttf new file mode 100644 index 0000000..be06e7f Binary files /dev/null and b/CustomerApp/src/assets/font/Poppin/Poppins-Regular.ttf differ diff --git a/CustomerApp/src/assets/font/Poppin/Poppins-SemiBold.ttf b/CustomerApp/src/assets/font/Poppin/Poppins-SemiBold.ttf new file mode 100644 index 0000000..dabf7c2 Binary files /dev/null and b/CustomerApp/src/assets/font/Poppin/Poppins-SemiBold.ttf differ diff --git a/CustomerApp/src/assets/font/icomoon.ttf b/CustomerApp/src/assets/font/icomoon.ttf new file mode 100644 index 0000000..18ab765 Binary files /dev/null and b/CustomerApp/src/assets/font/icomoon.ttf differ diff --git a/CustomerApp/src/assets/images/.DS_Store b/CustomerApp/src/assets/images/.DS_Store new file mode 100644 index 0000000..ea4530d Binary files /dev/null and b/CustomerApp/src/assets/images/.DS_Store differ diff --git a/CustomerApp/src/assets/images/SVG/Logo.js b/CustomerApp/src/assets/images/SVG/Logo.js new file mode 100644 index 0000000..1bd0626 --- /dev/null +++ b/CustomerApp/src/assets/images/SVG/Logo.js @@ -0,0 +1,20 @@ +import * as React from 'react' +import Svg, { Path } from 'react-native-svg' + +function LogoAlphabet(props) { + return ( + + + + ) +} + +export default React.memo(LogoAlphabet) diff --git a/CustomerApp/src/assets/images/SVG/LogoName.js b/CustomerApp/src/assets/images/SVG/LogoName.js new file mode 100644 index 0000000..57180ae --- /dev/null +++ b/CustomerApp/src/assets/images/SVG/LogoName.js @@ -0,0 +1,27 @@ +import * as React from 'react' +import Svg, { Text, TSpan } from 'react-native-svg' + +function LogoName(props) { + return ( + + + + {'enatega'} + + + + ) +} + +export default React.memo(LogoName) diff --git a/CustomerApp/src/assets/images/SVG/imageComponents/CartIcon.js b/CustomerApp/src/assets/images/SVG/imageComponents/CartIcon.js new file mode 100644 index 0000000..cc009b8 --- /dev/null +++ b/CustomerApp/src/assets/images/SVG/imageComponents/CartIcon.js @@ -0,0 +1,18 @@ +import * as React from 'react' +import Svg, { Path } from 'react-native-svg' + +function CartIcon(props) { + return ( + + + + ) +} + +export default CartIcon diff --git a/CustomerApp/src/assets/images/SVG/imageComponents/EmptyAddress.js b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyAddress.js new file mode 100644 index 0000000..4d07318 --- /dev/null +++ b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyAddress.js @@ -0,0 +1,72 @@ +import * as React from 'react' +import Svg, { Defs, G, Path, Circle } from 'react-native-svg' +/* SVGR has dropped some elements not supported by react-native-svg: style */ + +function EmptyAddress(props) { + return ( + + + + + + + + + + + + + + ) +} + +export default React.memo(EmptyAddress) diff --git a/CustomerApp/src/assets/images/SVG/imageComponents/EmptyCart.js b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyCart.js new file mode 100644 index 0000000..a290bea --- /dev/null +++ b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyCart.js @@ -0,0 +1,116 @@ +import * as React from 'react' +import Svg, { Defs, G, Path, Circle } from 'react-native-svg' +/* SVGR has dropped some elements not supported by react-native-svg: style */ + +function EmptyCart(props) { + return ( + + + + + + + + + + + + + + + + + + + + + ) +} + +export default React.memo(EmptyCart) diff --git a/CustomerApp/src/assets/images/SVG/imageComponents/EmptyFood.js b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyFood.js new file mode 100644 index 0000000..4a996d0 --- /dev/null +++ b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyFood.js @@ -0,0 +1,535 @@ +import * as React from 'react' +import Svg, { + Defs, + LinearGradient, + Stop, + G, + Path, + Circle, + Ellipse +} from 'react-native-svg' +/* SVGR has dropped some elements not supported by react-native-svg: style */ + +function EmptyFood(props) { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ) +} + +export default React.memo(EmptyFood) diff --git a/CustomerApp/src/assets/images/SVG/imageComponents/EmptyOrder.js b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyOrder.js new file mode 100644 index 0000000..69e97fc --- /dev/null +++ b/CustomerApp/src/assets/images/SVG/imageComponents/EmptyOrder.js @@ -0,0 +1,88 @@ +import * as React from 'react' +import Svg, { Defs, G, Path, Circle } from 'react-native-svg' +/* SVGR has dropped some elements not supported by react-native-svg: style */ + +function EmptyOrder(props) { + return ( + + + + + + + + + + + + + + + + ) +} + +export default React.memo(EmptyOrder) diff --git a/CustomerApp/src/assets/images/cashIcon.png b/CustomerApp/src/assets/images/cashIcon.png new file mode 100644 index 0000000..65a2228 Binary files /dev/null and b/CustomerApp/src/assets/images/cashIcon.png differ diff --git a/CustomerApp/src/assets/images/defaultNotification.png b/CustomerApp/src/assets/images/defaultNotification.png new file mode 100755 index 0000000..99ceb13 Binary files /dev/null and b/CustomerApp/src/assets/images/defaultNotification.png differ diff --git a/CustomerApp/src/assets/images/facebook.png b/CustomerApp/src/assets/images/facebook.png new file mode 100644 index 0000000..c69e1bd Binary files /dev/null and b/CustomerApp/src/assets/images/facebook.png differ diff --git a/CustomerApp/src/assets/images/food_placeholder.png b/CustomerApp/src/assets/images/food_placeholder.png new file mode 100644 index 0000000..978fb34 Binary files /dev/null and b/CustomerApp/src/assets/images/food_placeholder.png differ diff --git a/CustomerApp/src/assets/images/google.png b/CustomerApp/src/assets/images/google.png new file mode 100644 index 0000000..05b1acd Binary files /dev/null and b/CustomerApp/src/assets/images/google.png differ diff --git a/CustomerApp/src/assets/images/home.png b/CustomerApp/src/assets/images/home.png new file mode 100644 index 0000000..5c100b2 Binary files /dev/null and b/CustomerApp/src/assets/images/home.png differ diff --git a/CustomerApp/src/assets/images/imagePlaceholder.png b/CustomerApp/src/assets/images/imagePlaceholder.png new file mode 100644 index 0000000..32e9e28 Binary files /dev/null and b/CustomerApp/src/assets/images/imagePlaceholder.png differ diff --git a/CustomerApp/src/assets/images/location.png b/CustomerApp/src/assets/images/location.png new file mode 100755 index 0000000..d418e5b Binary files /dev/null and b/CustomerApp/src/assets/images/location.png differ diff --git a/CustomerApp/src/assets/images/login_reg_food.jpg b/CustomerApp/src/assets/images/login_reg_food.jpg new file mode 100755 index 0000000..8f33323 Binary files /dev/null and b/CustomerApp/src/assets/images/login_reg_food.jpg differ diff --git a/CustomerApp/src/assets/images/markerEnatega.png b/CustomerApp/src/assets/images/markerEnatega.png new file mode 100644 index 0000000..1e5af7b Binary files /dev/null and b/CustomerApp/src/assets/images/markerEnatega.png differ diff --git a/CustomerApp/src/assets/images/masterIcon.png b/CustomerApp/src/assets/images/masterIcon.png new file mode 100644 index 0000000..a83afac Binary files /dev/null and b/CustomerApp/src/assets/images/masterIcon.png differ diff --git a/CustomerApp/src/assets/images/notificationDefault.png b/CustomerApp/src/assets/images/notificationDefault.png new file mode 100755 index 0000000..793f65a Binary files /dev/null and b/CustomerApp/src/assets/images/notificationDefault.png differ diff --git a/CustomerApp/src/assets/images/paypal.png b/CustomerApp/src/assets/images/paypal.png new file mode 100644 index 0000000..1eb9446 Binary files /dev/null and b/CustomerApp/src/assets/images/paypal.png differ diff --git a/CustomerApp/src/assets/images/placeholder.png b/CustomerApp/src/assets/images/placeholder.png new file mode 100755 index 0000000..c13e0c3 Binary files /dev/null and b/CustomerApp/src/assets/images/placeholder.png differ diff --git a/CustomerApp/src/assets/images/rider.png b/CustomerApp/src/assets/images/rider.png new file mode 100644 index 0000000..81b3ee4 Binary files /dev/null and b/CustomerApp/src/assets/images/rider.png differ diff --git a/CustomerApp/src/assets/images/searchLocation.png b/CustomerApp/src/assets/images/searchLocation.png new file mode 100644 index 0000000..39e98c7 Binary files /dev/null and b/CustomerApp/src/assets/images/searchLocation.png differ diff --git a/CustomerApp/src/assets/images/stripe.png b/CustomerApp/src/assets/images/stripe.png new file mode 100644 index 0000000..64f2236 Binary files /dev/null and b/CustomerApp/src/assets/images/stripe.png differ diff --git a/CustomerApp/src/assets/images/visaIcon.png b/CustomerApp/src/assets/images/visaIcon.png new file mode 100644 index 0000000..c5446ed Binary files /dev/null and b/CustomerApp/src/assets/images/visaIcon.png differ diff --git a/CustomerApp/src/components/CartItem/CartItem.js b/CustomerApp/src/components/CartItem/CartItem.js new file mode 100755 index 0000000..1d1c8b1 --- /dev/null +++ b/CustomerApp/src/components/CartItem/CartItem.js @@ -0,0 +1,88 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React, { useContext } from 'react' +import { TouchableOpacity, View } from 'react-native' +import ConfigurationContext from '../../context/Configuration' +import { alignment } from '../../utils/alignment' +import { ICONS_NAME } from '../../utils/constant' +import { scale } from '../../utils/scaling' +import { CustomIcon } from '../CustomIcon' +import EnategaImage from '../EnategaImage/EnategaImage' +import TextDefault from '../Text/TextDefault/TextDefault' +import useStyle from './styles' + +const cartItem = props => { + const styles = useStyle() + const { colors } = useTheme() + const configuration = useContext(ConfigurationContext) + + return ( + + + + + + + {props.dealName} + + + + + {configuration.currency_symbol} + {parseFloat(props.dealPrice).toFixed(2)} + + + + + + + + + {props.quantity} + + + + + + + + + + ) +} +cartItem.propTypes = { + removeQuantity: PropTypes.func, + quantity: PropTypes.number, + addQuantity: PropTypes.func, + dealName: PropTypes.string, + dealPrice: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + image: PropTypes.string +} +export default cartItem diff --git a/CustomerApp/src/components/CartItem/styles.js b/CustomerApp/src/components/CartItem/styles.js new file mode 100755 index 0000000..54698a7 --- /dev/null +++ b/CustomerApp/src/components/CartItem/styles.js @@ -0,0 +1,78 @@ +import { useTheme } from '@react-navigation/native' +import { Dimensions, StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale, verticalScale } from '../../utils/scaling' +const { width } = Dimensions.get('window') + +const useStyle = () => { + const { colors } = useTheme() + + return StyleSheet.create({ + itemContainer: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + width: '100%', + ...alignment.MBmedium, + backgroundColor: colors.cardContainer, + elevation: 5, + padding: 10, + shadowColor: colors.placeHolderColor, + shadowOffset: { + width: verticalScale(2), + height: verticalScale(1) + }, + borderRadius: 20, + height: width * 0.28, + shadowOpacity: 0.3, + shadowRadius: verticalScale(10), + ...alignment.PLsmall, + ...alignment.PRsmall + }, + imgResponsive: { + width: moderateScale(75), + height: moderateScale(75), + borderRadius: moderateScale(20) + }, + loadingView: { + backgroundColor: colors.background, + width: '100%', + height: '100%' + }, + textContainer: { + flex: 1, + height: '100%', + justifyContent: 'space-evenly', + ...alignment.MLsmall + }, + actionContainer: { + flexDirection: 'row', + justifyContent: 'flex-end', + alignItems: 'center' + }, + actionContainerBtns: { + width: scale(24), + aspectRatio: 1, + backgroundColor: colors.lightBackground, + alignItems: 'center', + justifyContent: 'center', + borderRadius: scale(8), + elevation: 3, + shadowColor: colors.shadowColor, + shadowOffset: { + width: 0, + height: verticalScale(1) + }, + shadowOpacity: 0.5, + shadowRadius: verticalScale(1) + }, + tagbtn: { + backgroundColor: colors.iconColorPrimary + }, + actionContainerView: { + justifyContent: 'center', + alignItems: 'center' + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/CustomIcon/index.js b/CustomerApp/src/components/CustomIcon/index.js new file mode 100644 index 0000000..dac51f6 --- /dev/null +++ b/CustomerApp/src/components/CustomIcon/index.js @@ -0,0 +1,8 @@ +import { createIconSetFromIcoMoon } from '@expo/vector-icons' +import icoMoonConfig from './selection.json' + +export const CustomIcon = createIconSetFromIcoMoon( + icoMoonConfig, + 'icomoon', + 'icomoon.ttf' +) diff --git a/CustomerApp/src/components/CustomIcon/selection.json b/CustomerApp/src/components/CustomIcon/selection.json new file mode 100644 index 0000000..aff417b --- /dev/null +++ b/CustomerApp/src/components/CustomIcon/selection.json @@ -0,0 +1 @@ +{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M438.784 211.338c-8.929 2.173-15.854 6.822-29.161 19.584-7.053 6.764-65.124 62.159-129.047 123.103-63.923 60.941-117.53 112.545-119.124 114.678-18.289 24.43-18.061 62.874 0.52 87.176 1.874 2.447 50.867 49.679 108.877 104.957s115.891 110.449 128.627 122.601c28.772 27.456 34.071 30.643 50.949 30.643 28.805 0 49.905-29.261 41.603-57.697-3.453-11.832 4.188-4.032-111.322-113.636l-90.844-86.203 271.58-0.512c200.781-0.379 272.42-0.819 274.798-1.687 40.11-14.674 39.378-68.012-1.167-85.007-1.126-0.471-124.076-1.088-273.221-1.37l-271.173-0.512 91.461-87.163c115.387-109.965 106.171-100.524 109.914-112.604 10.186-32.883-19.709-64.509-53.268-56.351z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (1)"]},"attrs":[{}],"properties":{"order":32,"id":16,"name":"back","prevSize":32,"code":59649},"setIdx":0,"setId":1,"iconIdx":0},{"icon":{"paths":["M857.6 281.6h-115.2c0-127.246-103.154-230.4-230.4-230.4s-230.4 103.154-230.4 230.4v0h-115.2c-63.623 0-115.2 51.577-115.2 115.2v0 384c0.134 105.985 86.015 191.866 191.987 192l537.613 0c105.985-0.134 191.866-86.015 192-191.987l0-0.013v-384c0-63.623-51.577-115.2-115.2-115.2v0zM512 128c84.831 0 153.6 68.769 153.6 153.6v0h-307.2c0-84.831 68.769-153.6 153.6-153.6v0zM896 780.8c0 63.623-51.577 115.2-115.2 115.2v0h-537.6c-63.623 0-115.2-51.577-115.2-115.2v0-384c0-21.208 17.192-38.4 38.4-38.4v0h115.2v76.8c0 21.208 17.192 38.4 38.4 38.4s38.4-17.192 38.4-38.4v0-76.8h307.2v76.8c0 21.208 17.192 38.4 38.4 38.4s38.4-17.192 38.4-38.4v0-76.8h115.2c21.208 0 38.4 17.192 38.4 38.4v0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 10"]},"attrs":[{}],"properties":{"order":41,"id":8,"name":"cart","prevSize":32,"code":59657},"setIdx":0,"setId":1,"iconIdx":1},{"icon":{"paths":["M826.184 615.004l-140.462-278.292v-99.686l54.149-185.825h-151.173c-0.012-0-0.026-0-0.041-0-31.922 0-60.582 13.964-80.205 36.117l-0.098 0.112c-19.721-22.265-48.381-36.229-80.302-36.229-0.003 0-0.007 0-0.010 0l-151.193-0 54.149 185.836v99.686l-140.462 278.282c-16.682 32.352-26.461 70.607-26.461 111.145 0 136.222 110.429 246.651 246.651 246.651 0 0 0.001-0 0.001-0l195.266 0c136.209-0.017 246.621-110.44 246.621-246.651 0-40.538-9.78-78.793-27.109-112.532l0.647 1.387zM428.042 105.206c29.451 0.035 53.315 23.9 53.35 53.347l0 0.003h54.006c0.029-29.449 23.892-53.315 53.337-53.35l79.189-0-29.42 100.966h-260.25l-29.42-100.966zM631.716 260.168v55.972h-246.682v-55.962zM770.058 827.116c-34.197 55.35-94.537 91.68-163.362 91.68-0.251 0-0.501-0-0.752-0.001l0.039 0h-195.256c-0.012 0-0.026 0-0.041 0-106.401 0-192.655-86.255-192.655-192.655 0-31.66 7.637-61.537 21.169-87.888l-0.505 1.083 135.916-269.189h267.448l135.875 269.189c13.153 25.273 20.867 55.188 20.867 86.905 0 37.357-10.703 72.214-29.209 101.673l0.467-0.797z","M544.379 605.972h-57.917c-13.058 0-23.644-10.586-23.644-23.644s10.586-23.644 23.644-23.644h97.782v-54.006h-48.916v-36.434h-54.006v36.618c-40.584 2.805-72.444 36.415-72.444 77.466 0 42.853 34.717 77.596 77.56 77.64l57.922 0c14.189 0 25.692 11.503 25.692 25.692s-11.503 25.692-25.692 25.692l-124.774 0v54.006h61.747v36.434h53.996v-36.434h9.052c43.626-0.51 78.795-35.995 78.795-79.693s-35.169-79.183-78.746-79.692l-0.048-0z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 15"]},"attrs":[{},{}],"properties":{"order":46,"id":3,"name":"cash","prevSize":32,"code":59662},"setIdx":0,"setId":1,"iconIdx":2},{"icon":{"paths":["M475.136 103.534c-262.963 23.017-435.53 287.636-351.716 539.336 50.196 150.748 177.659 253.783 342.5 276.856 15.452 2.163 79.8 1.81 96.256-0.53 50.173-7.132 80.545-16.141 129.060-38.29 105.436-48.133 191.127-154.957 219.535-273.674 8.253-34.483 10.317-53.535 10.317-95.232 0-242.173-204.616-429.591-445.952-408.466zM543.744 165.955c178.24 15.235 314.775 165.079 314.844 345.533 0.097 253.189-256.509 419.853-488.94 317.563-75.428-33.196-141.44-99.205-174.705-174.7-107.528-244.045 83.195-511.099 348.8-488.397zM658.012 366.653c-7.7 1.92-12.099 6.088-117.371 111.217l-106.015 105.869-38.71-39.386c-42.604-43.351-45.64-45.932-56.814-48.261-29.724-6.198-52.961 22.915-40.486 50.724 4.618 10.296 94.328 98.721 105.864 104.346 20.349 9.923 45.12 9.295 64.399-1.631 5.34-3.026 225.987-222.546 230.118-228.946 17.428-26.98-9.096-61.883-40.986-53.932z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector"],"defaultCode":59648},"attrs":[{}],"properties":{"order":34,"id":18,"name":"checked","prevSize":32,"code":59648},"setIdx":0,"setId":1,"iconIdx":3},{"icon":{"paths":["M583.854 551.383c0 0.096 0.001 0.21 0.001 0.323 0 39.684-32.17 71.854-71.854 71.854s-71.854-32.17-71.854-71.854c0-26.454 14.295-49.568 35.582-62.041l0.339-0.184v-153.672c-0.003-0.18-0.005-0.393-0.005-0.607 0-19.845 16.087-35.932 35.932-35.932s35.932 16.087 35.932 35.932c0 0.213-0.002 0.426-0.006 0.639l0-0.032v153.672c21.564 12.574 35.845 35.56 35.932 61.888l0 0.013zM801.577 283.32c65.456 70.326 105.631 164.947 105.631 268.952 0 218.27-176.943 395.213-395.213 395.213s-395.213-176.943-395.213-395.213c0-104.005 40.175-198.627 105.852-269.193l-0.221 0.241-24.136-26.839c-13.048 4.744-28.109 7.487-43.811 7.487-0.614 0-1.227-0.004-1.839-0.013l0.093 0.001c-0.18 0.003-0.393 0.005-0.607 0.005-19.845 0-35.932-16.087-35.932-35.932s16.087-35.932 35.932-35.932c0.213 0 0.426 0.002 0.639 0.006l-0.032-0c28.201 0 35.932-7.721 35.932-35.932-0.003-0.18-0.005-0.393-0.005-0.607 0-19.845 16.087-35.932 35.932-35.932s35.932 16.087 35.932 35.932c0 0.213-0.002 0.426-0.006 0.639l0-0.032c0.006 0.453 0.009 0.987 0.009 1.523 0 17.842-3.702 34.82-10.38 50.207l0.315-0.816 25.364 28.17c55.567-42.167 124.090-70.069 198.687-77.090l1.567-0.119v-37.796c-0.003-0.18-0.005-0.393-0.005-0.607 0-19.845 16.087-35.932 35.932-35.932s35.932 16.087 35.932 35.932c0 0.213-0.002 0.426-0.006 0.639l0-0.032v37.796c76.168 7.139 144.694 35.041 201.24 77.92l-0.977-0.71 25.364-28.17c-6.362-14.57-10.064-31.548-10.064-49.39 0-0.521 0.003-1.042 0.009-1.562l-0.001 0.079c-0.003-0.18-0.005-0.393-0.005-0.607 0-19.845 16.087-35.932 35.932-35.932s35.932 16.087 35.932 35.932c0 0.213-0.002 0.426-0.006 0.639l0-0.032c0 28.201 7.721 35.932 35.932 35.932 19.582 0.341 35.326 16.296 35.326 35.927s-15.743 35.586-35.294 35.927l-0.032 0c-0.519 0.007-1.132 0.012-1.746 0.012-15.702 0-30.763-2.743-44.731-7.776l0.92 0.289zM835.369 551.383c0-178.586-144.773-323.359-323.359-323.359s-323.359 144.773-323.359 323.359c0 178.583 144.767 323.353 323.348 323.359l0 0c178.582-0.006 323.348-144.776 323.348-323.359v-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 7"]},"attrs":[{}],"properties":{"order":38,"id":11,"name":"clock","prevSize":32,"code":59654},"setIdx":0,"setId":1,"iconIdx":4},{"icon":{"paths":["M860.836 170.445v0c-10.41-10.407-24.79-16.844-40.673-16.844s-30.263 6.437-40.673 16.844l-263.854 263.844-263.803-263.844c-10.41-10.407-24.79-16.844-40.673-16.844s-30.263 6.437-40.673 16.844l0-0c-10.407 10.41-16.844 24.79-16.844 40.673s6.437 30.263 16.844 40.673l263.803 263.844-263.844 263.844c-10.407 10.41-16.844 24.79-16.844 40.673s6.437 30.263 16.844 40.673l-0-0c10.41 10.407 24.79 16.844 40.673 16.844s30.263-6.437 40.673-16.844l263.844-263.833 263.844 263.844c10.41 10.407 24.79 16.844 40.673 16.844s30.263-6.437 40.673-16.844l-0 0c10.407-10.41 16.844-24.79 16.844-40.673s-6.437-30.263-16.844-40.673l-263.833-263.854 263.844-263.803c10.42-10.412 16.865-24.8 16.865-40.694s-6.445-30.282-16.864-40.693l-0-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 18"]},"attrs":[{}],"properties":{"order":59,"id":21,"name":"cross","prevSize":32,"code":59675},"setIdx":0,"setId":1,"iconIdx":5},{"icon":{"paths":["M357.181 821.637h-61.932c-51.3 0-92.887-41.587-92.887-92.887v0-433.5c0-51.3 41.587-92.887 92.887-92.887v0h61.932c17.102 0 30.966-13.864 30.966-30.966s-13.864-30.966-30.966-30.966v0h-61.932c-85.462 0.105-154.714 69.357-154.819 154.808l-0 0.010v433.49c0.105 85.462 69.357 154.714 154.808 154.819l61.942 0c17.102 0 30.966-13.864 30.966-30.966s-13.864-30.966-30.966-30.966v0z","M464.374 304.323l-142.029 141.998c-16.751 16.833-27.106 40.044-27.106 65.674s10.355 48.841 27.11 65.678l-0.004-0.004 141.998 141.998c5.637 5.821 13.524 9.434 22.254 9.434 17.102 0 30.966-13.864 30.966-30.966 0-8.731-3.613-16.617-9.426-22.246l-0.008-0.008-132.874-132.925h477.338c17.102 0 30.966-13.864 30.966-30.966s-13.864-30.966-30.966-30.966h-477.368l132.936-132.915c5.821-5.637 9.434-13.524 9.434-22.254 0-17.102-13.864-30.966-30.966-30.966-8.731 0-16.617 3.613-22.246 9.426l-0.008 0.008z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 3"]},"attrs":[{},{}],"properties":{"order":35,"id":15,"name":"exit","prevSize":32,"code":59650},"setIdx":0,"setId":1,"iconIdx":6},{"icon":{"paths":["M356.352 129.633c-47.355 5.294-83.661 30.088-103.66 70.792l-6.175 12.567-36.987 0.008c-49.646 0.010-55.273 1.129-67.325 13.386-20.242 20.58-15.734 54.541 9.185 69.181 8.064 4.739 9.157 4.851 53.189 5.437l42.276 0.563 3.976 8.973c28.631 64.643 107.773 93.107 171.633 61.734 28.157-13.834 51.172-37.862 61.514-64.22l2.744-6.999 182.879-0.013c149.286-0.010 183.818-0.264 187.999-1.38 45.294-12.099 41.49-78.999-4.872-85.706-3.607-0.522-84.751-0.932-186.158-0.945l-179.768-0.020-3.302-8.079c-19.256-47.094-76.434-80.947-127.148-75.279zM376.32 218.481c43.791 11.697 38.295 75.666-6.728 78.272-35.937 2.081-56.479-39.624-32.458-65.907 10.278-11.244 25.454-16.033 39.186-12.365zM634.88 382.551c-11.761 2.066-15.501 2.939-22.362 5.228-35.274 11.763-67.43 42.094-78.487 74.035l-1.244 3.594-370.483 1.024-7.288 3.418c-31.626 14.828-34.424 58.703-4.92 77.187 10.125 6.344-3.922 5.919 197.99 5.97l183.882 0.044 6.925 14.036c41.966 85.061 159.468 95.649 215.951 19.456 5.158-6.961 17.252-29.481 17.252-32.131 0-1.114 8.005-1.423 43.264-1.667l43.264-0.297 6.144-2.867c33.523-15.642 33.28-63.982-0.399-79.941l-6.769-3.208-85.143-0.614-3.226-7.885c-14.264-34.875-48.069-63.355-86.735-73.070-7.928-1.992-40.453-3.571-47.616-2.312zM669.184 473.405c30.057 13.962 30.559 58.327 0.817 72.077-37.028 17.121-72.783-23.319-50.959-57.636 10.301-16.2 32.561-22.61 50.143-14.441zM351.882 634.918c-33.672 3.802-65.72 22.216-87.124 50.061-4.977 6.474-16.95 28.68-16.95 31.434 0 1.172-6.298 1.413-37.12 1.431-50.883 0.028-56.422 1.108-68.483 13.373-20.636 20.979-15.468 55.741 10.371 69.768 7.69 4.175 8.346 4.237 51.996 4.836l42.268 0.579 3.482 8.010c29.371 67.579 113.761 95.788 178.557 59.684 23.962-13.353 44.951-36.488 54.676-60.27l3.246-7.936 182.84-0.013c149.253-0.010 183.777-0.264 187.958-1.38 45.271-12.093 41.467-79.004-4.872-85.706-3.607-0.522-84.736-0.932-186.125-0.945l-179.73-0.020-4.447-9.692c-22.866-49.848-75.587-79.416-130.545-73.213zM376.32 723.313c36.506 9.751 41.521 58.573 7.68 74.78-19.917 9.539-43.93 0.748-53.558-19.607-13.896-29.379 14.52-63.549 45.878-55.173z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (3)"]},"attrs":[{}],"properties":{"order":49,"id":19,"name":"filter","prevSize":32,"code":59665},"setIdx":0,"setId":1,"iconIdx":7},{"icon":{"paths":["M939.581 398.838l-291.441-291.471c-34.801-34.704-82.827-56.162-135.864-56.162s-101.063 21.458-135.869 56.166l0.004-0.004-291.42 291.471c-20.873 20.734-33.792 49.451-33.792 81.187 0 0.11 0 0.22 0 0.331l-0-0.017v377.201c0.006 63.658 51.612 115.261 115.272 115.261h691.64c63.646-0.018 115.235-51.614 115.241-115.261l0-0.001v-377.201c0-0.099 0-0.217 0-0.334 0-31.725-12.911-60.435-33.766-81.16l-0.006-0.006zM627.548 895.959h-230.543v-151.153c-0.003-0.323-0.005-0.704-0.005-1.086 0-63.663 51.609-115.272 115.272-115.272s115.272 51.609 115.272 115.272c0 0.382-0.002 0.764-0.006 1.145l0-0.058zM896.512 857.539c0 21.212-17.19 38.409-38.399 38.42l-153.724 0v-151.153c0-106.101-86.012-192.113-192.113-192.113s-192.113 86.012-192.113 192.113h-0v151.153h-153.692c-0.015 0-0.033 0-0.051 0-21.219 0-38.42-17.201-38.42-38.42l0-0v-377.201c0.039-10.605 4.335-20.198 11.266-27.168l-0.002 0.002 291.482-291.359c20.897-20.802 49.714-33.662 81.536-33.662s60.64 12.86 81.54 33.666l-0.004-0.004 291.43 291.471c6.904 6.942 11.193 16.49 11.264 27.040l0 0.014z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 9"]},"attrs":[{}],"properties":{"order":40,"id":9,"name":"home","prevSize":32,"code":59656},"setIdx":0,"setId":1,"iconIdx":8},{"icon":{"paths":["M512 51.2c-254.493 0-460.8 206.307-460.8 460.8s206.307 460.8 460.8 460.8c254.493 0 460.8-206.307 460.8-460.8v0c0-254.493-206.307-460.8-460.8-460.8v0zM512 896c-212.077 0-384-171.923-384-384s171.923-384 384-384c212.077 0 384 171.923 384 384v0c0 212.077-171.923 384-384 384v0z","M512 243.2c-21.208 0-38.4 17.192-38.4 38.4v0 307.2c0 21.208 17.192 38.4 38.4 38.4s38.4-17.192 38.4-38.4v0-307.2c0-21.208-17.192-38.4-38.4-38.4v0z","M483.84 704h56.32c5.655 0 10.24 4.585 10.24 10.24v56.32c0 5.655-4.585 10.24-10.24 10.24h-56.32c-5.655 0-10.24-4.585-10.24-10.24v-56.32c0-5.655 4.585-10.24 10.24-10.24z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 13"]},"attrs":[{},{},{}],"properties":{"order":44,"id":5,"name":"info","prevSize":32,"code":59660},"setIdx":0,"setId":1,"iconIdx":9},{"icon":{"paths":["M508.969 281.661c-84.831 0-153.6 68.769-153.6 153.6s68.769 153.6 153.6 153.6c84.831 0 153.6-68.769 153.6-153.6v0c0-84.831-68.769-153.6-153.6-153.6v0zM508.969 512.061c-42.415 0-76.8-34.385-76.8-76.8s34.385-76.8 76.8-76.8c42.415 0 76.8 34.385 76.8 76.8v0c0 42.415-34.385 76.8-76.8 76.8v0z","M508.959 972.82c-0.308 0.002-0.673 0.003-1.037 0.003-67.52 0-127.317-33.063-164.085-83.881l-0.407-0.591c-146.33-201.882-220.549-353.618-220.549-451.082 0-213.225 172.853-386.079 386.079-386.079s386.079 172.853 386.079 386.079v0c0 97.454-74.22 249.19-220.549 451.041-37.174 51.433-96.985 84.513-164.522 84.513-0.354 0-0.708-0.001-1.062-0.003l0.054 0zM508.959 135.045c-166.889 0.198-302.126 135.429-302.336 302.296l-0 0.020c0 77.179 72.704 219.894 204.616 401.859 22.209 30.334 57.69 49.811 97.72 49.811s75.511-19.477 97.483-49.472l0.237-0.339c131.932-181.965 204.616-324.68 204.616-401.859-0.198-166.896-135.44-302.138-302.317-302.336l-0.019-0z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 11"]},"attrs":[{},{}],"properties":{"order":42,"id":7,"name":"location","prevSize":32,"code":59658},"setIdx":0,"setId":1,"iconIdx":10},{"icon":{"paths":["M543.853 1023.985c-18.239-0.177-35.256-0.692-51.993-1.562-266.004-13.26-481.93-224.354-491.462-480.648-0.371-7.401-0.583-16.071-0.583-24.79 0-127.396 45.166-244.243 120.36-335.402l-0.72 0.899c82.296-96.458 198.066-162.231 329.138-179.273l2.619-0.278c14.773-1.853 31.869-2.91 49.213-2.91 2.9 0 5.792 0.030 8.678 0.088l-0.432-0.007h3.492q121.282-0.118 242.564-0.103h230.689c0.060-0 0.131-0 0.202-0 24.164 0 45.336 12.814 57.090 32.017l0.167 0.293c6.208 9.938 9.89 22.009 9.89 34.94 0 11.239-2.781 21.828-7.692 31.117l0.175-0.363-27.993 54.144-44.302 85.348c-56.103 108.037-114.122 219.727-170.284 330.018-13.93 32.804-45.873 55.392-83.092 55.392-1.784 0-3.555-0.052-5.313-0.154l0.243 0.011h-1.827c-72.192-0.781-149.083-1.134-249.355-1.134q-65.709 0-131.448 0.133l-88.987 0.103c10.446 23.626 21.724 43.778 34.626 62.736l-0.872-1.359c51.090 73.225 134.931 120.535 229.822 120.535 1.154 0 2.307-0.007 3.458-0.021l-0.175 0.002c21.495 0.442 44.199 0.634 71.632 0.634q17.311 0 34.814-0.074h0.177c0.017-0 0.036-0 0.056-0 14.291 0 26.821 7.536 33.835 18.85l0.098 0.17c3.692 5.933 5.882 13.133 5.882 20.846 0 6.655-1.63 12.93-4.513 18.446l0.105-0.22-72.192 140.037c-6.755 12.908-20.042 21.572-35.355 21.599l-0.004 0zM358.085 401.591c89.002 0 184.457-0.133 280.943-1.149 1.395-1.652 2.678-3.493 3.782-5.449l0.093-0.179c25.488-46.866 50.343-95.263 74.401-142.041l16.81-32.692-32.958-0.192c-30.762-0.192-61.039-0.383-91.050-0.383-46.586 0-84.715 0.457-119.956 1.473-65.791 2.714-124.977 28.947-169.825 70.451l0.175-0.16c-34.312 29.283-61.164 66.292-77.986 108.393l-0.659 1.869z"],"attrs":[{}],"width":1053,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Path 27559"]},"attrs":[{}],"properties":{"order":50,"id":20,"name":"logo","prevSize":32,"code":59666},"setIdx":0,"setId":1,"iconIdx":11},{"icon":{"paths":["M98.304 196.027c-45.189 12.595-50.212 75.645-7.68 96.42l8.192 4.001h560.128l8.192-4.001c42.796-20.905 37.414-84.293-8.192-96.492-7.316-1.958-553.61-1.887-560.64 0.072zM98.304 462.267c-45.189 12.595-50.212 75.645-7.68 96.42l8.192 4.001h826.368l8.192-4.001c42.796-20.905 37.414-84.293-8.192-96.492-7.332-1.964-819.837-1.892-826.88 0.072zM98.304 728.507c-45.189 12.595-50.212 75.645-7.68 96.42l8.192 4.001h375.808l8.192-4.001c42.796-20.905 37.414-84.293-8.192-96.492-7.293-1.953-369.308-1.882-376.32 0.072z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (2)"]},"attrs":[{}],"properties":{"order":33,"id":17,"name":"menu","prevSize":32,"code":59653},"setIdx":0,"setId":1,"iconIdx":12},{"icon":{"paths":["M971.919 483.574c-15.412-241.963-215.431-432.374-459.922-432.374-254.493 0-460.8 206.307-460.8 460.8s206.307 460.8 460.8 460.8c0.084 0 0.168-0 0.252-0l267.865 0c105.887-0.111 191.695-85.919 191.805-191.795l0-0.011zM895.191 780.995c-0.006 63.557-51.53 115.077-115.087 115.077h-267.868c-113.769-0.051-215.998-49.417-286.477-127.88l-0.314-0.356c-60.604-67.117-97.685-156.489-97.685-254.522 0-15.941 0.981-31.654 2.885-47.080l-0.186 1.847c21.568-174.909 157.686-312.398 330.067-335.865l1.996-0.222c14.954-1.979 32.267-3.121 49.841-3.144l0.028-0c0.318-0.001 0.695-0.002 1.072-0.002 92.973 0 178.16 33.339 244.258 88.713l-0.594-0.484c78.636 65.7 130.462 161.208 137.998 268.928l0.068 1.213z","M358.134 397.373h153.446c21.185 0 38.359-17.174 38.359-38.359s-17.174-38.359-38.359-38.359v0h-153.446c-21.185 0-38.359 17.174-38.359 38.359s17.174 38.359 38.359 38.359v0z","M665.027 474.102h-306.893c-21.185 0-38.359 17.174-38.359 38.359s17.174 38.359 38.359 38.359h306.893c21.185 0 38.359-17.174 38.359-38.359s-17.174-38.359-38.359-38.359h0z","M665.027 627.548h-306.893c-21.185 0-38.359 17.174-38.359 38.359s17.174 38.359 38.359 38.359h306.893c21.185 0 38.359-17.174 38.359-38.359s-17.174-38.359-38.359-38.359h0z"],"attrs":[{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 12"]},"attrs":[{},{},{},{}],"properties":{"order":43,"id":6,"name":"message","prevSize":32,"code":59659},"setIdx":0,"setId":1,"iconIdx":13},{"icon":{"paths":["M101.481 457.252c-60.078 14.633-59.604 104.097 0.632 119.788 8.847 2.304 810.926 2.304 819.773 0 60.631-15.793 60.626-105.385-0.010-119.875-8.591-2.053-811.958-1.966-820.396 0.087z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector"]},"attrs":[{}],"properties":{"order":60,"id":30,"name":"minus","prevSize":32,"code":59671},"setIdx":0,"setId":1,"iconIdx":14},{"icon":{"paths":["M838.4 204.8h-652.8c-74.194 0.082-134.318 60.206-134.4 134.392l-0 0.008v345.6c0.082 74.194 60.206 134.318 134.392 134.4l652.808 0c74.194-0.082 134.318-60.206 134.4-134.392l0-0.008v-345.6c-0.082-74.194-60.206-134.318-134.392-134.4l-0.008-0zM934.4 684.8c-0.064 52.994-43.006 95.936-95.994 96l-652.806 0c-52.994-0.064-95.936-43.006-96-95.994l-0-0.006v-345.6c0.064-52.994 43.006-95.936 95.994-96l652.806-0c52.994 0.064 95.936 43.006 96 95.994l0 0.006z","M326.84 449.874c-2.37-4.548-5.815-8.249-10.010-10.858l-0.117-0.068c-4.639-2.783-10.056-4.842-15.833-5.857l-0.285-0.041c-6.4-1.102-13.77-1.732-21.288-1.732-0.213 0-0.425 0.001-0.638 0.002l0.033-0h-38.728c-4.252 0.19-7.778 3.091-8.902 7.007l-0.017 0.068-26.051 113.5c-0.147 0.472-0.232 1.015-0.232 1.578 0 3.031 2.457 5.489 5.489 5.489 0.121 0 0.241-0.004 0.36-0.012l-0.016 0.001h18.545c4.263-0.128 7.81-3.049 8.883-6.989l0.015-0.067 6.359-27.556c1.098-3.993 4.636-6.901 8.874-7.035l0.015-0h5.304c1.539 0.096 3.338 0.151 5.15 0.151 17.733 0 34.238-5.255 48.044-14.294l-0.335 0.206c11.501-7.924 18.944-21.021 18.944-35.857 0-0.325-0.004-0.65-0.011-0.973l0.001 0.048c0.018-0.419 0.029-0.911 0.029-1.405 0-5.576-1.323-10.844-3.672-15.505l0.090 0.198zM286.843 486.953c-5.968 3.896-13.274 6.214-21.121 6.214-0.819 0-1.632-0.025-2.439-0.075l0.111 0.005h-4.536c-0.097 0.006-0.211 0.010-0.326 0.010-3.054 0-5.53-2.476-5.53-5.53 0-0.555 0.082-1.090 0.234-1.595l-0.010 0.039 5.581-24.095c1.059-3.998 4.592-6.917 8.824-7.035l0.013-0h6.083c0.551-0.036 1.194-0.057 1.843-0.057 5.24 0 10.163 1.357 14.436 3.739l-0.151-0.077c3.264 2.242 5.377 5.955 5.377 10.161 0 0.313-0.012 0.622-0.035 0.929l0.002-0.041c0.019 0.324 0.029 0.703 0.029 1.085 0 6.701-3.282 12.635-8.326 16.283l-0.059 0.040z","M855.511 440.187l-1.157 0.348-1.556 0.215-1.905-0.297-0.973-0.942-0.451-1.485v-10.486h6.195v-2.55h-6.195v-5.12h-3.072v5.12h-2.048v2.55h2.048v9.605l1.434 4.751 4.219 1.516 1.772-0.154 1.874-0.369v-2.714z","M884.265 426.271l-4.434-1.823-3.267 0.666-3.318 2.243-1.935-2.15-3.133-0.748-3.011 0.666-2.847 1.833v-2.048h-3.011v18.033h3v-13.394l2.56-1.567 2.509-0.625 2.048 0.369 1.024 1.024 0.451 1.731 0.154 2.232v10.301h3.011v-11.52l-0.051-0.963-0.051-0.881 2.57-1.638 2.54-0.635 1.987 0.369 1.085 1.024 0.379 1.741 0.205 2.202v10.301h3.072v-11.684z","M416.256 466.094c-8.408-3.833-18.236-6.067-28.586-6.067-1.605 0-3.197 0.054-4.775 0.159l0.214-0.011c-7.923 0.004-15.695 0.637-23.272 1.851l0.836-0.11c-5.55 0.85-6.093 1.024-9.513 1.751-4.18 1.011-7.375 4.336-8.181 8.513l-0.011 0.068-2.273 9.329c-1.28 5.96 2.15 5.724 3.584 5.222 2.937-1.116 6.643-2.238 10.436-3.136l0.654-0.131c5.182-1.343 11.163-2.183 17.317-2.323l0.091-0.002c0.647-0.033 1.405-0.051 2.167-0.051 5.265 0 10.322 0.889 15.030 2.524l-0.321-0.097c3.296 1.227 5.602 4.346 5.602 8.004 0 0.149-0.004 0.297-0.011 0.444l0.001-0.021-0.328 2.621-2.673 1.649c-10.527 0.666-18.125 1.638-27.351 2.97-8.75 1.111-16.7 3.386-24.091 6.687l0.539-0.215c-6.54 2.702-11.949 7.025-15.89 12.478l-0.074 0.107c-3.337 5.198-5.32 11.542-5.32 18.35 0 0.367 0.006 0.734 0.017 1.098l-0.001-0.053c-0.005 0.181-0.008 0.394-0.008 0.607 0 6.737 2.907 12.795 7.536 16.988l0.019 0.017c4.905 4.168 11.311 6.704 18.309 6.704 0.436 0 0.869-0.010 1.3-0.029l-0.061 0.002c0.268 0.005 0.585 0.008 0.902 0.008 3.803 0 7.512-0.398 11.089-1.155l-0.348 0.062 8.98-3.072 7.608-4.219 6.994-4.618 0.092 0.133-0.707 2.97v0.123c-0.121 0.431-0.19 0.925-0.19 1.436 0 2.917 2.263 5.305 5.129 5.506l0.017 0.001 0.072 0.082h17.224l0.246-0.113c3.849-0.523 6.941-3.264 7.971-6.875l0.017-0.068 13.517-58.532 0.707-4.772 0.328-4.475c0.014-0.28 0.022-0.608 0.022-0.937 0-7.524-4.246-14.056-10.473-17.331l-0.107-0.051zM386.355 531.896l-2.888 3.809-7.291 3.768c-2.858 1.242-6.183 1.99-9.675 2.048l-0.022 0c-0.351 0.020-0.762 0.031-1.176 0.031-3.409 0-6.639-0.767-9.527-2.137l0.135 0.058-3.584-6.953c-0.014-0.23-0.021-0.5-0.021-0.771 0-3.119 1.027-5.998 2.761-8.318l-0.026 0.036 7.864-5.345c3.489-1.182 7.621-2.146 11.878-2.716l0.349-0.038c4.239-0.522 12.616-1.485 13.711-1.516l1.28 2.253c-0.256 1.362-2.632 11.305-3.768 15.79z","M753.101 466.166c-8.422-3.837-18.265-6.073-28.63-6.073-1.585 0-3.159 0.052-4.718 0.155l0.212-0.011c-0.019-0-0.042-0-0.065-0-7.895 0-15.639 0.648-23.181 1.894l0.82-0.112c-5.56 0.809-6.144 1.024-9.554 1.72-4.161 1.026-7.335 4.353-8.12 8.524l-0.011 0.067-2.273 9.318c-1.27 5.96 2.048 5.683 3.645 5.222 2.821-1.065 6.493-2.192 10.241-3.127l0.757-0.16c5.17-1.315 11.148-2.153 17.294-2.322l0.114-0.002c0.638-0.032 1.386-0.050 2.138-0.050 5.261 0 10.314 0.892 15.016 2.533l-0.32-0.097c3.295 1.22 5.602 4.336 5.602 7.99 0 0.15-0.004 0.3-0.012 0.448l0.001-0.021-0.287 2.611-2.652 1.69c-10.629 0.635-18.248 1.608-27.382 2.949-8.75 1.112-16.7 3.386-24.091 6.687l0.539-0.215c-6.544 2.709-11.953 7.042-15.89 12.507l-0.074 0.108c-3.35 5.165-5.341 11.48-5.341 18.26 0 0.37 0.006 0.739 0.018 1.106l-0.001-0.054c-0.007 0.212-0.011 0.462-0.011 0.712 0 6.723 2.927 12.762 7.577 16.912l0.022 0.019c4.915 4.19 11.341 6.739 18.361 6.739 0.385 0 0.768-0.008 1.149-0.023l-0.055 0.002c0.298 0.006 0.65 0.010 1.002 0.010 3.765 0 7.435-0.403 10.971-1.167l-0.34 0.062 8.96-3.072 7.67-4.219 6.943-4.669 0.123 0.154-0.635 3-0.072 0.051v0.051c-0.138 0.456-0.218 0.98-0.218 1.523 0 2.898 2.271 5.265 5.13 5.419l0.014 0.001v0.072h17.203l0.287-0.092c3.831-0.543 6.894-3.307 7.87-6.927l0.015-0.066 13.558-58.45 0.717-4.792 0.389-4.485c0.017-0.303 0.026-0.657 0.026-1.013 0-7.467-4.189-13.956-10.346-17.245l-0.105-0.051zM723.261 531.968l-3.011 3.85-7.229 3.738c-2.846 1.23-6.155 1.976-9.629 2.048l-0.027 0c-0.385 0.024-0.834 0.038-1.286 0.038-3.365 0-6.55-0.77-9.39-2.143l0.129 0.056-3.625-6.932c-0.011-0.207-0.017-0.449-0.017-0.693 0-3.142 1-6.050 2.699-8.423l-0.030 0.044c2.112-2.376 4.785-4.208 7.814-5.294l0.133-0.041c3.479-1.171 7.603-2.132 11.851-2.705l0.355-0.039c4.219-0.522 12.564-1.516 13.64-1.526l1.311 2.253c-0.184 1.362-2.57 11.264-3.676 15.78z","M663.624 450.284c-2.437-4.547-5.911-8.254-10.121-10.897l-0.119-0.070c-4.631-2.833-10.055-4.905-15.85-5.881l-0.267-0.037c-6.246-1.084-13.438-1.704-20.776-1.704-0.364 0-0.728 0.002-1.091 0.005l0.056-0h-38.779c-4.225 0.199-7.724 3.090-8.831 6.987l-0.016 0.068-26.051 113.562c-0.141 0.463-0.221 0.994-0.221 1.545 0 3.037 2.462 5.499 5.499 5.499 0.11 0 0.22-0.003 0.329-0.010l-0.015 0.001h18.575c4.249-0.156 7.783-3.047 8.902-6.957l0.017-0.068 6.277-27.566c1.133-3.982 4.667-6.877 8.902-7.034l0.017-0.001h5.304c1.538 0.096 3.335 0.15 5.144 0.15 17.771 0 34.315-5.25 48.167-14.284l-0.34 0.208c11.46-8.033 18.859-21.181 18.859-36.057 0-0.284-0.003-0.567-0.008-0.849l0.001 0.042c0.008-0.288 0.013-0.627 0.013-0.966 0-5.704-1.32-11.099-3.671-15.897l0.094 0.213zM623.626 487.414c-5.991 3.855-13.306 6.146-21.157 6.146-0.789 0-1.572-0.023-2.349-0.069l0.107 0.005h-4.618c-0.101 0.007-0.218 0.010-0.337 0.010-3.065 0-5.55-2.485-5.55-5.55 0-0.543 0.078-1.069 0.224-1.565l-0.010 0.039 5.622-24.054c1.074-3.997 4.609-6.912 8.844-7.035l0.014-0h6.011c0.534-0.034 1.157-0.053 1.785-0.053 5.257 0 10.199 1.351 14.497 3.726l-0.155-0.078c3.286 2.255 5.414 5.991 5.414 10.223 0 0.29-0.010 0.579-0.030 0.864l0.002-0.039c0.016 0.298 0.024 0.646 0.024 0.997 0 6.723-3.259 12.685-8.283 16.392l-0.056 0.039z","M822.651 439.685c0.145-0.466 0.229-1.003 0.229-1.558 0-2.997-2.43-5.427-5.427-5.427-0.127 0-0.253 0.004-0.379 0.013l0.017-0.001h-16.609c-3.571 0.259-6.568 2.476-7.943 5.572l-0.024 0.060-0.922 1.434-0.84 3.676-23.224 105.544-0.758 3.246v0.082c-0.113 0.407-0.179 0.875-0.179 1.358 0 2.755 2.121 5.015 4.819 5.235l0.019 0.001 0.287 0.389h17.244c3.601-0.268 6.617-2.523 7.974-5.663l0.023-0.061 0.891-1.352 24.852-112.538z","M542.29 461.588c-4.393 0.051-22.231 0-22.231 0-4.888 0.537-9.063 3.194-11.637 7.018l-0.036 0.057s-26.552 45.578-29.133 50.176h-3.072l-8.315-49.859c-1.314-4.245-5.204-7.275-9.801-7.275-0.107 0-0.215 0.002-0.321 0.005l0.016-0h-16.609c-0.093-0.006-0.203-0.009-0.312-0.009-3.026 0-5.478 2.453-5.478 5.478 0 0.573 0.088 1.126 0.251 1.645l-0.011-0.039s12.616 71.793 15.145 88.689c1.178 9.318-0.154 10.977-0.154 10.977l-16.384 28.611c-2.427 3.891-1.116 7.066 2.867 7.066h19.21c4.879-0.486 9.045-3.166 11.545-7.025l0.037-0.061 73.882-124.928s7.148-10.67 0.543-10.527z"],"attrs":[{},{},{},{},{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 17"]},"attrs":[{},{},{},{},{},{},{},{},{}],"properties":{"order":48,"id":1,"name":"paypal","prevSize":32,"code":59664},"setIdx":0,"setId":1,"iconIdx":15},{"icon":{"paths":["M810.045 270.52l-46.305-46.305c-14.299-14.301-34.054-23.147-55.875-23.147s-41.576 8.846-55.874 23.147l-435.067 435.036-15.677 141.015c-0.116 0.983-0.182 2.122-0.182 3.277 0 16.344 13.231 29.598 29.567 29.634l0.003 0c1.169-0 2.323-0.067 3.457-0.197l-0.139 0.013 140.923-15.565 435.159-435.118c14.301-14.299 23.147-34.054 23.147-55.875s-8.846-41.576-23.147-55.874l-0-0zM347.668 760.822l-83.436 9.216 9.298-83.599 323.789-323.789 74.25 74.25-323.901 323.922zM768.133 340.326l-54.671 54.671-74.24-74.25 54.671-54.671c3.572-3.576 8.509-5.789 13.962-5.789s10.39 2.212 13.962 5.789l0 0 46.305 46.305c3.576 3.578 5.787 8.519 5.787 13.978 0 5.453-2.207 10.391-5.777 13.968l0-0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 5"]},"attrs":[{}],"properties":{"order":37,"id":13,"name":"pencil","prevSize":32,"code":59652},"setIdx":0,"setId":1,"iconIdx":16},{"icon":{"paths":["M996.494 508.315v0c-0.002-14.72-5.618-29.44-16.85-40.671s-25.951-16.848-40.671-16.85l-373.139-0.007 0.029-373.103c-0.002-14.72-5.618-29.44-16.85-40.671s-25.951-16.848-40.671-16.85l0 0c-14.72 0.002-29.44 5.618-40.671 16.85s-16.848 25.951-16.85 40.671l-0.029 373.102h-373.132c-14.72 0.002-29.44 5.618-40.671 16.85s-16.848 25.951-16.85 40.671l0-0c0.002 14.72 5.618 29.44 16.85 40.671s25.951 16.848 40.671 16.85l373.124 0.007 0 373.132c0.002 14.72 5.618 29.44 16.85 40.671s25.951 16.848 40.671 16.85l-0-0c14.72-0.002 29.44-5.618 40.671-16.85s16.848-25.951 16.85-40.671l0.014-373.131 373.103 0.029c14.73 0.005 29.462-5.611 40.7-16.85s16.855-25.97 16.85-40.699l-0-0.001z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 24"]},"attrs":[{}],"properties":{"order":56,"id":24,"name":"plus","prevSize":32,"code":59672},"setIdx":0,"setId":1,"iconIdx":17},{"icon":{"paths":["M477.696 51.884c-46.966 3.894-108.708 18.388-139.364 32.717-2.87 1.341-5.512 2.44-5.873 2.44-1.848 0-32.842 15.030-45.284 21.96-87.7 48.85-162.184 131.443-198.595 220.216-1.848 4.506-4.303 10.348-5.455 12.984-42.673 97.592-42.048 244.004 1.467 342.971 1.91 4.344 3.471 8.182 3.471 8.53 0 3.453 22.42 46.653 32.714 63.035 74.647 118.787 196.47 195.85 337.902 213.757 19.978 2.532 86.666 2.529 106.652 0 66.422-8.41 124.101-28.078 184.092-62.776 57.403-33.198 115.994-90.721 153.784-150.981 10.322-16.456 32.727-59.612 32.727-63.035 0-0.348 1.551-4.165 3.448-8.479 35.809-81.482 43.602-196.764 19.461-287.91-8.901-33.603-26.56-79.411-38.492-99.84-0.658-1.126-3.026-5.504-5.258-9.728-33.971-64.233-95.821-128.852-161.943-169.196-18.598-11.346-58.056-31.508-61.665-31.508-0.364 0-2.611-0.942-4.992-2.097-47.683-23.081-144.417-38.397-208.799-33.060zM560.125 136.215c248.678 33.341 396.89 289.851 301.394 521.623-83.336 202.266-324.324 291.169-520.527 192.031-250.586-126.618-280.284-472.868-55.048-641.782 76.938-57.7 179.456-84.572 274.181-71.872z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (2)"]},"attrs":[{}],"properties":{"order":62,"id":32,"name":"radio","prevSize":32,"code":59669},"setIdx":0,"setId":1,"iconIdx":18},{"icon":{"paths":["M478.208 51.866c-44.772 4.227-78.948 11.208-114.688 23.432-322.975 110.474-418.87 522.662-177.498 762.952 89.052 88.653 199.373 134.006 325.978 134.006 106.342 0 200.727-31.826 282.112-95.124 262.559-204.206 230.797-607.872-60.588-769.981-73.106-40.673-175.409-62.822-255.316-55.283zM531.144 277.565c165.732 13.727 264.937 189.847 191.209 339.451-84.147 170.737-329.439 173.404-418.504 4.552-86.154-163.338 43.284-359.242 227.295-344.003z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (3)"]},"attrs":[{}],"properties":{"order":63,"id":33,"name":"radioSelect","prevSize":32,"code":59668},"setIdx":0,"setId":1,"iconIdx":19},{"icon":{"paths":["M874.865 485.622c-17.235 0.334-31.223 13.788-32.404 30.77l-0.006 0.104c-11.039 136.745-95.365 254.075-215.9 300.36-32.891 12.862-70.971 20.316-110.793 20.316-92.944 0-176.403-40.607-233.605-105.048l-0.28-0.322h90.051c18.377-1.333 32.78-16.569 32.78-35.169s-14.404-33.836-32.666-35.163l-0.115-0.007h-131.246c-36.544 1.351-65.656 31.302-65.656 68.052 0 0.804 0.014 1.605 0.042 2.402l-0.003-0.116v140.677c-0.012 0.34-0.019 0.739-0.019 1.14 0 18.361 14.533 33.327 32.724 34.023l0.063 0.002c18.254-0.698 32.787-15.664 32.787-34.025 0-0.401-0.007-0.8-0.021-1.197l0.002 0.058v-85.74c108.298 114.289 268.37 151.378 411.034 95.232s242.34-195.42 256-357.673c0.097-1.007 0.153-2.178 0.153-3.361 0-9.057-3.25-17.355-8.648-23.792l0.047 0.057c-5.851-7.009-14.554-11.469-24.301-11.581l-0.019-0z","M816.148 116.357c-18.254 0.698-32.787 15.664-32.787 34.025 0 0.401 0.007 0.8 0.021 1.197l-0.002-0.058v85.74c-108.339-114.278-268.401-151.378-411.064-95.242s-242.35 195.42-255.969 357.673c-0.097 1.007-0.153 2.178-0.153 3.361 0 9.057 3.25 17.355 8.648 23.792l-0.047-0.057c5.858 7.023 14.578 11.489 24.343 11.592l0.017 0c17.235-0.334 31.223-13.788 32.404-30.77l0.006-0.104c11.039-136.755 95.365-254.034 215.9-300.37 32.895-12.866 70.981-20.322 110.808-20.322 92.947 0 176.408 40.609 233.61 105.054l0.281 0.322h-90.051c-18.254 0.698-32.787 15.664-32.787 34.025 0 0.401 0.007 0.8 0.021 1.197l-0.002-0.058c-0.012 0.34-0.019 0.739-0.019 1.14 0 18.361 14.533 33.327 32.724 34.023l0.063 0.002h131.226c36.544-1.351 65.656-31.302 65.656-68.052 0-0.804-0.014-1.605-0.042-2.402l0.003 0.116v-140.657c0.012-0.339 0.019-0.738 0.019-1.138 0-18.375-14.556-33.351-32.767-34.024l-0.061-0.002z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 8"]},"attrs":[{},{}],"properties":{"order":39,"id":10,"name":"refresh","prevSize":32,"code":59655},"setIdx":0,"setId":1,"iconIdx":20},{"icon":{"paths":["M453.932 60.16c-8.187 4.513-7.918 2.97-8.492 48.704-0.594 47.345 0.466 43.451-12.429 45.658-111.071 19-216.776 94.211-275.031 195.686-117.496 204.659-36.636 466.545 175.332 567.846 238.551 114.007 519.767-25.321 572.966-283.876 6.513-31.647 10.132-77.734 7.204-91.684-9.513-45.286-71.954-52.495-91.85-10.604l-3.666 7.724-1.362 23.311c-9.047 154.934-112.415 269.978-264.668 294.566-109.632 17.705-231.009-35.32-295.171-128.95-120.020-175.142-35.469-411.779 168.43-471.401 7.565-2.212 15.099-4.18 16.742-4.372l2.99-0.353 0.512 35.328c0.568 39.163 0.699 39.944 7.473 44.073 6.881 4.196 15.923 2.255 24.891-5.34 2.877-2.437 8.177-6.822 11.776-9.746 109.885-89.252 129.152-105.462 132.076-111.122 6.2-12.014 1.994-20.457-18.519-37.169-8.73-7.112-21.402-17.462-28.16-22.999-67.709-55.491-103.936-84.726-106.307-85.793-4.050-1.823-10.936-1.582-14.738 0.512z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["image2vector (1)"]},"attrs":[{}],"properties":{"order":61,"id":31,"name":"reload","prevSize":32,"code":59670},"setIdx":0,"setId":1,"iconIdx":21},{"icon":{"paths":["M517.007 358.4c-84.831 0-153.6 68.769-153.6 153.6s68.769 153.6 153.6 153.6c84.831 0 153.6-68.769 153.6-153.6v0c0-84.831-68.769-153.6-153.6-153.6v0zM517.007 588.8c-42.415 0-76.8-34.385-76.8-76.8s34.385-76.8 76.8-76.8c42.415 0 76.8 34.385 76.8 76.8v0c0 42.415-34.385 76.8-76.8 76.8v0z","M873.902 584.96l-17.050-9.83c3.662-18.993 5.757-40.837 5.757-63.171s-2.095-44.177-6.1-65.346l0.342 2.175 17.050-9.83c34.714-20.296 57.664-57.388 57.664-99.84 0-63.659-51.605-115.264-115.264-115.264-21.206 0-41.075 5.727-58.145 15.719l0.545-0.295-17.091 9.871c-30.957-26.578-67.287-47.983-107.002-62.301l-2.403-0.757v-19.692c0-63.623-51.577-115.2-115.2-115.2s-115.2 51.577-115.2 115.2v0 19.702c-42.107 15.123-78.421 36.574-109.817 63.583l0.454-0.381-17.162-9.943c-16.525-9.697-36.394-15.424-57.6-15.424-63.659 0-115.264 51.605-115.264 115.264 0 42.452 22.95 79.544 57.119 99.545l0.545 0.295 17.050 9.83c-3.662 18.993-5.757 40.837-5.757 63.171s2.095 44.177 6.1 65.346l-0.342-2.175-17.050 9.83c-34.714 20.296-57.664 57.388-57.664 99.84 0 63.659 51.605 115.264 115.264 115.264 21.206 0 41.075-5.727 58.145-15.719l-0.545 0.295 17.091-9.871c30.968 26.582 67.312 47.987 107.042 62.302l2.403 0.756v19.692c0 63.623 51.577 115.2 115.2 115.2s115.2-51.577 115.2-115.2v0-19.702c42.107-15.126 78.422-36.58 109.816-63.592l-0.453 0.381 17.162 9.912c16.525 9.697 36.394 15.424 57.6 15.424 63.659 0 115.264-51.605 115.264-115.264 0-42.452-22.95-79.544-57.119-99.545l-0.545-0.295zM776.059 439.962c6.193 21.586 9.754 46.378 9.754 72.003s-3.561 50.417-10.215 73.91l0.462-1.907c-0.884 3.072-1.393 6.601-1.393 10.248 0 14.143 7.646 26.5 19.029 33.163l0.181 0.098 41.626 24.044c11.571 6.765 19.221 19.129 19.221 33.28 0 21.22-17.202 38.421-38.421 38.421-7.069 0-13.692-1.909-19.382-5.24l0.182 0.098-41.708-24.115c-5.518-3.25-12.156-5.169-19.242-5.169-10.733 0-20.437 4.403-27.405 11.502l-0.006 0.006c-33.26 33.933-75.398 59.044-122.657 71.575l-1.871 0.422c-16.712 4.403-28.836 19.381-28.836 37.19 0 0.008 0 0.016 0 0.024l-0-0.001v48.128c0 21.208-17.192 38.4-38.4 38.4s-38.4-17.192-38.4-38.4v0-48.118c0-0.007 0-0.014 0-0.022 0-17.809-12.124-32.787-28.568-37.13l-0.268-0.060c-49.127-13.005-91.251-38.166-124.439-72.101l-0.048-0.050c-6.974-7.104-16.678-11.508-27.411-11.508-7.086 0-13.725 1.92-19.423 5.267l0.18-0.098-41.626 24.074c-5.508 3.232-12.131 5.141-19.2 5.141-21.22 0-38.421-17.202-38.421-38.421 0-14.151 7.65-26.515 19.040-33.182l0.182-0.098 41.626-24.033c11.565-6.762 19.21-19.119 19.21-33.261 0-3.647-0.509-7.176-1.459-10.519l0.066 0.271c-6.193-21.586-9.754-46.378-9.754-72.003s3.561-50.417 10.215-73.91l-0.462 1.907c0.858-3.027 1.351-6.504 1.351-10.095 0-14.142-7.645-26.499-19.028-33.163l-0.181-0.098-41.636-23.972c-11.571-6.765-19.221-19.129-19.221-33.28 0-21.22 17.202-38.421 38.421-38.421 7.069 0 13.692 1.909 19.382 5.24l-0.182-0.098 41.697 24.115c5.541 3.284 12.213 5.225 19.338 5.225 10.664 0 20.313-4.347 27.271-11.366l0.003-0.003c33.26-33.933 75.398-59.044 122.657-71.575l1.871-0.422c16.712-4.403 28.836-19.381 28.836-37.19 0-0.062-0-0.124-0-0.185l0 0.010v-48.108c0-21.208 17.192-38.4 38.4-38.4s38.4 17.192 38.4 38.4v0 48.077c-0 0.007-0 0.014-0 0.022 0 17.809 12.124 32.787 28.568 37.13l0.268 0.060c49.151 12.995 91.297 38.157 124.502 72.102l0.048 0.049c6.974 7.104 16.678 11.508 27.411 11.508 7.086 0 13.725-1.92 19.423-5.267l-0.18 0.098 41.626-24.074c5.508-3.232 12.131-5.141 19.2-5.141 21.22 0 38.421 17.202 38.421 38.421 0 14.151-7.65 26.515-19.040 33.182l-0.182 0.098-41.626 24.033c-11.525 6.771-19.139 19.106-19.139 33.22 0 3.607 0.497 7.097 1.427 10.407l-0.065-0.27z"],"attrs":[{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 14"]},"attrs":[{},{}],"properties":{"order":45,"id":4,"name":"setting","prevSize":32,"code":59661},"setIdx":0,"setId":1,"iconIdx":22},{"icon":{"paths":["M512 344.433c-92.545 0-167.567 75.022-167.567 167.567s75.022 167.567 167.567 167.567c92.545 0 167.567-75.022 167.567-167.567v0c0-0.015 0-0.033 0-0.051 0-92.517-75-167.516-167.516-167.516-0.018 0-0.036 0-0.054 0l0.003-0zM886.508 470.108c-20.137-174.999-157.617-312.478-330.87-332.452l-1.745-0.164v-86.292h-83.784v86.292c-175.010 20.115-312.501 157.606-332.452 330.872l-0.163 1.744h-86.292v83.784h86.292c20.137 174.999 157.617 312.478 330.87 332.452l1.745 0.164v86.292h83.784v-86.292c174.999-20.137 312.478-157.617 332.452-330.87l0.164-1.745h86.292v-83.784zM512 805.233c-161.948 0-293.233-131.285-293.233-293.233s131.285-293.233 293.233-293.233c161.948 0 293.233 131.285 293.233 293.233v0c-0.035 161.934-131.299 293.198-293.229 293.233l-0.003 0z"],"attrs":[{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 19"]},"attrs":[{}],"properties":{"order":51,"id":29,"name":"target","prevSize":32,"code":59667},"setIdx":0,"setId":1,"iconIdx":23},{"icon":{"paths":["M828.211 227.85h-110.060c-17.219-81.592-88.567-141.969-174.037-142.080l-0.012-0h-71.035c-85.495 0.096-156.859 60.478-173.874 140.918l-0.206 1.162h-110.070c-0.179-0.003-0.391-0.005-0.603-0.005-19.619 0-35.523 15.904-35.523 35.523s15.904 35.523 35.523 35.523c0.212 0 0.424-0.002 0.635-0.006l-0.032 0h35.512v461.701c0.093 98.058 79.548 177.527 177.592 177.644l213.126 0c98.050-0.122 177.499-79.589 177.592-177.635l0-0.009v-461.701h35.471c19.357-0.339 34.919-16.111 34.919-35.517s-15.562-35.178-34.888-35.517l-0.032-0zM473.068 156.805h71.035c46.105 0.057 85.358 29.328 100.249 70.292l0.236 0.743h-272.005c15.127-41.707 54.38-70.977 100.478-71.035l0.007-0zM721.715 760.586c0 0.015 0 0.033 0 0.051 0 58.85-47.707 106.557-106.557 106.557-0.004 0-0.007-0-0.011-0l-213.114 0c-58.85 0-106.557-47.707-106.557-106.557 0-0.018 0-0.036 0-0.054l-0 0.003v-461.701h426.24z","M437.555 725.115c19.619 0 35.523-15.904 35.523-35.523v0-213.105c-0.339-19.357-16.111-34.919-35.517-34.919s-35.178 15.562-35.517 34.888l-0 0.032v213.115c0.006 19.611 15.902 35.506 35.512 35.512l0.001 0z","M579.625 725.115c19.619 0 35.523-15.904 35.523-35.523v0-213.105c0.003-0.179 0.005-0.391 0.005-0.603 0-19.619-15.904-35.523-35.523-35.523s-35.523 15.904-35.523 35.523c0 0.212 0.002 0.424 0.006 0.635l-0-0.032v213.115c0.006 19.611 15.902 35.506 35.512 35.512l0.001 0z"],"attrs":[{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 4"]},"attrs":[{},{},{}],"properties":{"order":36,"id":14,"name":"trash","prevSize":32,"code":59651},"setIdx":0,"setId":1,"iconIdx":24},{"icon":{"paths":["M423.148 398.182c-2.119-0.878-4.58-1.387-7.16-1.387-8.029 0-14.905 4.936-17.759 11.939l-0.046 0.128-71.997 179.937h-6.144v-172.8c-0.006-10.602-8.598-19.194-19.199-19.2l-76.801-0c-10.604 0-19.2 8.596-19.2 19.2s8.596 19.2 19.2 19.2v0h57.6v172.8c0.006 10.602 8.598 19.194 19.199 19.2l38.401 0c8.029-0.006 14.905-4.937 17.771-11.935l0.046-0.128 76.8-192c0.873-2.114 1.38-4.568 1.38-7.14 0-8.038-4.947-14.92-11.962-17.768l-0.128-0.046z","M496.527 397.179c-1.069-0.208-2.298-0.328-3.555-0.328-9.302 0-17.079 6.527-19 15.251l-0.024 0.129-38.4 192c-0.235 1.126-0.369 2.421-0.369 3.746 0 9.281 6.586 17.025 15.339 18.812l0.124 0.021c1.114 0.241 2.393 0.379 3.705 0.379 0.033 0 0.066-0 0.1-0l-0.005 0c9.238-0.014 16.945-6.554 18.758-15.256l0.022-0.125 38.4-192c0.241-1.141 0.379-2.452 0.379-3.796 0-9.285-6.591-17.031-15.349-18.814l-0.123-0.021z","M651.162 400.906c-3.072-0.84-76.995-18.975-105.472 27.269-6.061 8.825-9.68 19.739-9.68 31.498 0 4.393 0.505 8.668 1.46 12.769l-0.074-0.379c6.717 27.648 35.369 44.698 49.152 52.91 22.118 13.138 33.792 26.419 31.375 35.441-2.827 9.948-9.393 18.029-18.044 22.789l-0.194 0.098c-14.397 7.68-35.942 6.994-62.249-1.925-1.844-0.648-3.971-1.022-6.185-1.022-10.617 0-19.224 8.607-19.224 19.224 0 8.403 5.391 15.547 12.904 18.161l0.135 0.041c14.968 5.57 32.258 8.958 50.289 9.326l0.163 0.003c0.488 0.010 1.063 0.015 1.64 0.015 14.836 0 28.815-3.669 41.080-10.148l-0.48 0.231c18.109-9.843 31.541-26.357 37.115-46.161l0.128-0.533c5.263-19.456 1.116-48.845-48.804-78.531-8.489-5.069-28.529-17.009-31.447-29.030-0.186-0.975-0.292-2.097-0.292-3.244 0-4.309 1.5-8.268 4.006-11.384l-0.027 0.035c11.264-18.432 50.493-13.435 63.365-10.24 1.412 0.372 3.034 0.586 4.705 0.586 10.599 0 19.192-8.592 19.192-19.192 0-8.928-6.096-16.432-14.353-18.577l-0.133-0.029z","M800 396.8h-38.441c-8.029 0.006-14.905 4.937-17.771 11.935l-0.046 0.128-76.8 192c-0.879 2.12-1.389 4.582-1.389 7.163 0 8.026 4.932 14.899 11.931 17.756l0.128 0.046c2.090 0.875 4.519 1.383 7.067 1.383 0.036 0 0.071-0 0.107-0l-0.006 0c8.029-0.006 14.905-4.937 17.771-11.935l0.046-0.128 71.997-179.937h6.144v172.8c0 10.604 8.596 19.2 19.2 19.2s19.2-8.596 19.2-19.2v0-192c0-0 0-0 0-0 0-10.584-8.56-19.169-19.135-19.21l-0.004-0z","M800 512h-76.8c-10.604 0-19.2 8.596-19.2 19.2s8.596 19.2 19.2 19.2v0h76.8c10.604 0 19.2-8.596 19.2-19.2s-8.596-19.2-19.2-19.2v0z","M838.4 204.8h-652.8c-74.194 0.082-134.318 60.206-134.4 134.392l-0 0.008v345.6c0.082 74.194 60.206 134.318 134.392 134.4l652.808 0c74.194-0.082 134.318-60.206 134.4-134.392l0-0.008v-345.6c-0.082-74.194-60.206-134.318-134.392-134.4l-0.008-0zM934.4 684.8c-0.064 52.994-43.006 95.936-95.994 96l-652.806 0c-52.994-0.064-95.936-43.006-96-95.994l-0-0.006v-345.6c0.064-52.994 43.006-95.936 95.994-96l652.806-0c52.994 0.064 95.936 43.006 96 95.994l0 0.006z"],"attrs":[{},{},{},{},{},{}],"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon – 16"]},"attrs":[{},{},{},{},{},{}],"properties":{"order":47,"id":2,"name":"visa","prevSize":32,"code":59663},"setIdx":0,"setId":1,"iconIdx":25}],"height":1024,"metadata":{"name":"icomoon"},"preferences":{"showGlyphs":true,"showCodes":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"icomoon"},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false,"autoHost":false},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"name":"icomoon","classSelector":".icon"},"historySize":50,"quickUsageToken":{"Enatega-SingleVendor":"YmFjMTZkYWQ3ZWUzYzE2MTYxNzQ1N2FjNjc4Y2NiZGQjMSMxNjIzMjYwNzE0IyMj"},"gridSize":16,"showGrid":false}} \ No newline at end of file diff --git a/CustomerApp/src/components/CustomizeComponents/CartComponent/CartComponent.js b/CustomerApp/src/components/CustomizeComponents/CartComponent/CartComponent.js new file mode 100644 index 0000000..29c4079 --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/CartComponent/CartComponent.js @@ -0,0 +1,81 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React, { useState } from 'react' +import { TouchableOpacity, View } from 'react-native' +import { ICONS_NAME } from '../../../utils/constant' +import { scale } from '../../../utils/scaling' +import { CustomIcon } from '../../CustomIcon' +import { FlashMessage } from '../../FlashMessage/FlashMessage' +import TextDefault from '../../Text/TextDefault/TextDefault' +import useStyle from './styles' + +function CartComponent(props) { + const { colors } = useTheme() + const styles = useStyle() + const [quantity, setQuantity] = useState(1) + + function onAdd() { + if (props.stock > quantity) setQuantity(quantity + 1) + else { + FlashMessage({ + message: 'No more items in stock' + }) + } + } + function onRemove() { + if (quantity === 1) return + setQuantity(quantity - 1) + } + + return ( + + + + + + + {quantity} + + + + + + + Add To Cart + + + + + ) +} +CartComponent.propTypes = { + stock: PropTypes.number.isRequired, + onPress: PropTypes.func, + disabled: PropTypes.bool +} + +export default CartComponent diff --git a/CustomerApp/src/components/CustomizeComponents/CartComponent/styles.js b/CustomerApp/src/components/CustomizeComponents/CartComponent/styles.js new file mode 100644 index 0000000..89cb714 --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/CartComponent/styles.js @@ -0,0 +1,55 @@ +import { useTheme } from '@react-navigation/native' +import { Dimensions, StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' +import { moderateScale, scale, verticalScale } from '../../../utils/scaling' +const { height } = Dimensions.get('window') + +const useStyle = () => { + const { colors } = useTheme() + + return StyleSheet.create({ + flex: { + flex: 1 + }, + mainContainer: { + width: '100%', + height: height * 0.08, + backgroundColor: 'transparent', + justifyContent: 'center', + alignItems: 'center', + ...alignment.MBlarge + }, + subContainer: { + width: '90%', + height: '70%', + alignItems: 'center', + justifyContent: 'space-around', + flexDirection: 'row' + }, + icon: { + width: '10%', + height: '90%', + justifyContent: 'center', + alignItems: 'center', + backgroundColor: colors.white, + borderRadius: scale(12), + elevation: 3, + shadowColor: colors.shadowColor, + shadowOffset: { + width: 0, + height: verticalScale(1) + }, + shadowOpacity: 0.5, + shadowRadius: verticalScale(1) + }, + btnContainer: { + width: '50%', + height: '100%', + borderRadius: moderateScale(12), + backgroundColor: colors.horizontalLine, + justifyContent: 'center', + alignItems: 'center' + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/CustomizeComponents/CheckComponent/CheckComponent.js b/CustomerApp/src/components/CustomizeComponents/CheckComponent/CheckComponent.js new file mode 100644 index 0000000..996a01e --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/CheckComponent/CheckComponent.js @@ -0,0 +1,67 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React, { useContext, useState } from 'react' +import { TouchableOpacity, View } from 'react-native' +import ConfigurationContext from '../../../context/Configuration' +import { alignment } from '../../../utils/alignment' +import CheckboxBtn from '../../FdCheckbox/CheckboxBtn' +import TextDefault from '../../Text/TextDefault/TextDefault' +import useStyle from './styles' + +function CheckComponent(props) { + const styles = useStyle() + const { colors } = useTheme() + const [options, setOptions] = useState( + props.options.map(option => ({ ...option, checked: false })) + ) + const configuration = useContext(ConfigurationContext) + + function onPress(option) { + const tempOptions = options + const index = tempOptions.findIndex(opt => opt._id === option._id) + tempOptions[index].checked = !tempOptions[index].checked + setOptions(tempOptions) + props.onPress(option) + } + return ( + + {options.map(option => ( + + + + + {option.title} + + + + {`${configuration.currency_symbol} ${option.price}`} + + + ))} + + ) +} +CheckComponent.propTypes = { + options: PropTypes.arrayOf(PropTypes.object), + onPress: PropTypes.func +} + +export default CheckComponent diff --git a/CustomerApp/src/components/CustomizeComponents/CheckComponent/styles.js b/CustomerApp/src/components/CustomizeComponents/CheckComponent/styles.js new file mode 100644 index 0000000..03c3f23 --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/CheckComponent/styles.js @@ -0,0 +1,29 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + mainContainer: { + width: '100%', + flexDirection: 'row', + borderBottomWidth: StyleSheet.hairlineWidth, + borderBottomColor: colors.horizontalLine, + ...alignment.PBsmall, + ...alignment.MBsmall + }, + leftContainer: { + flex: 1, + flexDirection: 'row', + alignItems: 'center' + }, + rightContainer: { + justifyContent: 'center' + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/CustomizeComponents/HeadingComponent/HeadingComponent.js b/CustomerApp/src/components/CustomizeComponents/HeadingComponent/HeadingComponent.js new file mode 100644 index 0000000..2e98f8c --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/HeadingComponent/HeadingComponent.js @@ -0,0 +1,46 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React, { useContext } from 'react' +import { View } from 'react-native' +import ConfigurationContext from '../../../context/Configuration' +import TextDefault from '../../Text/TextDefault/TextDefault' +import styles from './styles' + +function HeadingComponent(props) { + const configuration = useContext(ConfigurationContext) + const { colors } = useTheme() + + return ( + <> + + + + {props.title} + + + + {`${configuration.currency_symbol} ${props.price}`} + + + + + {props.desc} + + + + ) +} + +HeadingComponent.propTypes = { + title: PropTypes.string, + price: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + desc: PropTypes.string +} +export default HeadingComponent diff --git a/CustomerApp/src/components/CustomizeComponents/HeadingComponent/styles.js b/CustomerApp/src/components/CustomizeComponents/HeadingComponent/styles.js new file mode 100644 index 0000000..9e9873e --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/HeadingComponent/styles.js @@ -0,0 +1,25 @@ +import { StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' +const styles = StyleSheet.create({ + topContainer: { + width: '100%', + flexDirection: 'row', + ...alignment.PTsmall, + ...alignment.PBxSmall + }, + titleContainer: { + width: '70%', + ...alignment.PRxSmall, + justifyContent: 'center' + }, + priceContainer: { + width: '30%', + justifyContent: 'center', + alignItems: 'flex-end' + }, + descContainer: { + width: '100%', + ...alignment.MBsmall + } +}) +export default styles diff --git a/CustomerApp/src/components/CustomizeComponents/ImageHeader/ImageHeader.js b/CustomerApp/src/components/CustomizeComponents/ImageHeader/ImageHeader.js new file mode 100644 index 0000000..7e5bd8f --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/ImageHeader/ImageHeader.js @@ -0,0 +1,18 @@ +import PropTypes from 'prop-types' +import React from 'react' +import { Image } from 'react-native' +import { styles } from './styles' + +function ImageHeader(props) { + return ( + + ) +} +ImageHeader.propTypes = { + image: PropTypes.string +} +export default ImageHeader diff --git a/CustomerApp/src/components/CustomizeComponents/ImageHeader/styles.js b/CustomerApp/src/components/CustomizeComponents/ImageHeader/styles.js new file mode 100644 index 0000000..5355075 --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/ImageHeader/styles.js @@ -0,0 +1,14 @@ +import { Dimensions, StyleSheet } from 'react-native' +import { moderateScale } from '../../../utils/scaling' +const { height } = Dimensions.get('window') + +export const styles = StyleSheet.create({ + backgroundImage: { + width: '100%', + borderTopLeftRadius: moderateScale(30), + borderTopRightRadius: moderateScale(30), + // borderTopEndRadius:moderateScale(20), + // borderTopStartRadius:moderateScale(20), + height: height * 0.22 + } +}) diff --git a/CustomerApp/src/components/CustomizeComponents/RadioComponent/RadioComponent.js b/CustomerApp/src/components/CustomizeComponents/RadioComponent/RadioComponent.js new file mode 100644 index 0000000..0c4fdfa --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/RadioComponent/RadioComponent.js @@ -0,0 +1,70 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React, { useContext, useState } from 'react' +import { TouchableOpacity, View } from 'react-native' +import ConfigurationContext from '../../../context/Configuration' +import { alignment } from '../../../utils/alignment' +import RadioButton from '../../FdRadioBtn/RadioBtn' +import TextDefault from '../../Text/TextDefault/TextDefault' +import useStyle from './styles' + +function RadioComponent(props) { + const styles = useStyle() + const { colors } = useTheme() + const [options] = useState(props.options) + const [selected, setSelected] = useState(props.selected || null) + const configuration = useContext(ConfigurationContext) + + function onPress(option) { + setSelected(option) + props.onPress(option) + } + return ( + <> + {options.map(option => { + const isChecked = selected._id === option._id + return ( + + + + + {option.title} + + + + {`${configuration.currency_symbol} ${option.price}`} + + + ) + })} + + ) +} + +RadioComponent.propTypes = { + selected: PropTypes.any, + options: PropTypes.arrayOf(PropTypes.object), + onPress: PropTypes.func +} +export default RadioComponent diff --git a/CustomerApp/src/components/CustomizeComponents/RadioComponent/styles.js b/CustomerApp/src/components/CustomizeComponents/RadioComponent/styles.js new file mode 100644 index 0000000..dbd3324 --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/RadioComponent/styles.js @@ -0,0 +1,27 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + mainContainer: { + width: '100%', + flexDirection: 'row', + alignItems: 'center', + borderBottomWidth: StyleSheet.hairlineWidth, + borderBottomColor: colors.horizontalLine, + ...alignment.PBsmall, + ...alignment.MBsmall + }, + leftContainer: { + flex: 1, + flexDirection: 'row', + alignItems: 'center' + }, + rightContainer: { + justifyContent: 'center' + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/CustomizeComponents/TitleComponent/TitleComponent.js b/CustomerApp/src/components/CustomizeComponents/TitleComponent/TitleComponent.js new file mode 100644 index 0000000..5235b8a --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/TitleComponent/TitleComponent.js @@ -0,0 +1,46 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React from 'react' +import { View } from 'react-native' +import { alignment } from '../../../utils/alignment' +import TextDefault from '../../Text/TextDefault/TextDefault' +import styles from './styles' + +function TitleComponent(props) { + const { colors } = useTheme() + + return ( + + + + {props.title} + + + {props.subTitle} + + + + ({props.status}) + + + ) +} +TitleComponent.propTypes = { + title: PropTypes.string.isRequired, + subTitle: PropTypes.string, + error: PropTypes.bool, + status: PropTypes.string +} + +export default TitleComponent diff --git a/CustomerApp/src/components/CustomizeComponents/TitleComponent/styles.js b/CustomerApp/src/components/CustomizeComponents/TitleComponent/styles.js new file mode 100644 index 0000000..d04a8b8 --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/TitleComponent/styles.js @@ -0,0 +1,19 @@ +import { StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' + +const styles = StyleSheet.create({ + mainContainer: { + width: '100%', + flexDirection: 'row', + justifyContent: 'flex-start', + ...alignment.MBmedium, + ...alignment.MTsmall + }, + leftContainer: { + // width: '70%' + }, + rightContainer: { + width: '30%' + } +}) +export default styles diff --git a/CustomerApp/src/components/CustomizeComponents/index.js b/CustomerApp/src/components/CustomizeComponents/index.js new file mode 100644 index 0000000..30b2c56 --- /dev/null +++ b/CustomerApp/src/components/CustomizeComponents/index.js @@ -0,0 +1,15 @@ +import CartComponent from './CartComponent/CartComponent' +import CheckComponent from './CheckComponent/CheckComponent' +import HeadingComponent from './HeadingComponent/HeadingComponent' +import ImageHeader from './ImageHeader/ImageHeader' +import RadioComponent from './RadioComponent/RadioComponent' +import TitleComponent from './TitleComponent/TitleComponent' + +export { + CartComponent, + CheckComponent, + HeadingComponent, + ImageHeader, + RadioComponent, + TitleComponent +} diff --git a/CustomerApp/src/components/Drawer/Profile/DrawerProfile.js b/CustomerApp/src/components/Drawer/Profile/DrawerProfile.js new file mode 100644 index 0000000..57f1532 --- /dev/null +++ b/CustomerApp/src/components/Drawer/Profile/DrawerProfile.js @@ -0,0 +1,58 @@ +import { useNavigation } from '@react-navigation/native' +import React, { useContext } from 'react' +import { TouchableOpacity, View } from 'react-native' +import UserContext from '../../../context/User' +import { alignment } from '../../../utils/alignment' +import { NAVIGATION_SCREEN } from '../../../utils/constant' +import { TextDefault } from '../../Text' +import useStyle from './styles' + +function DrawerProfile() { + const styles = useStyle() + const navigation = useNavigation() + const { isLoggedIn, loadingProfile, profile } = useContext(UserContext) + + if (loadingProfile) return Loading... + return ( + + {!isLoggedIn && ( + + { + navigation.navigate(NAVIGATION_SCREEN.CreateAccount) + }}> + + Login/Create Account + + + + )} + + {isLoggedIn && profile && ( + <> + + + {profile.name.substr(0, 1).toUpperCase()} + + + + Welcome + + + {profile.name} + + + )} + + + ) +} +export default DrawerProfile diff --git a/CustomerApp/src/components/Drawer/Profile/styles.js b/CustomerApp/src/components/Drawer/Profile/styles.js new file mode 100644 index 0000000..fa91c28 --- /dev/null +++ b/CustomerApp/src/components/Drawer/Profile/styles.js @@ -0,0 +1,55 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' +import { scale } from '../../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + + return StyleSheet.create({ + mainContainer: { + flex: 1, + backgroundColor: colors.headerBackground + }, + logInContainer: { + width: '100%', + height: '100%', + justifyContent: 'flex-end', + ...alignment.PBlarge, + ...alignment.PLmedium + }, + whiteFont: { + color: colors.fontWhite + }, + loggedInContainer: { + flex: 1, + justifyContent: 'center', + ...alignment.Plarge + }, + imgContainer: { + width: scale(70), + height: scale(70), + borderRadius: scale(15), + borderStyle: 'dashed', + borderColor: colors.cardContainer, + borderWidth: 2, + justifyContent: 'center', + alignItems: 'center', + overflow: 'hidden', + backgroundColor: 'transparent', + padding: 2, + ...alignment.MBsmall + }, + imgResponsive: { + width: '100%', + height: '100%', + borderRadius: scale(15) + }, + loadingView: { + backgroundColor: 'transparent', + width: '100%', + height: '100%' + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/Drawer/index.js b/CustomerApp/src/components/Drawer/index.js new file mode 100644 index 0000000..2fff47b --- /dev/null +++ b/CustomerApp/src/components/Drawer/index.js @@ -0,0 +1,3 @@ +import DrawerProfile from './Profile/DrawerProfile' + +export { DrawerProfile } diff --git a/CustomerApp/src/components/EnategaImage/EnategaImage.js b/CustomerApp/src/components/EnategaImage/EnategaImage.js new file mode 100644 index 0000000..59d3907 --- /dev/null +++ b/CustomerApp/src/components/EnategaImage/EnategaImage.js @@ -0,0 +1,59 @@ +/* eslint-disable react/prop-types */ +import React, { useState } from 'react' +import { Image, Platform, View } from 'react-native' +import { isObject } from 'validate.js' +import Spinner from '../Spinner/Spinner' +import useStyle from './styles' + +const iosPlacholder = require('../../assets/images/food_placeholder.png') +const PLACEHOLDER = require('../../assets/images/imagePlaceholder.png') + +function EnategaImage({ + imgSource, + imgStyle = null, + resizeMode = 'cover', + spinnerProps +}) { + const styles = useStyle() + const [startImgLoading, setStartImgLoading] = useState(false) + + const imageUrl = isObject(imgSource) + ? { ...imgSource, cache: 'force-cache' } + : imgSource || PLACEHOLDER + const style = imgStyle || styles.imgContainer + + const androidImage = ( + setStartImgLoading(true)} + onLoadEnd={() => setStartImgLoading(false)} + resizeMode={imgSource ? resizeMode : 'contain'} + /> + ) + + const iosImage = ( + + ) + + return ( + + {startImgLoading && ( + + )} + {Platform.OS === 'ios' ? iosImage : androidImage} + + ) +} + +export default React.memo(EnategaImage) diff --git a/CustomerApp/src/components/EnategaImage/styles.js b/CustomerApp/src/components/EnategaImage/styles.js new file mode 100644 index 0000000..a31b58b --- /dev/null +++ b/CustomerApp/src/components/EnategaImage/styles.js @@ -0,0 +1,20 @@ +import { StyleSheet } from 'react-native' + +const useStyle = () => { + return StyleSheet.create({ + imgContainer: { + width: 50, + height: 50, + borderRadius: 8, + overflow: 'hidden' + }, + imgResponsive: { + flex: 1, + backgroundColor: 'white', + height: undefined, + width: undefined + } + }) +} + +export default useStyle diff --git a/CustomerApp/src/components/FdCheckbox/CheckboxBtn.js b/CustomerApp/src/components/FdCheckbox/CheckboxBtn.js new file mode 100644 index 0000000..2e77fa1 --- /dev/null +++ b/CustomerApp/src/components/FdCheckbox/CheckboxBtn.js @@ -0,0 +1,31 @@ +import { AntDesign } from '@expo/vector-icons' +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React from 'react' +import { TouchableOpacity } from 'react-native' +import { scale } from '../../utils/scaling' +import useStyle from './styles' + +function CheckboxBtn(props) { + const styles = useStyle() + const { colors } = useTheme() + return ( + + {props.checked ? ( + + ) : null} + + ) +} +CheckboxBtn.propTypes = { + onPress: PropTypes.func, + checked: PropTypes.bool +} +export default CheckboxBtn diff --git a/CustomerApp/src/components/FdCheckbox/styles.js b/CustomerApp/src/components/FdCheckbox/styles.js new file mode 100644 index 0000000..880532b --- /dev/null +++ b/CustomerApp/src/components/FdCheckbox/styles.js @@ -0,0 +1,19 @@ +import { scale } from '../../utils/scaling' +import { StyleSheet } from 'react-native' +import { useTheme } from '@react-navigation/native' + +const useStyle = () => { + const { colors } = useTheme() + + return StyleSheet.create({ + mainContainer: { + borderColor: colors.horizontalLine, + borderWidth: StyleSheet.hairlineWidth, + width: scale(20), + height: scale(20), + justifyContent: 'center', + alignItems: 'center' + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/FdRadioBtn/RadioBtn.js b/CustomerApp/src/components/FdRadioBtn/RadioBtn.js new file mode 100644 index 0000000..5d06f21 --- /dev/null +++ b/CustomerApp/src/components/FdRadioBtn/RadioBtn.js @@ -0,0 +1,50 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React from 'react' +import { TouchableOpacity, View } from 'react-native' +import styles from './styles' + +const DEFAULT_SIZE_MULTIPLIER = 0.7 + +function RadioButton(props) { + const { colors } = useTheme() + + const { + size = 16, + innerColor = colors.radioColor, + outerColor = colors.radioOuterColor, + isSelected = false, + onPress = () => null + } = props + + const outerStyle = { + borderColor: isSelected ? outerColor : colors.fontSecondColor, + width: size + size * DEFAULT_SIZE_MULTIPLIER, + height: size + size * DEFAULT_SIZE_MULTIPLIER, + borderRadius: (size + size * DEFAULT_SIZE_MULTIPLIER) / 2, + borderWidth: isSelected ? size / 2 : 1 + } + + const innerStyle = { + width: size / 2, + height: size / 2, + borderRadius: size / 2, + backgroundColor: innerColor + } + + return ( + + {isSelected ? : null} + + ) +} + +RadioButton.propTypes = { + size: PropTypes.number, + innerColor: PropTypes.string, + outerColor: PropTypes.string, + isSelected: PropTypes.bool, + onPress: PropTypes.func +} + +export default RadioButton diff --git a/CustomerApp/src/components/FdRadioBtn/styles.js b/CustomerApp/src/components/FdRadioBtn/styles.js new file mode 100644 index 0000000..8c46fa6 --- /dev/null +++ b/CustomerApp/src/components/FdRadioBtn/styles.js @@ -0,0 +1,7 @@ +export default { + radio: { + justifyContent: 'center', + alignItems: 'center', + alignSelf: 'center' + } +} diff --git a/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/FdEmailBtn.js b/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/FdEmailBtn.js new file mode 100644 index 0000000..1b36b0d --- /dev/null +++ b/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/FdEmailBtn.js @@ -0,0 +1,44 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React from 'react' +import { TouchableOpacity } from 'react-native' +import Spinner from '../../../components/Spinner/Spinner' +import TextDefault from '../../../components/Text/TextDefault/TextDefault' +import { COLORS } from '../../../Theme' +import { alignment } from '../../../utils/alignment' +import { ICONS_NAME } from '../../../utils/constant' +import { scale } from '../../../utils/scaling' +import { CustomIcon } from '../../CustomIcon' +import useStyle from './styles' + +const FdEmailBtn = props => { + const styles = useStyle() + const { colors } = useTheme() + return ( + + {props.loadingIcon ? ( + + ) : ( + <> + + + Signup using Email + + + )} + + ) +} +FdEmailBtn.propTypes = { + onPress: PropTypes.func, + loadingIcon: PropTypes.bool +} +export default FdEmailBtn diff --git a/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/styles.js b/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/styles.js new file mode 100644 index 0000000..c85197d --- /dev/null +++ b/CustomerApp/src/components/FdSocialBtn/FdEmailBtn/styles.js @@ -0,0 +1,26 @@ +import { useTheme } from '@react-navigation/native' +import { Dimensions, StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' +import { moderateScale } from '../../../utils/scaling' +const { height } = Dimensions.get('window') + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + mainContainer: { + width: '100%', + height: height * 0.07, + backgroundColor: colors.buttonBackgroundLight, + flexDirection: 'row', + alignItems: 'center', + borderRadius: moderateScale(20) + }, + marginLeft5: { + ...alignment.Pmedium + }, + marginLeft10: { + ...alignment.MLmedium + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/FdGoogleBtn.js b/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/FdGoogleBtn.js new file mode 100644 index 0000000..6eb30f7 --- /dev/null +++ b/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/FdGoogleBtn.js @@ -0,0 +1,50 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React from 'react' +import { Image, TouchableOpacity } from 'react-native' +import Spinner from '../../../components/Spinner/Spinner' +import TextDefault from '../../../components/Text/TextDefault/TextDefault' +import { alignment } from '../../../utils/alignment' +import { moderateScale } from '../../../utils/scaling' +import useStyle from './styles' + +const FdGoogleBtn = props => { + const styles = useStyle() + const { colors } = useTheme() + return ( + + {props.loadingIcon ? ( + + ) : ( + <> + + + Signup with Google + + + )} + + ) +} + +FdGoogleBtn.propTypes = { + onPress: PropTypes.func, + loadingIcon: PropTypes.bool, + onPressIn: PropTypes.func +} +export default FdGoogleBtn diff --git a/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/styles.js b/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/styles.js new file mode 100644 index 0000000..c03c6ec --- /dev/null +++ b/CustomerApp/src/components/FdSocialBtn/FdGoogleBtn/styles.js @@ -0,0 +1,27 @@ +import { useTheme } from '@react-navigation/native' +import { Dimensions, StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' +import { moderateScale } from '../../../utils/scaling' +const { height } = Dimensions.get('window') + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + mainContainer: { + width: '100%', + height: height * 0.07, + backgroundColor: colors.buttonBackgroundLight, + flexDirection: 'row', + alignItems: 'center', + borderRadius: moderateScale(20) + }, + marginLeft5: { + ...alignment.Pmedium + }, + marginLeft10: { + ...alignment.MLmedium + } + }) +} + +export default useStyle diff --git a/CustomerApp/src/components/FdSocialBtn/index.js b/CustomerApp/src/components/FdSocialBtn/index.js new file mode 100644 index 0000000..88ccc62 --- /dev/null +++ b/CustomerApp/src/components/FdSocialBtn/index.js @@ -0,0 +1,5 @@ +import FdEmailBtn from "./FdEmailBtn/FdEmailBtn"; + +import FdGoogleBtn from "./FdGoogleBtn/FdGoogleBtn"; + +export { FdEmailBtn, FdGoogleBtn }; diff --git a/CustomerApp/src/components/FdSwitch/SwitchBtn.js b/CustomerApp/src/components/FdSwitch/SwitchBtn.js new file mode 100644 index 0000000..1d8b652 --- /dev/null +++ b/CustomerApp/src/components/FdSwitch/SwitchBtn.js @@ -0,0 +1,38 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React from 'react' +import { Switch, TouchableOpacity } from 'react-native' +import useStyle from './styles' + +function SwitchBtn(props) { + const styles = useStyle() + const { colors } = useTheme() + return ( + + + + ) +} +SwitchBtn.propTypes = { + onPress: PropTypes.func, + checked: PropTypes.bool, + isEnabled: PropTypes.bool +} +export default SwitchBtn diff --git a/CustomerApp/src/components/FdSwitch/styles.js b/CustomerApp/src/components/FdSwitch/styles.js new file mode 100644 index 0000000..2598068 --- /dev/null +++ b/CustomerApp/src/components/FdSwitch/styles.js @@ -0,0 +1,14 @@ +import { StyleSheet } from 'react-native' +import { scale } from '../../utils/scaling' + +const useStyle = () => { + return StyleSheet.create({ + mainContainer: { + width: scale(20), + height: scale(20), + justifyContent: 'center', + alignItems: 'center' + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/FlashMessage/FlashMessage.js b/CustomerApp/src/components/FlashMessage/FlashMessage.js new file mode 100644 index 0000000..dc4eb80 --- /dev/null +++ b/CustomerApp/src/components/FlashMessage/FlashMessage.js @@ -0,0 +1,20 @@ +import PropTypes from 'prop-types' +import { showMessage } from 'react-native-flash-message' +import { scale } from '../../utils/scaling' +import { textStyles } from '../../utils/textStyles' + +export const FlashMessage = props => { + showMessage({ + backgroundColor: '#323232', + message: props.message, + type: 'info', + position: 'bottom', + titleStyle: { + fontSize: scale(12), + ...textStyles.Medium + } + }) +} +FlashMessage.propTypes = { + message: PropTypes.string.isRequired +} diff --git a/CustomerApp/src/components/FlashMessage/styles.js b/CustomerApp/src/components/FlashMessage/styles.js new file mode 100644 index 0000000..98f2621 --- /dev/null +++ b/CustomerApp/src/components/FlashMessage/styles.js @@ -0,0 +1,13 @@ +import { textStyles } from '../../utils/textStyles' +import { alignment } from '../../utils/alignment' + +export default { + text: { + ...textStyles.Bold, + ...textStyles.H5, + ...alignment.PTxSmall + }, + container: { + borderRadius: 50 + } +} diff --git a/CustomerApp/src/components/Header/HeaderIcons/HeaderIcons.js b/CustomerApp/src/components/Header/HeaderIcons/HeaderIcons.js new file mode 100644 index 0000000..aa53938 --- /dev/null +++ b/CustomerApp/src/components/Header/HeaderIcons/HeaderIcons.js @@ -0,0 +1,210 @@ +import { + CommonActions, + useNavigation, + useTheme +} from '@react-navigation/native' +import PropTypes from 'prop-types' +import React, { useCallback, useContext } from 'react' +import { Pressable, View } from 'react-native' +import UserContext from '../../../context/User' +import { ICONS_NAME, NAVIGATION_SCREEN } from '../../../utils/constant' +import { scale } from '../../../utils/scaling' +import { CustomIcon } from '../../CustomIcon' +import { FlashMessage } from '../../FlashMessage/FlashMessage' +import TextDefault from '../../Text/TextDefault/TextDefault' +import useStyles from './styles' + +function HeaderIcon({ icon, iconColor, iconSize = scale(20) }) { + const { colors } = useTheme() + return ( + + ) +} + +function LeftButton(props) { + const { icon, outerView, iconColor } = props + const styles = useStyles() + const navigation = useNavigation() + const { colors } = useTheme() + + switch (icon) { + case ICONS_NAME.Menu: + return ( + + [ + { + opacity: pressed ? 0.7 : 1 + } + ]} + onPress={() => navigation.toggleDrawer()}> + + + + ) + case ICONS_NAME.Back: + return ( + + [ + { + opacity: pressed ? 0.7 : 1 + } + ]} + onPress={() => navigation.goBack()}> + + + + ) + case ICONS_NAME.Cross: + return ( + + [ + { + opacity: pressed ? 0.7 : 1 + } + ]} + onPress={() => + navigation.dispatch(state => { + const routes = state.routes.filter(r => r.name === 'Menu') + return CommonActions.reset({ + ...state, + routes, + index: 0 + }) + }) + }> + + + + ) + default: + return null + } +} + +function RightButton(props) { + const { colors } = useTheme() + const navigation = useNavigation() + const { + outerView, + onPress = () => null, + icon = null, + iconColor = colors.iconColor, + iconSize = scale(20) + } = props + const styles = useStyles() + const { cartCount } = useContext(UserContext) + + const navigateCart = useCallback(() => { + if (cartCount > 0) { + navigation.navigate(NAVIGATION_SCREEN.Cart) + } else { + FlashMessage({ + message: 'Cart is empty.' + }) + } + }, [cartCount]) + + switch (icon) { + case ICONS_NAME.Cart: + return ( + + [ + { + opacity: pressed ? 0.7 : 1 + } + ]} + onPress={() => navigateCart()}> + + + + {cartCount} + + + + + ) + case ICONS_NAME.Filter: + case ICONS_NAME.Pencil: + case ICONS_NAME.Cross: + case ICONS_NAME.Plus: + return ( + + [ + { + opacity: pressed ? 0.7 : 1 + } + ]} + onPress={onPress}> + + + + ) + default: + return null + } +} + +HeaderIcon.propTypes = { + outerView: PropTypes.object, + icon: PropTypes.string, + iconColor: PropTypes.string, + iconSize: PropTypes.number +} +LeftButton.propTypes = { + outerView: PropTypes.object, + icon: PropTypes.string, + iconColor: PropTypes.string +} +RightButton.propTypes = { + outerView: PropTypes.object, + icon: PropTypes.string, + iconColor: PropTypes.string, + iconSize: PropTypes.number, + onPress: PropTypes.func +} + +export { HeaderIcon, LeftButton, RightButton } diff --git a/CustomerApp/src/components/Header/HeaderIcons/styles.js b/CustomerApp/src/components/Header/HeaderIcons/styles.js new file mode 100644 index 0000000..c946186 --- /dev/null +++ b/CustomerApp/src/components/Header/HeaderIcons/styles.js @@ -0,0 +1,74 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' +import { scale, verticalScale } from '../../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + + return StyleSheet.create({ + leftIconPadding: { + ...alignment.PLsmall, + ...alignment.PRlarge + }, + rightContainer: { + position: 'relative', + height: '100%', + justifyContent: 'center', + alignItems: 'center', + backgroundColor: 'transparent', + ...alignment.PLsmall, + ...alignment.PRsmall + }, + imgContainer: { + width: verticalScale(20), + height: verticalScale(20) + }, + absoluteContainer: { + width: verticalScale(10), + height: verticalScale(10), + backgroundColor: colors.cardContainer, + justifyContent: 'center', + alignItems: 'center', + borderRadius: verticalScale(5), + position: 'absolute', + right: scale(8), + top: scale(8) + }, + touchAreaPassword: { + width: '40%', + height: '70%', + justifyContent: 'center', + alignItems: 'flex-end' + }, + titlePasswordText: { + backgroundColor: colors.cardContainer, + height: '75%', + justifyContent: 'center', + alignItems: 'center', + borderRadius: scale(7), + ...alignment.PLxSmall, + ...alignment.PRxSmall + }, + btnContainer: { + backgroundColor: 'rgba(255, 255, 255,0.01)', + height: '100%', + justifyContent: 'center', + alignItems: 'center', + width: 80 + }, + cartCount: { + backgroundColor: colors.blueColor, + top: scale(11), + right: scale(-5), + width: scale(15), + height: scale(15), + justifyContent: 'center', + alignItems: 'center', + borderRadius: 10, + position: 'absolute' + } + }) +} + +export default useStyle diff --git a/CustomerApp/src/components/Header/RegistrationHeader/RegistrationHeader.js b/CustomerApp/src/components/Header/RegistrationHeader/RegistrationHeader.js new file mode 100644 index 0000000..c90e3d2 --- /dev/null +++ b/CustomerApp/src/components/Header/RegistrationHeader/RegistrationHeader.js @@ -0,0 +1,44 @@ +import { useNavigation, useTheme } from '@react-navigation/native' +import React from 'react' +import { View, TouchableOpacity } from 'react-native' +import { CustomIcon } from '../../CustomIcon' +import PropTypes from 'prop-types' +import { TextDefault } from '../../Text' +import useStyle from './styles' +import { scale } from '../../../utils/scaling' +import { ICONS_NAME } from '../../../utils/constant' + +function RegistrationHeader({ title, back = false }) { + const styles = useStyle() + const navigation = useNavigation() + const { colors } = useTheme() + + return ( + + {back ? ( + navigation.goBack()} + style={[styles.backBtnWidth, styles.backBtn]}> + + + ) : ( + + )} + + {title || ''} + + + + ) +} + +RegistrationHeader.propTypes = { + title: PropTypes.string.isRequired, + back: PropTypes.bool +} + +export default React.memo(RegistrationHeader) diff --git a/CustomerApp/src/components/Header/RegistrationHeader/styles.js b/CustomerApp/src/components/Header/RegistrationHeader/styles.js new file mode 100644 index 0000000..1301270 --- /dev/null +++ b/CustomerApp/src/components/Header/RegistrationHeader/styles.js @@ -0,0 +1,28 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { moderateScale, scale } from '../../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + headerContainer: { + paddingHorizontal: moderateScale(20), + flexDirection: 'row', + width: '100%', + alignItems: 'center', + justifyContent: 'space-between' + }, + backBtnWidth: { + width: scale(40), + aspectRatio: 1 + }, + backBtn: { + backgroundColor: colors.white, + borderRadius: scale(13), + justifyContent: 'center', + alignItems: 'center' + } + }) +} + +export default useStyle diff --git a/CustomerApp/src/components/Header/index.js b/CustomerApp/src/components/Header/index.js new file mode 100644 index 0000000..8b573a8 --- /dev/null +++ b/CustomerApp/src/components/Header/index.js @@ -0,0 +1,4 @@ +import { BackButton, LeftButton, RightButton } from './HeaderIcons/HeaderIcons' +import RegistrationHeader from './RegistrationHeader/RegistrationHeader' + +export { BackButton, LeftButton, RightButton, RegistrationHeader } diff --git a/CustomerApp/src/components/Menu/MenuCard/MenuCard.js b/CustomerApp/src/components/Menu/MenuCard/MenuCard.js new file mode 100755 index 0000000..2c4bedd --- /dev/null +++ b/CustomerApp/src/components/Menu/MenuCard/MenuCard.js @@ -0,0 +1,46 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React from 'react' +import { TouchableOpacity, View } from 'react-native' +import { alignment } from '../../../utils/alignment' +import EnategaImage from '../../EnategaImage/EnategaImage' +import { TextDefault } from '../../Text' +import useStyle from './styles' +function MenuCard(props) { + const { colors } = useTheme() + const styles = useStyle() + return ( + + + + + + {props.title} + + + {props.description} + + + + + ) +} +MenuCard.propTypes = { + onPress: PropTypes.func, + image: PropTypes.string, + title: PropTypes.string.isRequired, + description: PropTypes.string +} +export default MenuCard diff --git a/CustomerApp/src/components/Menu/MenuCard/styles.js b/CustomerApp/src/components/Menu/MenuCard/styles.js new file mode 100644 index 0000000..0bdb03b --- /dev/null +++ b/CustomerApp/src/components/Menu/MenuCard/styles.js @@ -0,0 +1,62 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { moderateScale } from '../../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + + return StyleSheet.create({ + flex: { + flex: 1, + justifyContent: 'center', + alignItems: 'center', + borderRadius: 20 + }, + container: { + width: '100%', + height: '100%', + justifyContent: 'center', + borderRadius: 20, + overflow: 'hidden' + }, + imgResponsive: { + flex: 1, + width: undefined, + height: undefined + }, + loadingView: { + backgroundColor: colors.background, + width: '100%', + height: '100%' + }, + imgCard: { + position: 'relative', + flex: 1, + borderRadius: 20, + width: undefined, + height: undefined + }, + blackOverlay: { + width: '100%', + height: '100%', + backgroundColor: colors.black, + opacity: 0.4, + borderRadius: 20, + position: 'absolute' + }, + textContainer: { + width: '100%', + padding: moderateScale(10, 0.2), + paddingLeft: moderateScale(20), + alignSelf: 'flex-end', + bottom: 0, + position: 'absolute', + backgroundColor: 'rgba(52, 52, 52, 0.8)', + justifyContent: 'center', + borderBottomEndRadius: 20, + borderBottomStartRadius: 20 + } + }) +} + +export default useStyle diff --git a/CustomerApp/src/components/Menu/StatusCard/StatusCard.js b/CustomerApp/src/components/Menu/StatusCard/StatusCard.js new file mode 100644 index 0000000..2f476d4 --- /dev/null +++ b/CustomerApp/src/components/Menu/StatusCard/StatusCard.js @@ -0,0 +1,115 @@ +import { useNavigation, useTheme } from "@react-navigation/native"; +import React, { useContext } from "react"; +import { FlatList, TouchableOpacity, View } from "react-native"; +import ConfigurationContext from "../../../context/Configuration"; +import UserContext from "../../../context/User"; +import { alignment } from "../../../utils/alignment"; +import { NAVIGATION_SCREEN } from "../../../utils/constant"; +import Spinner from "../../Spinner/Spinner"; +import TextDefault from "../../Text/TextDefault/TextDefault"; +import TextError from "../../Text/TextError/TextError"; +import useStyle from "./styles"; + +export const orderStatuses = [ + { + key: "PENDING", + status: 1, + statusText: "Your order is still pending.", + }, + { + key: "ACCEPTED", + status: 2, + statusText: "Restaurant is preparing Food.", + }, + { + key: "PICKED", + status: 3, + statusText: "Rider is on the way.", + }, + { + key: "DELIVERED", + status: 4, + statusText: "Order is delivered.", + }, + { + key: "COMPLETED", + status: 5, + statusText: "Order is completed.", + }, +]; + +const orderStatusActive = ["PENDING", "PICKED", "ACCEPTED"]; + +const StatusCard = () => { + const { colors } = useTheme(); + const styles = useStyle(); + const navigation = useNavigation(); + const { + loadingOrders, + errorOrders, + orders, + networkStatusOrders, + fetchOrders, + } = useContext(UserContext); + const configuration = useContext(ConfigurationContext); + + const checkStatus = (status) => { + const obj = orderStatuses.filter((x) => { + return x.key === status; + }); + return obj[0]; + }; + + if (loadingOrders) return ; + if (errorOrders) return {errorOrders.message}; + + return ( + networkStatusOrders === 7 && fetchOrders()} + data={orders.filter((o) => orderStatusActive.includes(o.order_status))} + //keyExtractor={(item) => item._id} + keyExtractor={(item, index) => String(index)} + renderItem={({ item, index }) => ( + + navigation.navigate(NAVIGATION_SCREEN.OrderDetail, { + _id: item._id, + currency_symbol: configuration.currency_symbol, + }) + } + > + + + + Your order ID + + + {item.order_id} + + + Status + + + + {item.order_status}{" "} + + {/* {checkStatus(item.order_status).status}.{' '} */}( + {checkStatus(item.order_status).statusText}) + + + + + + )} + /> + ); +}; + +export default StatusCard; diff --git a/CustomerApp/src/components/Menu/StatusCard/styles.js b/CustomerApp/src/components/Menu/StatusCard/styles.js new file mode 100644 index 0000000..296a9c9 --- /dev/null +++ b/CustomerApp/src/components/Menu/StatusCard/styles.js @@ -0,0 +1,49 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' +import { moderateScale, scale } from '../../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + mainContainer: { + flexGrow: 1, + marginLeft: scale(5), + ...alignment.PBmedium + }, + lightText: { + color: colors.fontSecondColor + }, + statusContainer: { + marginTop: 20, + width: scale(275), + padding: moderateScale(15), + backgroundColor: '#f7f7fb', + borderRadius: 10, + borderStyle: 'dashed', + borderColor: '#a5a5a5', + borderWidth: 2 + // shadowOpacity: 1, + // shadowRadius: verticalScale(4), + // borderWidth: 1, + // borderColor: '#FFF', + // ...alignment.PBmedium, + // ...alignment.MBsmall, + // ...alignment.MTxSmall, + // ...alignment.MLmedium + }, + textContainer: {}, + statusCircleContainer: { + flexDirection: 'row', + justifyContent: 'flex-start', + ...alignment.MTsmall, + ...alignment.MBsmall + }, + statusCircle: { + ...alignment.MTxSmall, + ...alignment.MBxSmall, + ...alignment.MRxSmall + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/Menu/index.js b/CustomerApp/src/components/Menu/index.js new file mode 100644 index 0000000..2c7477a --- /dev/null +++ b/CustomerApp/src/components/Menu/index.js @@ -0,0 +1,4 @@ +import MenuCard from './MenuCard/MenuCard' +import StatusCard from './StatusCard/StatusCard' + +export { MenuCard, StatusCard } diff --git a/CustomerApp/src/components/Modals/FilterModal/FilterModal.js b/CustomerApp/src/components/Modals/FilterModal/FilterModal.js new file mode 100644 index 0000000..8c02171 --- /dev/null +++ b/CustomerApp/src/components/Modals/FilterModal/FilterModal.js @@ -0,0 +1,243 @@ +import { MaterialIcons } from '@expo/vector-icons' +import MultiSlider from '@ptomasroos/react-native-multi-slider' +import { useTheme } from '@react-navigation/native' +import { get, keys } from 'lodash' +import PropTypes from 'prop-types' +import React, { useCallback, useContext, useEffect, useState } from 'react' +import { Switch, TouchableOpacity, View } from 'react-native' +import ConfigurationContext from '../../../context/Configuration' +import { alignment } from '../../../utils/alignment' +import { SORT_DATA } from '../../../utils/constant' +import { moderateScale } from '../../../utils/scaling' +import RadioBtn from '../../FdRadioBtn/RadioBtn' +import TextDefault from '../../Text/TextDefault/TextDefault' +import useStyle from './styles' + +const FilterModal = props => { + const styles = useStyle() + const { colors } = useTheme() + const configuration = useContext(ConfigurationContext) + const [filters, setFilters] = useState({}) + + useEffect(() => { + setFilters({ + onSale: false, + inStock: false, + min: 0, + max: 1000, + sort: keys(SORT_DATA)[0], + ...props.filterObj + }) + }, [props.filterObj]) + + const setSortValue = useCallback(sortKey => { + setFilters(previousState => ({ + ...previousState, + sort: sortKey + })) + }, []) + + const toggleSaleSwitch = useCallback(() => { + setFilters(previousState => ({ + ...previousState, + onSale: !previousState.onSale + })) + }, []) + + const toggleStockSwitch = useCallback(() => { + setFilters(previousState => ({ + ...previousState, + inStock: !previousState.inStock + })) + }, []) + + const clearItems = useCallback(() => { + setFilters({ + onSale: false, + inStock: false, + min: 0, + max: 1000, + sort: keys(SORT_DATA)[0] + }) + }, []) + + const priceSliderChange = useCallback(values => { + setFilters(previousState => ({ + ...previousState, + min: values[0], + max: values[1] + })) + }, []) + + function applyFilters() { + props.setFilters({ ...filters }) + props.closeFilterModal() + } + + return ( + + + + Filters + + + + Reset + + + + + + + + + Show sale items only + + + + + + + Show stock items only + + + + + + + + + Price Range + + + + {configuration.currency_symbol} {get(filters, 'min')} -{' '} + {configuration.currency_symbol} {get(filters, 'max')} + + + + + + + + {configuration.currency_symbol} 0 + + + {configuration.currency_symbol} 1000 + + + + + Sorting + + + {keys(SORT_DATA).map(item => { + const isSelected = get(filters, 'sort') === item + return ( + setSortValue(item)}> + + {get(SORT_DATA, item)} + + setSortValue(item)} + /> + + ) + })} + + + + + Apply Filter + + + props.closeFilterModal()} + style={[styles.width100, alignment.PBlarge, alignment.PTlarge]}> + Close + + + + ) +} +FilterModal.propTypes = { + filterObj: PropTypes.object, + closeFilterModal: PropTypes.func, + setFilters: PropTypes.func +} + +export default FilterModal diff --git a/CustomerApp/src/components/Modals/FilterModal/styles.js b/CustomerApp/src/components/Modals/FilterModal/styles.js new file mode 100644 index 0000000..6a1dd58 --- /dev/null +++ b/CustomerApp/src/components/Modals/FilterModal/styles.js @@ -0,0 +1,77 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' +import { moderateScale, scale, verticalScale } from '../../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + width100: { + width: '100%' + }, + line: { + width: '100%', + alignSelf: 'center', + borderBottomColor: colors.horizontalLine, + borderBottomWidth: StyleSheet.hairlineWidth, + ...alignment.MTmedium, + ...alignment.MBmedium + }, + sotRow: { + flexDirection: 'row', + alignItems: 'center', + width: '100%', + alignSelf: 'center', + justifyContent: 'space-between', + borderBottomColor: colors.horizontalLine, + borderBottomWidth: StyleSheet.hairlineWidth, + ...alignment.PTmedium, + ...alignment.PBmedium + }, + priceRangeRow: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + paddingTop: verticalScale(10), + paddingBottom: verticalScale(10), + ...alignment.PRlarge + }, + trackStyle: { + height: 10, + borderRadius: 10, + backgroundColor: colors.horizontalLine, + borderStyle: 'solid', + borderWidth: 0, + borderColor: 'lightgray' + }, + selectedMarker: { + width: scale(15), + height: scale(30) + }, + markerStyle: { + width: scale(12), + height: scale(25), + backgroundColor: colors.tagColor, + shadowColor: 'rgba(0, 0, 0, 0.15)', + shadowOffset: { + width: 0, + height: 0 + }, + shadowRadius: 9, + shadowOpacity: 1, + elevation: 3, + marginTop: 8 + }, + applyBtn: { + width: '100%', + maxHeight: scale(50), + backgroundColor: colors.buttonBackgroundBlue, + alignSelf: 'center', + alignItems: 'center', + padding: moderateScale(14), + borderRadius: 20, + ...alignment.MTmedium + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/Modals/PaymentModal/PaymentModal.js b/CustomerApp/src/components/Modals/PaymentModal/PaymentModal.js new file mode 100644 index 0000000..9a08117 --- /dev/null +++ b/CustomerApp/src/components/Modals/PaymentModal/PaymentModal.js @@ -0,0 +1,118 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React, { useState } from 'react' +import { TouchableOpacity, View } from 'react-native' +import i18n from '../../../../i18n' +import RadioButton from '../../../components/FdRadioBtn/RadioBtn' +import { alignment } from '../../../utils/alignment' +import { ICONS_NAME } from '../../../utils/constant' +import { scale } from '../../../utils/scaling' +import { CustomIcon } from '../../CustomIcon' +import TextDefault from '../../Text/TextDefault/TextDefault' +import useStyles from './styles' + +function PaymentModal(props) { + const styles = useStyles() + const { colors } = useTheme() + const [selectedPayment, setSelectedPayment] = useState( + props.payment ?? {}, + {} + ) + + const CASH = [ + { + payment: 'STRIPE', + label: i18n.t('creditCart'), + index: 0, + icon: ICONS_NAME.Visa, + iconSize: scale(30) + }, + { + payment: 'PAYPAL', + label: i18n.t('paypal'), + index: 1, + icon: ICONS_NAME.Paypal, + iconSize: scale(30) + }, + { + payment: 'COD', + label: i18n.t('cod'), + index: 2, + icon: ICONS_NAME.Cash, + iconSize: scale(25) + } + ] + + function onSelectPayment(payment) { + setSelectedPayment(payment) + props.paymentChange(payment) + } + + return ( + + + Change Payment Method + + {CASH.map((item, index) => ( + + { + onSelectPayment(item) + }}> + + + + + + {item.label} + + + { + onSelectPayment(item) + }} + /> + + + + + ))} + + + Done + + + + Cancel + + + ) +} + +PaymentModal.propTypes = { + payment: PropTypes.object, + paymentChange: PropTypes.func, + onClose: PropTypes.func +} +export default PaymentModal diff --git a/CustomerApp/src/components/Modals/PaymentModal/styles.js b/CustomerApp/src/components/Modals/PaymentModal/styles.js new file mode 100644 index 0000000..a0f11f2 --- /dev/null +++ b/CustomerApp/src/components/Modals/PaymentModal/styles.js @@ -0,0 +1,59 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' +import { moderateScale, scale } from '../../../utils/scaling' + +const useStyles = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1, + alignItems: 'center' + }, + mainContainer: { + backgroundColor: colors.background, + ...alignment.PTlarge, + ...alignment.PBlarge, + ...alignment.PLsmall, + ...alignment.PRsmall + }, + radioContainer: { + alignItems: 'center', + justifyContent: 'center' + }, + radioGroup: { + width: '80%', + flexDirection: 'row', + alignItems: 'center', + ...alignment.PRsmall, + ...alignment.PLxSmall + }, + button: { + width: '80%', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.buttonBackgroundBlue, + borderRadius: moderateScale(18), + height: moderateScale(50), + ...alignment.MTlarge + }, + horizontalLine: { + width: '80%', + opacity: 0.5, + borderBottomColor: colors.placeHolderColor, + borderBottomWidth: StyleSheet.hairlineWidth, + ...alignment.MBsmall, + ...alignment.MTsmall + }, + iconContainer: { + width: scale(30) + }, + width100: { + width: '100%', + alignItems: 'center', + justifyContent: 'center' + } + }) +} +export default useStyles diff --git a/CustomerApp/src/components/Modals/index.js b/CustomerApp/src/components/Modals/index.js new file mode 100644 index 0000000..4c3d2da --- /dev/null +++ b/CustomerApp/src/components/Modals/index.js @@ -0,0 +1,3 @@ +import FilterModal from './FilterModal/FilterModal' + +export { FilterModal } diff --git a/CustomerApp/src/components/MyOrders/ActiveOrders.js b/CustomerApp/src/components/MyOrders/ActiveOrders.js new file mode 100644 index 0000000..7b34e93 --- /dev/null +++ b/CustomerApp/src/components/MyOrders/ActiveOrders.js @@ -0,0 +1,139 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React, { useContext } from 'react' +import { TouchableOpacity, View } from 'react-native' +import ConfigurationContext from '../../context/Configuration' +import { COLORS } from '../../Theme/Colors' +import { alignment } from '../../utils/alignment' +import { ICONS_NAME, NAVIGATION_SCREEN } from '../../utils/constant' +import { scale } from '../../utils/scaling' +import { CustomIcon } from '../CustomIcon/index' +import EnategaImage from '../EnategaImage/EnategaImage' +import TextDefault from '../Text/TextDefault/TextDefault' +import TextError from '../Text/TextError/TextError' +import TextLine from '../Text/TextLine/TextLine' +import useStyle from './styles' + +export const orderStatuses = [ + { + key: 'PENDING', + status: 1, + icon: ICONS_NAME.Clock, + color: COLORS.primary + }, + { + key: 'ACCEPTED', + status: 2, + icon: ICONS_NAME.Checked, + color: COLORS.blueColor + }, + { + key: 'PICKED', + status: 3, + icon: ICONS_NAME.Checked, + color: COLORS.blueColor + }, + { + key: 'DELIVERED', + status: 4, + icon: ICONS_NAME.Checked, + color: COLORS.blueColor + }, + { + key: 'COMPLETED', + status: 5, + icon: ICONS_NAME.Checked, + color: COLORS.blueColor + } +] + +const ActiveOrders = ({ + navigation, + loading, + error, + activeOrders, + pastOrders +}) => { + const styles = useStyle() + const { colors } = useTheme() + const configuration = useContext(ConfigurationContext) + if (loading) { + return Loading... + } + if (error) return + if (!activeOrders || (activeOrders && !activeOrders.length)) { + if (!pastOrders || (pastOrders && !pastOrders.length)) { + return + } + return + } + + const checkStatus = status => { + const obj = orderStatuses.filter(x => { + return x.key === status + }) + return obj[0] + } + + return ( + + + {activeOrders.map((item, index) => ( + + navigation.navigate(NAVIGATION_SCREEN.OrderDetail, { + _id: item._id + }) + }> + + + + + + + {'ID: '} + {item.order_id} + + + {configuration.currency_symbol} + {item.order_amount} + + + + + + + {item.order_status} + + + + + ))} + + + ) +} + +ActiveOrders.propTypes = { + loading: PropTypes.bool, + error: PropTypes.object, + activeOrders: PropTypes.arrayOf(PropTypes.object), + navigation: PropTypes.object, + pastOrders: PropTypes.arrayOf(PropTypes.object) +} + +export default ActiveOrders diff --git a/CustomerApp/src/components/MyOrders/styles.js b/CustomerApp/src/components/MyOrders/styles.js new file mode 100644 index 0000000..342eb74 --- /dev/null +++ b/CustomerApp/src/components/MyOrders/styles.js @@ -0,0 +1,67 @@ +import { scale, verticalScale } from '../../utils/scaling' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { useTheme } from '@react-navigation/native' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + container: { + flex: 1, + backgroundColor: colors.cardContainer, + borderRadius: scale(20), + elevation: 3, + width: '85%', + alignSelf: 'center', + shadowColor: 'black', + shadowOffset: { + width: 0, + height: verticalScale(1) + }, + shadowOpacity: 0.5, + shadowRadius: verticalScale(1), + flexDirection: 'row', + justifyContent: 'space-between', + ...alignment.Psmall, + ...alignment.MBmedium + }, + imgContainer: { + alignItems: 'center', + justifyContent: 'center', + borderRadius: 20, + overflow: 'hidden' + }, + rightContainer: { + width: '25%', + justifyContent: 'center', + alignItems: 'center' + }, + Vline: { + borderRightWidth: StyleSheet.hairlineWidth, + borderColor: colors.placeHolderColor, + shadowOffset: { + width: 2, + height: 2 + }, + shadowRadius: 10, + shadowColor: colors.lightBackground, + shadowOpacity: 0.6 + }, + imgResponsive: { + width: scale(70), + height: scale(70) + }, + loadingView: { + backgroundColor: colors.background, + width: '100%', + height: '100%' + }, + infoContainer: { + flex: 1, + justifyContent: 'center', + ...alignment.PRxSmall, + ...alignment.PLsmall + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/OrderDetail/TrackingRider/TrackingRider.js b/CustomerApp/src/components/OrderDetail/TrackingRider/TrackingRider.js new file mode 100644 index 0000000..ac0952c --- /dev/null +++ b/CustomerApp/src/components/OrderDetail/TrackingRider/TrackingRider.js @@ -0,0 +1,131 @@ +import React, { useEffect } from 'react' +import { View, Dimensions, Text, Image } from 'react-native' +import { useQuery } from '@apollo/react-hooks' +import gql from 'graphql-tag' +import MapView, { Marker, PROVIDER_GOOGLE } from 'react-native-maps' +import PropTypes from 'prop-types' +import Spinner from '../../../components/Spinner/Spinner' +import { rider, subscriptionRiderLocation } from '../../../apollo/server' +import { scale } from '../../../utils/scaling' + +const { width, height } = Dimensions.get('window') + +const RIDER = gql` + ${rider} +` +const RIDER_LOCATION = gql` + ${subscriptionRiderLocation} +` +const ASPECT_RATIO = width / height +const LATITUDE_DELTA = 0.0922 +const LONGITUDE_DELTA = LATITUDE_DELTA * ASPECT_RATIO +const DEFAULT_PADDING = { top: 40, right: 40, bottom: 40, left: 40 } + +const TrackingRider = ({ id, delivery_address: deliveryAddress }) => { + let map = null + const { loading, error, data, subscribeToMore } = useQuery(RIDER, { + variables: { id } + }) + useEffect(() => { + const unsubscribe = subscribeToMore({ + document: RIDER_LOCATION, + variables: { riderId: id }, + updateQuery: (prev, { subscriptionData }) => { + if (!subscriptionData.data) return prev + return { + rider: { + ...prev.rider, + ...subscriptionData.data.subscriptionRiderLocation + } + } + } + }) + return unsubscribe + }, []) + + useEffect(() => { + if (map && data) { + const rider = { + latitude: parseFloat(data.rider.location.latitude), + longitude: parseFloat(data.rider.location.longitude) + } + const destination = { + latitude: parseFloat(deliveryAddress.latitude), + longitude: parseFloat(deliveryAddress.longitude) + } + fitMarkers([rider, destination]) + } + }, [data]) + + const fitMarkers = markers => { + map.fitToCoordinates(markers, { + edgePadding: DEFAULT_PADDING, + animated: true + }) + } + + if (loading) return + if (error) return error + + return ( + <> + + { + map = ref + }} + style={{ flex: 1 }} + // scrollEnabled={false} + // zoomEnabled={false} + // zoomControlEnabled={false} + // rotateEnabled={false} + // cacheEnabled={true} + initialRegion={{ + latitude: parseFloat(data.rider.location.latitude), + latitudeDelta: LATITUDE_DELTA, + longitude: parseFloat(data.rider.location.longitude), + longitudeDelta: LONGITUDE_DELTA + }} + provider={PROVIDER_GOOGLE}> + + + + + + + + + + ) +} +TrackingRider.propTypes = { + delivery_address: PropTypes.shape({ + latitude: PropTypes.string, + longitude: PropTypes.string + }), + id: PropTypes.string +} + +export default TrackingRider diff --git a/CustomerApp/src/components/OrderDetail/index.js b/CustomerApp/src/components/OrderDetail/index.js new file mode 100644 index 0000000..dff63ae --- /dev/null +++ b/CustomerApp/src/components/OrderDetail/index.js @@ -0,0 +1,3 @@ +import TrackingRider from './TrackingRider/TrackingRider' + +export { TrackingRider } diff --git a/CustomerApp/src/components/Sidebar/Sidebar.js b/CustomerApp/src/components/Sidebar/Sidebar.js new file mode 100755 index 0000000..e2de142 --- /dev/null +++ b/CustomerApp/src/components/Sidebar/Sidebar.js @@ -0,0 +1,174 @@ +/* eslint-disable react/prop-types */ +import { SimpleLineIcons } from '@expo/vector-icons' +import { DrawerContentScrollView, DrawerItem } from '@react-navigation/drawer' +import { + DrawerActions, + useNavigation, + useTheme +} from '@react-navigation/native' +import React, { useContext } from 'react' +import { Animated, View } from 'react-native' +import { useSafeAreaInsets } from 'react-native-safe-area-context' +import i18n from '../../../i18n' +import UserContext from '../../context/User' +import NavigationService from '../../routes/navigationService' +import { alignment } from '../../utils/alignment' +import { ICONS_NAME, NAVIGATION_SCREEN } from '../../utils/constant' +import { scale } from '../../utils/scaling' +import { CustomIcon } from '../CustomIcon' +import SideDrawerProfile from '../Drawer/Profile/DrawerProfile' +import { TextDefault } from '../Text' +import useStyle from './styles' + +const MENU = [ + { + title: 'home', + icon: ICONS_NAME.Home, + navigateTo: NAVIGATION_SCREEN.Menu, + isAuth: false + }, + { + title: 'titleProfile', + icon: 'user', + navigateTo: 'Profile', + isAuth: true + }, + { + title: 'titleOrders', + icon: ICONS_NAME.Cart, + navigateTo: NAVIGATION_SCREEN.MyOrders, + isAuth: true + }, + { + title: 'myAddresses', + icon: ICONS_NAME.Location, + navigateTo: NAVIGATION_SCREEN.Addresses, + isAuth: true + }, + // { + // title: 'titleChat', + // icon: ICONS_NAME.Message, + // navigateTo: NAVIGATION_SCREEN.Chat, + // isAuth: false + // }, + { + title: 'titleHelp', + icon: ICONS_NAME.Info, + navigateTo: NAVIGATION_SCREEN.Help, + isAuth: false + }, + { + title: 'titleSettings', + icon: ICONS_NAME.Setting, + navigateTo: NAVIGATION_SCREEN.Settings, + isAuth: true + } +] + +function SidebBar(props) { + const styles = useStyle() + const { colors } = useTheme() + const navigation = useNavigation() + const inset = useSafeAreaInsets() + const { isLoggedIn, logout } = useContext(UserContext) + const navigationName = NavigationService.currentRoute()?.name + return ( + + + + + + + + {MENU.map((item, index) => ( + ( + + {i18n.t(item.title)} + + )} + icon={props => { + if (item.icon !== 'user') { + return ( + + ) + } else { + return ( + + ) + } + }} + onPress={async() => { + if (item.isAuth && !isLoggedIn) { + navigation.navigate(NAVIGATION_SCREEN.CreateAccount) + } else { + navigation.navigate(item.navigateTo) + } + }} + /> + ))} + + + {isLoggedIn && ( + ( + + {i18n.t('titleLogout')} + + )} + icon={() => ( + + )} + onPress={async() => { + logout() + navigation.reset({ + routes: [{ name: 'Menu' }] + }) + navigation.dispatch(DrawerActions.closeDrawer()) + // await client.resetStore(); + }} + /> + )} + + + + + ) +} +export default SidebBar diff --git a/CustomerApp/src/components/Sidebar/styles.js b/CustomerApp/src/components/Sidebar/styles.js new file mode 100644 index 0000000..4e8aeaf --- /dev/null +++ b/CustomerApp/src/components/Sidebar/styles.js @@ -0,0 +1,41 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { scale } from '../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + + return StyleSheet.create({ + flex: { + flex: 1 + }, + scrollContent: { + flexGrow: 1, + backgroundColor: 'transparent' + }, + whiteFont: { + color: colors.fontWhite + }, + textView: { + marginHorizontal: -25, + ...alignment.PLxSmall + }, + headerContainer: { + height: '25%', + minHeight: scale(200), + justifyContent: 'center', + backgroundColor: 'transparent' + }, + menuContainer: { + flexGrow: 1, + backgroundColor: 'transparent', + justifyContent: 'space-between', + ...alignment.PTlarge + }, + drawerItem: { + marginVertical: 0 + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/Spinner/Spinner.js b/CustomerApp/src/components/Spinner/Spinner.js new file mode 100644 index 0000000..62462e2 --- /dev/null +++ b/CustomerApp/src/components/Spinner/Spinner.js @@ -0,0 +1,34 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React from 'react' +import { ActivityIndicator, StyleSheet } from 'react-native' + +function Spinner(props) { + const { colors } = useTheme() + + return ( + + ) +} +Spinner.propTypes = { + backColor: PropTypes.string, + spinnerColor: PropTypes.string, + size: PropTypes.string +} + +const styles = StyleSheet.create({ + flex: { + flex: 1 + }, + mainContainer: { + backgroundColor: 'transparent', + justifyContent: 'center', + alignItems: 'center' + } +}) +export default Spinner diff --git a/CustomerApp/src/components/Text/TextDefault/TextDefault.js b/CustomerApp/src/components/Text/TextDefault/TextDefault.js new file mode 100644 index 0000000..9e842ad --- /dev/null +++ b/CustomerApp/src/components/Text/TextDefault/TextDefault.js @@ -0,0 +1,65 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React from 'react' +import { StyleSheet, Text } from 'react-native' +import { textStyles } from '../../../utils/textStyles' +import color from './styles' + +function TextDefault(props) { + const { colors } = useTheme() + const textColor = props.textColor || colors.fontMainColor + const defaultStyle = StyleSheet.flatten([ + color(textColor).color, + textStyles.Regular, + textStyles.Normal + ]) + var customStyles = [defaultStyle] + + if (props.light) customStyles.push(textStyles.Light) + if (props.medium) customStyles.push(textStyles.Medium) + if (props.regular) customStyles.push(textStyles.Regular) + if (props.bold) customStyles.push(textStyles.Bold) + if (props.bolder) customStyles.push(textStyles.Bolder) + if (props.center) customStyles.push(textStyles.Center) + if (props.right) customStyles.push(textStyles.Right) + if (props.small) customStyles.push(textStyles.Small) + if (props.H5) customStyles.push(textStyles.H5) + if (props.H4) customStyles.push(textStyles.H4) + if (props.H3) customStyles.push(textStyles.H3) + if (props.H2) customStyles.push(textStyles.H2) + if (props.H1) customStyles.push(textStyles.H1) + if (props.uppercase) customStyles.push(textStyles.UpperCase) + if (props.lineOver) customStyles.push(textStyles.LineOver) + + customStyles = StyleSheet.flatten([customStyles, props.style]) + return ( + + {props.children} + + ) +} + +TextDefault.propTypes = { + light: PropTypes.bool, + regular: PropTypes.bool, + medium: PropTypes.bool, + bold: PropTypes.bool, + bolder: PropTypes.bool, + center: PropTypes.bool, + right: PropTypes.bool, + small: PropTypes.bool, + H5: PropTypes.bool, + H4: PropTypes.bool, + H3: PropTypes.bool, + H2: PropTypes.bool, + H1: PropTypes.bool, + uppercase: PropTypes.bool, + lineOver: PropTypes.bool, + numberOfLines: PropTypes.number, + textColor: PropTypes.string, + style: PropTypes.oneOfType([PropTypes.array, PropTypes.object]), + children: PropTypes.node.isRequired +} +export default TextDefault diff --git a/CustomerApp/src/components/Text/TextDefault/styles.js b/CustomerApp/src/components/Text/TextDefault/styles.js new file mode 100644 index 0000000..14a2c89 --- /dev/null +++ b/CustomerApp/src/components/Text/TextDefault/styles.js @@ -0,0 +1,10 @@ +import { StyleSheet } from 'react-native' + +const color = textColor => + StyleSheet.create({ + color: { + color: textColor + } + }) + +export default color diff --git a/CustomerApp/src/components/Text/TextError/TextError.js b/CustomerApp/src/components/Text/TextError/TextError.js new file mode 100644 index 0000000..5b7b5e3 --- /dev/null +++ b/CustomerApp/src/components/Text/TextError/TextError.js @@ -0,0 +1,33 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React from 'react' +import { View } from 'react-native' +import TextDefault from '../TextDefault/TextDefault' + +function TextError(props) { + const { colors } = useTheme() + + return ( + + + {props.text} + + + ) +} +TextError.propTypes = { + text: PropTypes.string, + backColor: PropTypes.string, + textColor: PropTypes.string +} +export default TextError diff --git a/CustomerApp/src/components/Text/TextLine/TextLine.js b/CustomerApp/src/components/Text/TextLine/TextLine.js new file mode 100644 index 0000000..6477f7d --- /dev/null +++ b/CustomerApp/src/components/Text/TextLine/TextLine.js @@ -0,0 +1,25 @@ +import PropTypes from 'prop-types' +import React from 'react' +import { View } from 'react-native' +import TextDefault from '../TextDefault/TextDefault' +import useStyle from './styles' + +const TextLine = props => { + const styles = useStyle() + return ( + + + + {props.headerName} + + + + ) +} + +TextLine.propTypes = { + headerName: PropTypes.string.isRequired, + lineWidth: PropTypes.string.isRequired, + textWidth: PropTypes.string.isRequired +} +export default TextLine diff --git a/CustomerApp/src/components/Text/TextLine/styles.js b/CustomerApp/src/components/Text/TextLine/styles.js new file mode 100644 index 0000000..254f0e4 --- /dev/null +++ b/CustomerApp/src/components/Text/TextLine/styles.js @@ -0,0 +1,25 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' + +const useStyle = () => { + const { colors } = useTheme() + + return StyleSheet.create({ + headingContainer: { + width: '100%', + flexDirection: 'row', + justifyContent: 'center', + alignItems: 'center', + ...alignment.PTlarge, + ...alignment.PBlarge + }, + line: { + borderBottomWidth: StyleSheet.hairlineWidth, + borderColor: colors.text, + opacity: 0.6 + } + }) +} + +export default useStyle diff --git a/CustomerApp/src/components/Text/index.js b/CustomerApp/src/components/Text/index.js new file mode 100644 index 0000000..71be559 --- /dev/null +++ b/CustomerApp/src/components/Text/index.js @@ -0,0 +1,5 @@ +import TextDefault from './TextDefault/TextDefault' +import TextError from './TextError/TextError' +import TextLine from './TextLine/TextLine' + +export { TextDefault, TextError, TextLine } diff --git a/CustomerApp/src/components/Triangle/Triangle.js b/CustomerApp/src/components/Triangle/Triangle.js new file mode 100644 index 0000000..49ee304 --- /dev/null +++ b/CustomerApp/src/components/Triangle/Triangle.js @@ -0,0 +1,16 @@ +import PropTypes from 'prop-types' +import React from 'react' +import { View } from 'react-native' +import useStyle from './styles' + +const Triangle = props => { + const styles = useStyle() + + return +} + +Triangle.propTypes = { + style: PropTypes.object +} + +export default Triangle diff --git a/CustomerApp/src/components/Triangle/styles.js b/CustomerApp/src/components/Triangle/styles.js new file mode 100644 index 0000000..205fa33 --- /dev/null +++ b/CustomerApp/src/components/Triangle/styles.js @@ -0,0 +1,22 @@ +import { scale } from '../../utils/scaling' +import { StyleSheet } from 'react-native' +import { useTheme } from '@react-navigation/native' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + triangle: { + width: 0, + height: 0, + backgroundColor: 'transparent', + borderStyle: 'solid', + borderLeftWidth: scale(7), + borderRightWidth: scale(7), + borderBottomWidth: scale(8), + borderLeftColor: 'transparent', + borderRightColor: 'transparent', + borderBottomColor: colors.background + } + }) +} +export default useStyle diff --git a/CustomerApp/src/components/WrapperView/WrapperView.js b/CustomerApp/src/components/WrapperView/WrapperView.js new file mode 100644 index 0000000..1d26f20 --- /dev/null +++ b/CustomerApp/src/components/WrapperView/WrapperView.js @@ -0,0 +1,21 @@ +import PropTypes from 'prop-types' +import React from 'react' +import { View } from 'react-native' +import useStyle from './styles' +function WrapperView({ children }) { + const styles = useStyle() + + return ( + + + + {children} + + ) +} + +WrapperView.propTypes = { + children: PropTypes.node +} + +export default React.memo(WrapperView) diff --git a/CustomerApp/src/components/WrapperView/styles.js b/CustomerApp/src/components/WrapperView/styles.js new file mode 100644 index 0000000..83ad011 --- /dev/null +++ b/CustomerApp/src/components/WrapperView/styles.js @@ -0,0 +1,50 @@ +import { useTheme } from "@react-navigation/native"; +import { useHeaderHeight } from "@react-navigation/elements"; +import { StyleSheet } from "react-native"; +import { useSafeAreaInsets } from "react-native-safe-area-context"; +import { scale } from "../../utils/scaling"; + +const useStyle = () => { + const { colors } = useTheme(); + const inset = useSafeAreaInsets(); + const headerHeight = useHeaderHeight(); + + return StyleSheet.create({ + flex: { + flex: 1, + }, + wrapperView: { + backgroundColor: colors.background, + paddingTop: headerHeight, + paddingBottom: inset.bottom, + }, + topCurve: { + position: "absolute", + opacity: 0.2, + left: -75, + borderTopRightRadius: scale(90), + borderBottomEndRadius: scale(200), + top: -20, + width: scale(250), + height: scale(260), + borderRadius: 100, + backgroundColor: colors.curve, + }, + bottomCurve: { + position: "absolute", + height: scale(185), + width: scale(170), + borderTopRightRadius: scale(110), + borderTopLeftRadius: scale(90), + borderBottomRightRadius: scale(100), + borderBottomLeftRadius: scale(110), + right: -90, + backgroundColor: colors.curve, + opacity: 0.2, + bottom: -80, + zIndex: -1, + }, + }); +}; + +export default useStyle; diff --git a/CustomerApp/src/components/index.js b/CustomerApp/src/components/index.js new file mode 100644 index 0000000..acd9d5e --- /dev/null +++ b/CustomerApp/src/components/index.js @@ -0,0 +1,65 @@ +import CartItem from "./CartItem/CartItem"; +import { + CartComponent, + CheckComponent, + HeadingComponent, + ImageHeader, + RadioComponent, + TitleComponent, +} from "./CustomizeComponents"; +import { DrawerProfile } from "./Drawer"; +import CheckboxBtn from "./FdCheckbox/CheckboxBtn"; +import RadioBtn from "./FdRadioBtn/RadioBtn"; +import { FdEmailBtn, FdGoogleBtn } from "./FdSocialBtn"; +import { FlashMessage } from "./FlashMessage/FlashMessage"; +import { + BackButton, + LeftButton, + RightButton, + RegistrationHeader, +} from "./Header"; +import { MenuCard, StatusCard } from "./Menu"; +import { FilterModal } from "./Modals"; +import ActiveOrders from "./MyOrders/ActiveOrders"; +import { TrackingRider } from "./OrderDetail"; +import Sidebar from "./Sidebar/Sidebar"; +import Spinner from "./Spinner/Spinner"; +import { TextDefault, TextError, TextLine } from "./Text"; +import Triangle from "./Triangle/Triangle"; +import EnategaImage from "./EnategaImage/EnategaImage"; +import WrapperView from "./WrapperView/WrapperView"; +import { CustomIcon } from "./CustomIcon"; + +export { + WrapperView, + CustomIcon, + CartItem, + EnategaImage, + CartComponent, + CheckComponent, + HeadingComponent, + ImageHeader, + RadioComponent, + TitleComponent, + DrawerProfile, + RadioBtn, + CheckboxBtn, + FdEmailBtn, + FdGoogleBtn, + FlashMessage, + BackButton, + LeftButton, + RightButton, + MenuCard, + StatusCard, + FilterModal, + RegistrationHeader, + ActiveOrders, + Sidebar, + Triangle, + TextDefault, + TextError, + TextLine, + Spinner, + TrackingRider, +}; diff --git a/CustomerApp/src/context/Configuration.js b/CustomerApp/src/context/Configuration.js new file mode 100644 index 0000000..03b18c4 --- /dev/null +++ b/CustomerApp/src/context/Configuration.js @@ -0,0 +1,32 @@ +import React from 'react' +import { useQuery } from '@apollo/react-hooks' +import gql from 'graphql-tag' +import PropTypes from 'prop-types' + +import { getConfiguration } from '../apollo/server' + +const GETCONFIGURATION = gql` + ${getConfiguration} +` + +const ConfigurationContext = React.createContext({}) + +export const ConfigurationProvider = props => { + const { loading, data, error } = useQuery(GETCONFIGURATION) + const configuration = + loading || error || !data.configuration + ? { currency: '', currency_symbol: '', delivery_charges: 0 } + : data.configuration + return ( + + {props.children} + + ) +} + +ConfigurationProvider.propTypes = { + children: PropTypes.node.isRequired +} + +export const ConfigurationConsumer = ConfigurationContext.Consumer +export default ConfigurationContext diff --git a/CustomerApp/src/context/User.js b/CustomerApp/src/context/User.js new file mode 100644 index 0000000..9090031 --- /dev/null +++ b/CustomerApp/src/context/User.js @@ -0,0 +1,248 @@ +import PropTypes from 'prop-types' +import React, { useState, useEffect } from 'react' +import { useLazyQuery, useApolloClient } from '@apollo/react-hooks' +import gql from 'graphql-tag' +import uuid from 'uuid' +import { profile, myOrders, orderStatusChanged } from '../apollo/server' +import AsyncStorage from '@react-native-async-storage/async-storage' + +const PROFILE = gql` + ${profile} +` +const ORDERS = gql` + ${myOrders} +` // rename this 'orders' when user context is complete +const SUBSCRIPTION_ORDERS = gql` + ${orderStatusChanged} +` // rename this 'subscriptionOrders' when user context is complete + +const UserContext = React.createContext({}) + +export const UserProvider = props => { + const client = useApolloClient() + const [token, setToken] = useState('') + const [cart, setCart] = useState([]) // use initial state of cart here + + const [ + fetchProfile, + { + called: calledProfile, + loading: loadingProfile, + error: errorProfile, + data: dataProfile + } + ] = useLazyQuery(PROFILE, { + fetchPolicy: 'network-only', + onCompleted, + onError + }) + const [ + fetchOrders, + { + called: calledOrders, + loading: loadingOrders, + error: errorOrders, + data: dataOrders, + networkStatus: networkStatusOrders, + fetchMore: fetchMoreOrders, + subscribeToMore: subscribeToMoreOrders + } + ] = useLazyQuery(ORDERS, { + fetchPolicy: 'network-only', + onCompleted, + onError + }) + + useEffect(() => { + let isSubscribed = true + ;(async() => { + const token = await AsyncStorage.getItem('token') + isSubscribed && setToken(token) + })() + return () => { + isSubscribed = false + } + }, []) + + useEffect(() => { + if (!token) return + let isSubscribed = true + ;(async() => { + isSubscribed && (await fetchProfile()) + isSubscribed && (await fetchOrders()) + })() + return () => { + isSubscribed = false + } + }, [token]) + + useEffect(() => { + if (!dataProfile) return + subscribeOrders() + }, [dataProfile]) + + useEffect(() => { + let isSubscribed = true + ;(async() => { + const cart = await AsyncStorage.getItem('cartItems') + isSubscribed && setCart(cart ? JSON.parse(cart) : []) + })() + return () => { + isSubscribed = false + } + }, []) + + function onCompleted({ profile, orders }) {} + function onError(error) { + console.log('error context', error) + } + + const setTokenAsync = async token => { + await AsyncStorage.setItem('token', token) + setToken(token) + } + + const logout = async() => { + try { + await AsyncStorage.removeItem('token') + setToken(null) + await client.resetStore() + } catch (error) { + console.log('error on logout', error) + } + } + + const subscribeOrders = () => { + try { + const unsubscribeOrders = subscribeToMoreOrders({ + document: SUBSCRIPTION_ORDERS, + variables: { userId: dataProfile.profile._id }, + updateQuery: (prev, { subscriptionData }) => { + if (!subscriptionData.data) return prev + const { _id } = subscriptionData.data.orderStatusChanged.order + if (subscriptionData.data.orderStatusChanged.origin === 'new') { + if (prev.orders.findIndex(o => o._id === _id) > -1) return prev + return { + orders: [ + subscriptionData.data.orderStatusChanged.order, + ...prev.orders + ] + } + } else { + const { orders } = prev + const orderIndex = orders.findIndex(o => o._id === _id) + if (orderIndex > -1) { + orders[orderIndex] = + subscriptionData.data.orderStatusChanged.order + } + return { + orders: [...orders] + } + } + } + }) + client.onResetStore(unsubscribeOrders) + } catch (error) { + console.log('error subscribing order', error.message) + } + } + + const fetchMoreOrdersFunc = () => { + if (networkStatusOrders === 7) { + fetchMoreOrders({ + variables: { offset: dataOrders.orders.length + 1 }, + updateQuery: (previousResult, { fetchMoreResult }) => { + // Don't do anything if there weren't any new items + if (!fetchMoreResult || fetchMoreResult.orders.length === 0) { + return previousResult + } + // setOrders(previousResult.orders.concat(fetchMoreResult.orders)) + return { + // Append the new feed results to the old one + orders: previousResult.orders.concat(fetchMoreResult.orders) + } + } + }) + } + } + + const clearCart = async() => { + setCart([]) + await AsyncStorage.setItem('cartItems', JSON.stringify([])) + } + + const addQuantity = async(key, quantity = 1) => { + const cartIndex = cart.findIndex(c => c.key === key) + cart[cartIndex].quantity += quantity + setCart([...cart]) + await AsyncStorage.setItem('cartItems', JSON.stringify([...cart])) + } + + const removeQuantity = async key => { + const cartIndex = cart.findIndex(c => c.key === key) + cart[cartIndex].quantity -= 1 + setCart([...cart.filter(c => c.quantity > 0)]) + await AsyncStorage.setItem( + 'cartItems', + JSON.stringify(cart.filter(c => c.quantity > 0)) + ) + } + + const addCartItem = async(_id, variation, quantity = 1, addons = []) => { + const index = cart.findIndex(f => f._id === _id) + if (index < 0) { + cart.push({ + key: uuid.v4(), + _id, + quantity: quantity, + variation: { + _id: variation + }, + addons + }) + } else { + cart[index].quantity += 1 + } + await AsyncStorage.setItem('cartItems', JSON.stringify([...cart])) + setCart([...cart]) + } + + const updateCart = async cart => { + setCart(cart) + await AsyncStorage.setItem('cartItems', JSON.stringify(cart)) + } + + return ( + + {props.children} + + ) +} + +UserProvider.propTypes = { + children: PropTypes.node +} +export const UserConsumer = UserContext.Consumer +export default UserContext diff --git a/CustomerApp/src/routes/index.js b/CustomerApp/src/routes/index.js new file mode 100755 index 0000000..ee72b73 --- /dev/null +++ b/CustomerApp/src/routes/index.js @@ -0,0 +1,360 @@ +/* eslint-disable react/prop-types */ +import { createDrawerNavigator } from "@react-navigation/drawer"; +import { NavigationContainer, useTheme } from "@react-navigation/native"; +import { createStackNavigator } from "@react-navigation/stack"; +import * as Notifications from "expo-notifications"; +import React, { useEffect } from "react"; +import { Text, useColorScheme, View } from "react-native"; +import Animated from "react-native-reanimated"; +import { + initialWindowMetrics, + SafeAreaProvider, +} from "react-native-safe-area-context"; +import { TextDefault, LeftButton, Sidebar } from "../components"; +import Menu from "../screens/Menu/Menu"; +import MenuItems from "../screens/MenuItems/MenuItems"; +import Addresses from "../screens/Addresses/Addresses"; +import NewAddress from "../screens/NewAddress/NewAddress"; +import EditAddress from "../screens/EditAddress/EditAddress"; +import Cart from "../screens/Cart/Cart"; +import Profile from "../screens/Profile/Profile"; +import FullMap from "../screens/FullMap/FullMap"; +import CartAddress from "../screens/CartAddress/CartAddress"; +import SelectVoucher from "../screens/Coupon/Coupon"; +import Help from "../screens/Help/Help"; +import HelpBrowser from "../screens/HelpBrowser/HelpBrowser"; +import Chat from "../screens/Chat/Chat"; +import Settings from "../screens/Settings/Settings"; +import Paypal from "../screens/Paypal/Paypal"; +import ItemDetail from "../screens/ItemDetail/ItemDetail"; +import MyOrders from "../screens/MyOrders/MyOrders"; +import OrderDetail from "../screens/OrderDetail/OrderDetail"; +import StripeCheckout from "../screens/Stripe/StripeCheckout"; +import RateAndReview from "../screens/RateAndReview/RateAndReview"; +import CreateAccount from "../screens/CreateAccount/CreateAccount"; +import Login from "../screens/Login/Login"; +import Register from "../screens/Register/Register"; +import ForgotPassword from "../screens/ForgotPassword/ForgotPassword"; + +// import { +// Addresses, +// Cart, +// CartAddress, +// Chat, +// CreateAccount, +// EditAddress, +// ForgotPassword, +// FullMap, +// Help, +// HelpBrowser, +// ItemDetail, +// Login, +// MenuItems, +// MyOrders, +// NewAddress, +// OrderDetail, +// Paypal, +// Profile, +// RateAndReview, +// Register, +// SelectVoucher, +// Settings, +// StripeCheckout, +// Menu, +// } from "../screens"; + +import { THEME } from "../Theme"; +import { ICONS_NAME, NAVIGATION_SCREEN } from "../utils/constant"; +import navigationService from "./navigationService"; +import screenOptions from "./screenOptions"; +import styles from "./styles"; + +const NavigationStack = createStackNavigator(); +const MainStack = createStackNavigator(); +const SideDrawer = createDrawerNavigator(); + +function Drawer() { + const { colors } = useTheme(); + let animatedStyle = {}; + let opacity; + let OuterWindowSlide, InnerWindowSlide; + return ( + { + const scale = Animated.interpolateNode(props.progress, { + inputRange: [0, 1], + outputRange: [1, 0.7], + }); + const Animatedopacity = Animated.interpolateNode(props.progress, { + inputRange: [0, 0.6, 1], + outputRange: [0, 0, 1], + }); + const AnimatedOuterSlide = Animated.interpolateNode(props.progress, { + inputRange: [0, 1], + outputRange: [0, -35], + }); + const AnimatedInnerSlide = Animated.interpolateNode(props.progress, { + inputRange: [0, 1], + outputRange: [0, -15], + }); + const borderRadius = Animated.interpolateNode(props.progress, { + inputRange: [0, 1], + outputRange: [0, 20], + }); + animatedStyle = { borderRadius, transform: [{ scale }] }; + opacity = Animatedopacity; + OuterWindowSlide = AnimatedOuterSlide; + InnerWindowSlide = AnimatedInnerSlide; + + return ; + }} + > + + {(props) => ( + + )} + + + ); +} + +function NoDrawer({ style, opacity = 1, OuterWindowSlide, InnerWindowSlide }) { + const { colors } = useTheme(); + + return ( + + + + + + , + }} + /> + + + , + }} + /> + , + }} + /> + + + + + + , + }} + /> + , + }} + /> + + , + }} + /> + + + , + }} + /> + + + + + + + + + + + + {"Close X"} + + + + ); +} + +function AppContainer() { + console.log("AppContainer Working"); + const colorScheme = useColorScheme(); + function _handleNotification(notification) { + try { + if (notification.origin === "selected") { + if (notification.data.order) { + navigationService.navigate(NAVIGATION_SCREEN.OrderDetail, { + _id: notification.data._id, + }); + } + } + } catch (e) { + console.log(e); + } + } + useEffect(() => { + Notifications.setNotificationHandler({ + handleNotification: async () => ({ + shouldShowAlert: true, + shouldPlaySound: false, + shouldSetBadge: false, + }), + }); + const subscription = + Notifications.addNotificationResponseReceivedListener( + _handleNotification + ); + return () => subscription.remove(); + }, []); + return ( + + { + navigationService.setGlobalRef(ref); + Notifications.addNotificationReceivedListener(_handleNotification); + }} + > + + + + + + ); +} + +export default AppContainer; diff --git a/CustomerApp/src/routes/navigationService.js b/CustomerApp/src/routes/navigationService.js new file mode 100644 index 0000000..7354a34 --- /dev/null +++ b/CustomerApp/src/routes/navigationService.js @@ -0,0 +1,27 @@ +let navObj = null + +function setGlobalRef(ref) { + navObj = ref +} + +function navigate(path, props = {}) { + navObj.navigate(path, props) +} + +function goBack() { + navObj.goBack() +} + +function currentRoute() { + if (navObj !== null && typeof navObj !== 'undefined') { + return navObj.getCurrentRoute() + } else { + return null + } +} +export default { + currentRoute, + setGlobalRef, + navigate, + goBack +} diff --git a/CustomerApp/src/routes/screenOptions.js b/CustomerApp/src/routes/screenOptions.js new file mode 100644 index 0000000..9709b98 --- /dev/null +++ b/CustomerApp/src/routes/screenOptions.js @@ -0,0 +1,41 @@ +/* eslint-disable react/prop-types */ +import { TransitionPresets } from '@react-navigation/stack' +import PropTypes from 'prop-types' +import React from 'react' +import { + LeftButton, + RightButton +} from '../components/Header/HeaderIcons/HeaderIcons' +import { ICONS_NAME } from '../utils/constant' +import { scale } from '../utils/scaling' +import { textStyles } from '../utils/textStyles' + +const screenOptions = props => ({ + headerTitleAlign: 'center', + headerBackTitleVisible: false, + headerTransparent: true, + headerStyle: { + elevation: 0, + shadowOpacity: 0, + borderBottomWidth: 0 + }, + headerTitleStyle: { + color: props.textColor, + ...textStyles.H4, + ...textStyles.Bold, + backgroundColor: 'transparent' + }, + headerTitleContainerStyle: { + justifyContent: 'center', + alignItems: 'center', + marginHorizontal: scale(80) + }, + headerLeft: () => , + headerRight: () => , + ...TransitionPresets.SlideFromRightIOS +}) + +screenOptions.propTypes = { + textColor: PropTypes.string +} +export default screenOptions diff --git a/CustomerApp/src/routes/styles.js b/CustomerApp/src/routes/styles.js new file mode 100644 index 0000000..4ff8839 --- /dev/null +++ b/CustomerApp/src/routes/styles.js @@ -0,0 +1,56 @@ +import { StyleSheet } from 'react-native' + +const styles = StyleSheet.create({ + outerView: { + position: 'absolute', + width: '100%', + height: '80%', + top: '10%', + left: 10, + bottom: 0, + backgroundColor: 'rgba(243, 244, 245, 0.8)', + shadowColor: 'black', + shadowOffset: { + width: 0, + height: 5 + }, + shadowOpacity: 0.3, + shadowRadius: 3, + elevation: 10 + }, + innerView: { + position: 'absolute', + width: '100%', + height: '90%', + top: '5%', + bottom: 0, + backgroundColor: 'rgba(251, 251, 252, 0.95)', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 5 + }, + shadowOpacity: 0.3, + shadowRadius: 3, + elevation: 10 + }, + animatedView: { + flex: 1, + overflow: 'hidden', + shadowColor: '#000', + shadowOffset: { + width: 0, + height: 5 + }, + shadowOpacity: 1, + shadowRadius: 10, + elevation: 15 + }, + closeView: { + position: 'absolute', + top: 70, + left: 50 + } +}) + +export default styles diff --git a/CustomerApp/src/screens/Addresses/Addresses.js b/CustomerApp/src/screens/Addresses/Addresses.js new file mode 100644 index 0000000..a11b548 --- /dev/null +++ b/CustomerApp/src/screens/Addresses/Addresses.js @@ -0,0 +1,194 @@ +import { useMutation } from "@apollo/react-hooks"; +import { useNavigation, useTheme } from "@react-navigation/native"; +import gql from "graphql-tag"; +import React, { useContext, useLayoutEffect } from "react"; +import { FlatList, TouchableOpacity, View } from "react-native"; +import i18n from "../../../i18n"; +import { deleteAddress } from "../../apollo/server"; +import EmptyAddress from "../../assets/images/SVG/imageComponents/EmptyAddress"; +import { + CustomIcon, + RightButton, + TextDefault, + WrapperView, +} from "../../components"; +import UserContext from "../../context/User"; +import { COLORS } from "../../Theme"; +import { alignment } from "../../utils/alignment"; +import { ICONS_NAME, NAVIGATION_SCREEN } from "../../utils/constant"; +import { scale } from "../../utils/scaling"; +import useStyle from "./styles"; + +const DELETE_ADDRESS = gql` + ${deleteAddress} +`; + +function Addresses() { + const styles = useStyle(); + const { colors } = useTheme(); + const navigation = useNavigation(); + const { profile } = useContext(UserContext); + const [mutate, { loading: loadingMutation }] = useMutation(DELETE_ADDRESS); + + useLayoutEffect(() => { + navigation.setOptions({ + title: i18n.t("myAddresses"), + headerRight: () => ( + navigation.navigate(NAVIGATION_SCREEN.NewAddress)} + /> + ), + }); + }, [navigation]); + + const addressIcons = { + Home: ICONS_NAME.Home, + Work: ICONS_NAME.Cart, + Other: ICONS_NAME.Location, + }; + + const colorIcons = { + Other: COLORS.primary, + Home: COLORS.redishPink, + Work: COLORS.primaryLightBlue, + }; + + const emptyView = React.memo(() => { + return ( + + + + + + + No Addresses found. + + + + You haven't saved any address yet. + {"\n"} + Click Add New Address to get started + + + navigation.navigate(NAVIGATION_SCREEN.NewAddress)} + > + + Add New Address + + + + + ); + }); + return ( + + + 0 + ? styles.contentContainer + : { flexGrow: 1 } + } + ListEmptyComponent={emptyView} + // keyExtractor={(item) => item._id} + keyExtractor={(item, index) => String(index)} + ItemSeparatorComponent={() => } + ListHeaderComponent={() => } + renderItem={({ item: address }) => ( + { + navigation.navigate(NAVIGATION_SCREEN.EditAddress, { + ...address, + }); + }} + > + + + + + {address.label} + + + + { + navigation.navigate(NAVIGATION_SCREEN.EditAddress, { + ...address, + }); + }} + > + + + + { + mutate({ variables: { id: address._id } }); + }} + > + + + + + + + + {address.delivery_address}, {address.details} + + + + )} + /> + + All rights are reserved by Enatega + + + + ); +} +export default React.memo(Addresses); diff --git a/CustomerApp/src/screens/Addresses/styles.js b/CustomerApp/src/screens/Addresses/styles.js new file mode 100644 index 0000000..e2bef09 --- /dev/null +++ b/CustomerApp/src/screens/Addresses/styles.js @@ -0,0 +1,86 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale, verticalScale } from '../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + containerInfo: { + flex: 1, + width: '100%', + alignItems: 'center' + }, + contentContainer: { + flexGrow: 1, + backgroundColor: colors.cardContainer, + shadowOffset: { width: 2, height: 2 }, + shadowColor: colors.white, + shadowOpacity: 0.2, + shadowRadius: 12, + elevation: 3, + borderRadius: moderateScale(18), + ...alignment.Mlarge, + ...alignment.Plarge + }, + image: { + justifyContent: 'center', + alignItems: 'center', + ...alignment.MBlarge + }, + descriptionEmpty: { + justifyContent: 'center', + alignItems: 'center' + }, + width100: { + width: '100%' + }, + titleAddress: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center' + }, + iconButton: { + width: scale(28), + aspectRatio: 1, + backgroundColor: colors.lightBackground, + alignItems: 'center', + justifyContent: 'center', + borderRadius: scale(8), + elevation: 3, + shadowColor: colors.shadowColor, + shadowOffset: { + width: 0, + height: verticalScale(1) + }, + shadowOpacity: 0.5, + shadowRadius: verticalScale(1) + }, + adressBtn: { + backgroundColor: colors.blueColor, + height: scale(50), + borderRadius: 10, + width: '80%', + justifyContent: 'center', + alignItems: 'center', + ...alignment.MTlarge + }, + addressDetail: { + width: '100%', + alignSelf: 'center', + ...alignment.PTsmall + }, + line: { + width: '100%', + alignSelf: 'center', + borderBottomColor: colors.horizontalLine, + borderBottomWidth: StyleSheet.hairlineWidth, + ...alignment.MTsmall, + ...alignment.MBmedium + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/AnimatedSplash/AnimatedSplash.js b/CustomerApp/src/screens/AnimatedSplash/AnimatedSplash.js new file mode 100644 index 0000000..d3d02bb --- /dev/null +++ b/CustomerApp/src/screens/AnimatedSplash/AnimatedSplash.js @@ -0,0 +1,95 @@ +/* eslint-disable react/prop-types */ +import AppLoading from 'expo-app-loading' +import { Asset } from 'expo-asset' +import Constants from 'expo-constants' +import * as SplashScreen from 'expo-splash-screen' +import React, { useEffect, useMemo, useState } from 'react' +import { Animated, StyleSheet, View } from 'react-native' + +function AnimatedSplashScreen({ children, image }) { + const animation = useMemo(() => new Animated.Value(1), []) + const [isAppReady, setAppReady] = useState(false) + const [animationCompleted, setAnimationCompleted] = useState(false) + + useEffect(() => { + if (isAppReady) { + Animated.timing(animation, { + toValue: 0, + duration: 1000, + useNativeDriver: false + }).start(() => setAnimationCompleted(true)) + } + }, [isAppReady]) + + const onImageLoaded = useMemo(() => async() => { + try { + await SplashScreen.hideAsync() + // Load stuff + await Promise.all([]) + } catch (e) { + // handle errors + } finally { + setAppReady(true) + } + }) + + return ( + + {isAppReady && children} + {!animationCompleted && ( + + + + )} + + ) +} + +function AnimatedSplash({ children, image }) { + const [isSplashReady, setSplashReady] = useState(false) + + const startAsync = useMemo( + // Load splash image to show + () => () => Asset.fromModule(image).downloadAsync(), + [image] + ) + + const onFinish = useMemo(() => setSplashReady(true), []) + + if (!isSplashReady) { + return ( + + ) + } + + return {children} +} + +export default React.memo(AnimatedSplash) diff --git a/CustomerApp/src/screens/Cart/Cart.js b/CustomerApp/src/screens/Cart/Cart.js new file mode 100755 index 0000000..e2b79af --- /dev/null +++ b/CustomerApp/src/screens/Cart/Cart.js @@ -0,0 +1,793 @@ +import { useApolloClient, useMutation } from '@apollo/react-hooks' +import { AntDesign } from '@expo/vector-icons' +import { + useIsFocused, + useNavigation, + useRoute, + useTheme +} from '@react-navigation/native' +import gql from 'graphql-tag' +import React, { + useContext, + useEffect, + useLayoutEffect, + useRef, + useState +} from 'react' +import { + ActivityIndicator, + Platform, + ScrollView, + TouchableOpacity, + View +} from 'react-native' +import { showMessage } from 'react-native-flash-message' +import { Modalize } from 'react-native-modalize' +import i18n from '../../../i18n' +import { foodByIds, getCoupon, myOrders, placeOrder } from '../../apollo/server' +import EmptyCart from '../../assets/images/SVG/imageComponents/EmptyCart' +import { + CartItem, + CustomIcon, + FlashMessage, + Spinner, + TextDefault, + Triangle, + WrapperView +} from '../../components' +import PaymentModal from '../../components/Modals/PaymentModal/PaymentModal' +import ConfigurationContext from '../../context/Configuration' +import UserContext from '../../context/User' +import { alignment } from '../../utils/alignment' +import Analytics from '../../utils/analytics' +import { ICONS_NAME, NAVIGATION_SCREEN } from '../../utils/constant' +import { paypalCurrencies, stripeCurrencies } from '../../utils/currencies' +import { scale } from '../../utils/scaling' +import useStyle from './styles' + +const FOOD_BY_IDS = gql` + ${foodByIds} +` +const GET_COUPON = gql` + ${getCoupon} +` +const PLACEORDER = gql` + ${placeOrder} +` + +const ORDERS = gql` + ${myOrders} +` + +function Cart() { + const route = useRoute() + const styles = useStyle() + const { colors } = useTheme() + const client = useApolloClient() + const isFocused = useIsFocused() + const navigation = useNavigation() + const configuration = useContext(ConfigurationContext) + const { + isLoggedIn, + profile, + cart, + addQuantity: addQuantityContext, + removeQuantity, + updateCart + } = useContext(UserContext) + + const [foods, setFoods] = useState([]) + const [coupon, setCoupon] = useState('') + const [discountPercent, setDiscountPercent] = useState(null) + const [validCoupon, setValidCoupon] = useState(null) + const [loadingData, setLoadingData] = useState(true) + const [paymentMethod, setPaymentMethod] = useState(null) + const modalizeRef = useRef(null) + + // const closeModal = () => { + // modalizeRef.current.close() + // } + + const [mutate] = useMutation(GET_COUPON, { + onCompleted, + onError + }) + const [mutateOrder, { loading: loadingOrderMutation }] = useMutation( + PLACEORDER, + { + update, + onCompleted: placeOrderCompleted, + errorPlaceOrder + } + ) + + const COD_PAYMENT = { + payment: 'COD', + label: i18n.t('cod'), + index: 2, + icon: ICONS_NAME.Cash, + iconSize: scale(25) + } + const payObj = route.params ? route.params.PayObject : null + const coupanObj = route.params ? route.params.CoupanObject : null + + const address = + isLoggedIn && profile.addresses + ? profile.addresses.filter(a => a.selected)[0] + : null + + useLayoutEffect(() => { + navigation.setOptions({ + title: i18n.t('titleCart'), + headerRight: null + }) + }, [navigation]) + + useEffect(() => { + didFocus() + }, []) + + useEffect(() => { + if (coupanObj !== null && typeof coupanObj !== 'undefined') { + mutate({ variables: { coupon: coupanObj } }) + setCoupon(coupanObj) + setValidCoupon(null) + setDiscountPercent(null) + } + }, [coupanObj]) + + useEffect(() => { + setPaymentMethod(payObj || COD_PAYMENT) + }, [payObj]) + + const paymentChange = payObj => { + setPaymentMethod(payObj || COD_PAYMENT) + } + + function update(cache, { data: { placeOrder } }) { + if (placeOrder && placeOrder.payment_method === 'COD') { + const data = cache.readQuery({ query: ORDERS }) + // console.log('placeorder', placeOrder) + if (data) { + cache.writeQuery({ + query: ORDERS, + data: { orders: [placeOrder, ...data.orders] } + }) + } + } + } + + function placeOrderCompleted(data) { + const trackingOpts = { + id: data.placeOrder.user._id, + usernameOrEmail: data.placeOrder.user.email, + orderId: data.placeOrder.order_id + } + Analytics.identify(data.placeOrder.user._id, trackingOpts) + Analytics.track(Analytics.events.USER_PLACED_ORDER, trackingOpts) + if (paymentMethod.payment === 'COD') { + navigation.reset({ + routes: [ + { name: 'Menu' }, + { + name: 'OrderDetail', + params: { _id: data.placeOrder._id, clearCart: true } + } + ] + }) + } else if (paymentMethod.payment === 'PAYPAL') { + navigation.replace('Paypal', { + _id: data.placeOrder.order_id, + currency: configuration.currency + }) + } else if (paymentMethod.payment === 'STRIPE') { + navigation.replace('StripeCheckout', { + _id: data.placeOrder.order_id, + amount: data.placeOrder.order_amount, + email: data.placeOrder.user.email, + currency: configuration.currency + }) + } + } + function errorPlaceOrder(error) { + FlashMessage({ + message: error.networkError.result.errors[0].message + }) + } + + function onCompleted({ coupon }) { + if (coupon) { + if (coupon.enabled) { + setDiscountPercent(coupon.discount) + setValidCoupon(coupon.code) + + FlashMessage({ + message: i18n.t('coupanApply') + }) + } else { + FlashMessage({ + message: i18n.t('coupanFailed') + }) + } + } + } + + function onError(error) { + showMessage({ + message: `${error}`, + type: 'none', + style: { width: '80%' } + }) + } + + async function addQuantity(key) { + const cartIndex = cart.findIndex(c => c.key === key) + const food = foods.find(f => f._id === cart[cartIndex]._id) + if (food.stock > cart[cartIndex].quantity) { + await addQuantityContext(key) + } else { + FlashMessage({ + message: 'No more items in stock' + }) + } + } + + function calculatePrice(deliveryCharges = 0, withDiscount) { + let itemTotal = 0 + cart.forEach(cartItem => { + if (!cartItem.price) { + return + } + itemTotal += cartItem.price * cartItem.quantity + }) + if (withDiscount && discountPercent) { + itemTotal = itemTotal - (discountPercent / 100) * itemTotal + } + return (itemTotal + deliveryCharges).toFixed(2) + } + + const onClose = () => { + modalizeRef.current?.close() + } + + function validateOrder() { + if (!cart.length) { + FlashMessage({ + message: i18n.t('validateItems') + }) + return false + } + if (!address) { + FlashMessage({ + message: i18n.t('validateDelivery') + }) + return false + } + if (!paymentMethod) { + FlashMessage({ + message: 'Set payment method before checkout' + }) + return false + } + if (profile.phone.length < 1) { + navigation.navigate(NAVIGATION_SCREEN.Profile, { backScreen: 'Cart' }) + return false + } + return true + } + + function checkPaymentMethod(currency) { + if (paymentMethod.payment === 'STRIPE') { + return stripeCurrencies.find(val => val.currency === currency) + } + if (paymentMethod.payment === 'PAYPAL') { + return paypalCurrencies.find(val => val.currency === currency) + } + return true + } + + function transformOrder(cartData) { + return cartData.map(food => { + return { + food: food._id, + quantity: food.quantity, + variation: food.variation._id, + addons: food.addons + ? food.addons.map(({ _id, options }) => ({ + _id, + options: options.map(({ _id }) => _id) + })) + : [] + } + }) + } + + async function onPayment() { + if (checkPaymentMethod(configuration.currency)) { + const items = transformOrder(cart) + mutateOrder({ + variables: { + orderInput: items, + paymentMethod: paymentMethod.payment, + couponCode: coupon, + address: { + label: address.label, + delivery_address: address.delivery_address, + details: address.details, + longitude: address.longitude, + latitude: address.latitude + } + } + }) + } else { + FlashMessage({ + message: i18n.t('paymentNotSupported') + }) + } + } + + async function didFocus() { + try { + const validatedItems = [] + if (cart && cart.length) { + const ids = cart.map(({ _id }) => _id) + const { + data: { foodByIds } + } = await client.query({ + query: FOOD_BY_IDS, + variables: { ids }, + fetchPolicy: 'network-only' + }) + const transformCart = cart.map(cartItem => { + const food = foodByIds.find(food => food._id === cartItem._id) + if (!food) return null + const variation = food.variations.find( + variation => variation._id === cartItem.variation._id + ) + if (!variation) return null + if (!food.stock) return null + if (food.stock < cartItem.quantity) { + cartItem.quantity = food.stock + } + const title = `${food.title}(${variation.title})` + let price = variation.price + if (cartItem.addons) { + cartItem.addons.forEach(addon => { + const cartAddon = variation.addons.find( + add => add._id === addon._id + ) + addon.options.forEach(option => { + const optionfound = cartAddon.options.find( + opt => opt._id === option._id + ) + price += optionfound.price + }) + }) + } + validatedItems.push(cartItem) + return { + ...cartItem, + img_url: food.img_url, + title: title, + price: price.toFixed(2) + } + }) + + if (isFocused) { + await updateCart(transformCart.filter(item => item)) + setFoods(foodByIds) + setLoadingData(false) + } + } else { + if (isFocused) { + setLoadingData(false) + } + } + } catch (e) { + FlashMessage({ + message: e.message + }) + } + } + + function emptyCart() { + if (loadingData) { + return + } else { + return ( + + + + + + + {i18n.t('emptyCart')} + + + {i18n.t('hungry')}? + + + navigation.navigate(NAVIGATION_SCREEN.Menu)}> + + {i18n.t('emptyCartBtn')} + + + + ) + } + } + + return ( + + + {!cart.length && emptyCart()} + {!!cart.length && ( + <> + + + {cart.map(food => ( + + {food.price && food.title ? ( + { + addQuantity(food.key) + }} + removeQuantity={() => { + removeQuantity(food.key) + }} + /> + ) : ( + + )} + + ))} + + + + + {i18n.t('subTotal')} + + + {configuration.currency_symbol} + {calculatePrice(0, false)} + + + + + {i18n.t('deliveryFee')} + + + {configuration.currency_symbol} + {configuration.delivery_charges.toFixed(2)} + + + {!validCoupon ? ( + { + navigation.navigate(NAVIGATION_SCREEN.Coupon) + // alert('asd') + }}> + + {i18n.t('haveVoucher')}? + + + ) : ( + + + {validCoupon} + + + { + setCoupon('') + setValidCoupon(null) + setDiscountPercent(null) + }}> + + {validCoupon} + + + + -{configuration.currency_symbol} + {parseFloat( + calculatePrice(0, false) - calculatePrice(0, true) + ).toFixed(2)} + + + + )} + + + + Total + + + {configuration.currency_symbol} + {calculatePrice(configuration.delivery_charges, true)}{' '} + + + + {Array(20) + .fill(1) + .map((value, index) => ( + + ))} + + + + {isLoggedIn && profile && ( + <> + + + + {i18n.t('contactInfo')} + + + + + {i18n.t('phone')} + + + {profile.phone ? profile.phone : 'None'} + + + + + {i18n.t('email')} + + + {profile.email} + + + + + { + if (!profile.addresses.length) { + navigation.navigate(NAVIGATION_SCREEN.NewAddress, { + backScreen: 'Cart' + }) + } else { + navigation.navigate(NAVIGATION_SCREEN.CartAddress, { + address + }) + } + }}> + + + {i18n.t('deliveryAddress')} + + + Change + + + {address ? ( + <> + {`${address.delivery_address}`} + + {address.details} + + + ) : ( + + {i18n.t('deliveryAddressmessage')} + + )} + + + + + + {i18n.t('paymentMethod')} + + { + // navigation.navigate(NAVIGATION_SCREEN.Payment, { + // payment: paymentMethod + // }) + modalizeRef.current.open() + }}> + + {i18n.t('change')} + + + + {paymentMethod === null ? ( + { + navigation.navigate(NAVIGATION_SCREEN.Payment, { + payment: paymentMethod + }) + }}> + + + {i18n.t('paymentMethod')} + + + ) : ( + { + navigation.navigate(NAVIGATION_SCREEN.Payment, { + payment: paymentMethod + }) + }}> + + + + + {paymentMethod.label} + + + {configuration.currency_symbol} + {calculatePrice(configuration.delivery_charges, true)} + + + )} + + + )} + + + {i18n.t('condition1')} + + + + + + {isLoggedIn && profile ? ( + { + if (validateOrder()) onPayment() + }} + style={styles.button}> + {loadingOrderMutation ? ( + + ) : ( + + {i18n.t('orderBtn')} + + )} + + ) : ( + { + navigation.navigate(NAVIGATION_SCREEN.CreateAccount) + }} + style={styles.button}> + + {i18n.t('loginOrCreateAccount')} + + + )} + + + )} + + + + + + ) +} + +export default Cart diff --git a/CustomerApp/src/screens/Cart/styles.js b/CustomerApp/src/screens/Cart/styles.js new file mode 100755 index 0000000..78dc4ab --- /dev/null +++ b/CustomerApp/src/screens/Cart/styles.js @@ -0,0 +1,128 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { COLORS } from '../../Theme/Colors' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale } from '../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + pT10: { + ...alignment.PTsmall + }, + pB10: { + ...alignment.PBsmall + }, + pB5: { + ...alignment.PBxSmall + }, + mB10: { + ...alignment.MBsmall + }, + width100: { + width: '100%' + }, + mainContainer: { + flex: 1, + ...alignment.PTsmall, + backgroundColor: 'transparent' + }, + dealContainer: { + width: '100%', + backgroundColor: 'transparent' + }, + termsContainer: { + width: '90%', + alignSelf: 'center', + backgroundColor: 'transparent', + borderRadius: scale(5) + }, + contactContainer: { + width: '100%', + alignSelf: 'center', + backgroundColor: colors.lightBackground, + borderRadius: 20, + padding: scale(15) + }, + itemContainer: { + width: '100%', + backgroundColor: 'transparent' + }, + priceContainer: { + width: '100%', + alignSelf: 'center', + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + backgroundColor: colors.lightBackground, + borderBottomColor: colors.horizontalLine, + ...alignment.PLmedium, + ...alignment.PRmedium, + ...alignment.PTmedium + }, + floatView: { + width: '100%', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between' + }, + floatRight: { + width: '70%', + textAlign: 'right' + }, + horizontalLine: { + borderBottomColor: COLORS.primaryBlue, + borderBottomWidth: StyleSheet.hairlineWidth, + borderRadius: 1, + borderStyle: 'solid', + width: '100%' + }, + buttonContainer: { + width: '90%', + height: '10%', + alignSelf: 'center', + backgroundColor: 'transparent', + justifyContent: 'center', + alignItems: 'center' + }, + button: { + width: '100%', + justifyContent: 'center', + alignItems: 'center', + backgroundColor: colors.buttonBackgroundBlue, + height: '75%', + maxHeight: scale(50), + borderRadius: moderateScale(18), + ...alignment.PLsmall, + ...alignment.PRsmall + }, + + subContainerImage: { + flex: 1, + justifyContent: 'center', + alignContent: 'center' + }, + imageContainer: { + justifyContent: 'center', + alignItems: 'center' + }, + descriptionEmpty: { + justifyContent: 'center', + alignItems: 'center', + ...alignment.Plarge + }, + emptyButton: { + width: '70%', + height: scale(50), + backgroundColor: colors.blueColor, + justifyContent: 'center', + alignItems: 'center', + alignSelf: 'center', + borderRadius: moderateScale(20), + ...alignment.MTlarge + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/CartAddress/CartAddress.js b/CustomerApp/src/screens/CartAddress/CartAddress.js new file mode 100644 index 0000000..2c129ef --- /dev/null +++ b/CustomerApp/src/screens/CartAddress/CartAddress.js @@ -0,0 +1,135 @@ +import { useMutation } from "@apollo/react-hooks"; +import { useNavigation, useTheme } from "@react-navigation/native"; +import gql from "graphql-tag"; +import React, { useContext, useLayoutEffect } from "react"; +import { FlatList, TouchableOpacity, View } from "react-native"; +import i18n from "../../../i18n"; +import { selectAddress } from "../../apollo/server"; +import { + CustomIcon, + RightButton, + TextDefault, + WrapperView, +} from "../../components"; +import RadioButton from "../../components/FdRadioBtn/RadioBtn"; +import UserContext from "../../context/User"; +import { alignment } from "../../utils/alignment"; +import { ICONS_NAME, NAVIGATION_SCREEN } from "../../utils/constant"; +import { scale } from "../../utils/scaling"; +import useStyle from "./styles"; + +const SELECT_ADDRESS = gql` + ${selectAddress} +`; + +function CartAddresses() { + const { colors } = useTheme(); + const styles = useStyle(); + const navigation = useNavigation(); + const { profile } = useContext(UserContext); + + const [mutate] = useMutation(SELECT_ADDRESS, { onError }); + + useLayoutEffect(() => { + navigation.setOptions({ + title: i18n.t("myAddresses"), + headerRight: () => ( + navigation.navigate(NAVIGATION_SCREEN.NewAddress)} + /> + ), + }); + }, [navigation]); + + function onError(error) { + console.log(error); + } + + const onSelectAddress = (address) => { + mutate({ variables: { id: address._id } }); + navigation.goBack(); + }; + + return ( + + + String(index)} + contentContainerStyle={styles.contentContainer} + ItemSeparatorComponent={() => } + ListHeaderComponent={() => } + renderItem={({ item: address }) => ( + + { + onSelectAddress(address); + }} + > + + + + { + onSelectAddress(address); + }} + /> + + + {address.label} + + + navigation.navigate(NAVIGATION_SCREEN.EditAddress, { + ...address, + }) + } + > + + + + + + + {address.delivery_address} + + + {address.details} + + + + + + )} + /> + + + ); +} + +export default CartAddresses; diff --git a/CustomerApp/src/screens/CartAddress/styles.js b/CustomerApp/src/screens/CartAddress/styles.js new file mode 100644 index 0000000..3faa60b --- /dev/null +++ b/CustomerApp/src/screens/CartAddress/styles.js @@ -0,0 +1,71 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale, verticalScale } from '../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + containerInfo: { + flex: 1, + alignItems: 'center', + position: 'relative' + }, + contentContainer: { + flexGrow: 1, + backgroundColor: colors.cardContainer, + shadowOffset: { width: 2, height: 2 }, + shadowColor: colors.white, + shadowOpacity: 0.2, + shadowRadius: 12, + elevation: 3, + borderRadius: moderateScale(18), + ...alignment.Mlarge, + ...alignment.Plarge + }, + editButton: { + width: scale(28), + aspectRatio: 1, + backgroundColor: colors.lightBackground, + alignItems: 'center', + justifyContent: 'center', + borderRadius: scale(8), + elevation: 3, + shadowColor: colors.shadowColor, + shadowOffset: { + width: 0, + height: verticalScale(1) + }, + shadowOpacity: 0.5, + shadowRadius: verticalScale(1) + }, + width100: { + width: '100%' + }, + titleAddress: { + flexDirection: 'row', + alignItems: 'center' + }, + homeIcon: { + width: '20%', + alignItems: 'center', + justifyContent: 'center' + }, + addressDetail: { + width: '80%', + alignSelf: 'flex-end' + }, + line: { + width: '80%', + alignSelf: 'flex-end', + borderBottomColor: 'lightgrey', + borderBottomWidth: StyleSheet.hairlineWidth, + ...alignment.MTmedium, + ...alignment.MBmedium + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/Chat/Chat.js b/CustomerApp/src/screens/Chat/Chat.js new file mode 100644 index 0000000..be21c99 --- /dev/null +++ b/CustomerApp/src/screens/Chat/Chat.js @@ -0,0 +1,211 @@ +import { Feather, FontAwesome } from "@expo/vector-icons"; +import { useNavigation, useTheme } from "@react-navigation/native"; +import React, { useCallback, useEffect, useState } from "react"; +import { Keyboard, View } from "react-native"; +import { + Bubble, + GiftedChat, + InputToolbar, + Send, +} from "react-native-gifted-chat"; +import { TextDefault, WrapperView } from "../../components"; +import { alignment } from "../../utils/alignment"; +import { scale } from "../../utils/scaling"; +import useStyle from "./styles"; + +const UserInfo = { + _id: 1, + name: "Jason", + active: true, +}; + +function Chat() { + const styles = useStyle(); + const { colors } = useTheme(); + const navigation = useNavigation(); + const [messages, setMessages] = useState([]); + const [isTyping, setIsTyping] = useState(false); + + useEffect(() => { + Keyboard.addListener("keyboardDidShow", _keyboardDidShow); + Keyboard.addListener("keyboardDidHide", _keyboardDidHide); + + // cleanup function + return () => { + Keyboard.remove("keyboardDidShow", _keyboardDidShow); + Keyboard.remove("keyboardDidHide", _keyboardDidHide); + }; + }, []); + + const _keyboardDidShow = () => setIsTyping(true); + const _keyboardDidHide = () => setIsTyping(false); + + useEffect(() => { + navigation.setOptions({ + title: "Chat", + }); + setMessages([ + { + _id: 1, + text: "How can I help you?", + sent: true, + received: true, + createdAt: new Date(), + user: { + _id: 2, + name: "React Native", + avatar: "https://placeimg.com/140/140/any", + }, + }, + ]); + }, [navigation]); + + const onSend = useCallback((messages = []) => { + setMessages((previousMessages) => + GiftedChat.append(previousMessages, messages) + ); + }, []); + + const renderBubble = (props) => { + return ( + + ); + }; + + const renderSend = (props) => ( + + + + + + ); + const customtInputToolbar = (props) => { + return ( + + ); + }; + + return ( + + + + + + {UserInfo.active ? UserInfo.name : "Offline"} + + + onSend(messages)} + renderAvatar={() => null} + renderBubble={renderBubble} + renderInputToolbar={customtInputToolbar} + textInputStyle={styles.inputStyle} + minInputToolbarHeight={60} + // renderFooter={() => + // isTyping ? ( + // + // User is typing... + // + // ) : null + // } + timeTextStyle={{ + left: { + width: "100%", + color: colors.fontMainColor, + fontSize: 11, + textAlign: "right", + }, + right: { + color: colors.fontMainColor, + fontSize: 11, + }, + }} + /> + + + ); +} + +export default Chat; diff --git a/CustomerApp/src/screens/Chat/styles.js b/CustomerApp/src/screens/Chat/styles.js new file mode 100644 index 0000000..cd3fa69 --- /dev/null +++ b/CustomerApp/src/screens/Chat/styles.js @@ -0,0 +1,64 @@ +import { useTheme } from '@react-navigation/native' +import { Platform, StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { scale } from '../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + mainContainer: { + marginTop: 30, + backgroundColor: colors.background, + borderTopEndRadius: scale(20), + borderTopStartRadius: scale(20), + shadowColor: colors.shadowColor, + shadowOffset: { + width: 0, + height: -5 + }, + shadowOpacity: 0.4, + shadowRadius: 10, + elevation: 5, + ...alignment.Plarge + }, + header: { + // backgroundColor: 'blue', + flexDirection: 'row', + alignItems: 'center', + ...alignment.PBmedium, + borderBottomWidth: StyleSheet.hairlineWidth, + borderBottomColor: colors.horizontalLine + }, + rightBtn: { + alignItems: 'center', + justifyContent: 'center', + backgroundColor: colors.buttonBackground, + width: scale(30), + aspectRatio: 1, + borderRadius: scale(10) + }, + sendBtn: { + justifyContent: 'center' + }, + inputContainer: { + backgroundColor: colors.lightBackground, + borderTopWidth: 0, + minHeight: scale(48), + alignItems: 'center', + justifyContent: 'center', + borderRadius: scale(25), + ...alignment.PRsmall, + ...alignment.PLxSmall + }, + inputStyle: { + paddingTop: Platform.OS === 'ios' ? 8 : -8, + paddingBottom: 0, + textAlignVertical: 'center' + } + }) +} + +export default useStyle diff --git a/CustomerApp/src/screens/Coupon/Coupon.js b/CustomerApp/src/screens/Coupon/Coupon.js new file mode 100644 index 0000000..8b421b3 --- /dev/null +++ b/CustomerApp/src/screens/Coupon/Coupon.js @@ -0,0 +1,78 @@ +import { useNavigation, useTheme } from '@react-navigation/native' +import React, { useLayoutEffect, useState } from 'react' +import { TouchableOpacity, View } from 'react-native' +import { TextField } from 'react-native-material-textfield' +import { useSafeAreaInsets } from 'react-native-safe-area-context' +import i18n from '../../../i18n' +import TextDefault from '../../components/Text/TextDefault/TextDefault' +import TextLine from '../../components/Text/TextLine/TextLine' +import { NAVIGATION_SCREEN } from '../../utils/constant' +import { scale } from '../../utils/scaling' +import useStyle from './styles' +import { WrapperView } from '../../components' + +function SelectVoucher() { + const styles = useStyle() + const { colors } = useTheme() + const navigation = useNavigation() + const inset = useSafeAreaInsets() + const [voucherCode, voucherCodeSetter] = useState(null) + + useLayoutEffect(() => { + navigation.setOptions({ + headerRight: null, + title: 'My Vouchers' + }) + }, [navigation]) + + function onSelectCoupon(text) { + navigation.navigate(NAVIGATION_SCREEN.Cart, { CoupanObject: text }) + } + + return ( + + + + + + { + voucherCodeSetter(text) + }} + /> + + onSelectCoupon(voucherCode)} + style={styles.buttonContainer}> + + {i18n.t('apply')} + + + + + + + ) +} + +export default SelectVoucher diff --git a/CustomerApp/src/screens/Coupon/styles.js b/CustomerApp/src/screens/Coupon/styles.js new file mode 100644 index 0000000..4fdd60c --- /dev/null +++ b/CustomerApp/src/screens/Coupon/styles.js @@ -0,0 +1,42 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, verticalScale } from '../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + mB10: { + ...alignment.MBsmall + }, + mainContainer: { + backgroundColor: colors.background, + ...alignment.PRsmall, + ...alignment.PLsmall + }, + container: { + width: '90%', + alignSelf: 'center' + }, + upperContainer: { + width: '100%', + height: verticalScale(60), + alignSelf: 'center', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between' + }, + buttonContainer: { + width: '25%', + height: '70%', + borderRadius: moderateScale(10), + justifyContent: 'center', + alignItems: 'center', + backgroundColor: colors.blueColor + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/CreateAccount/CreateAccount.js b/CustomerApp/src/screens/CreateAccount/CreateAccount.js new file mode 100644 index 0000000..c72bb6c --- /dev/null +++ b/CustomerApp/src/screens/CreateAccount/CreateAccount.js @@ -0,0 +1,267 @@ +import { useMutation } from "@apollo/react-hooks"; +import { FontAwesome } from "@expo/vector-icons"; +import { useNavigation, useTheme } from "@react-navigation/native"; + +import * as AppleAuthentication from "expo-apple-authentication"; +import Constants from "expo-constants"; + +import * as Google from "expo-auth-session/providers/google"; +import * as Notifications from "expo-notifications"; +import gql from "graphql-tag"; +import React, { useContext, useEffect, useState } from "react"; +import { Platform, TouchableOpacity, View } from "react-native"; +import getEnvVars from "../../../environment"; +import { login } from "../../apollo/server"; +import { + EnategaImage, + FdEmailBtn, + FdGoogleBtn, + FlashMessage, + RegistrationHeader, + Spinner, + TextDefault, + WrapperView, +} from "../../components"; +import UserContext from "../../context/User"; +import { alignment } from "../../utils/alignment"; +import Analytics from "../../utils/analytics"; +import { NAVIGATION_SCREEN } from "../../utils/constant"; +import { scale } from "../../utils/scaling"; +import useStyle from "./styles"; +import ApolloClient from "apollo-client"; + +const { + IOS_CLIENT_ID_GOOGLE, + ANDROID_CLIENT_ID_GOOGLE, + Expo_CLIENT_ID_GOOGLE, +} = getEnvVars(); + +const LOGIN = gql` + ${login} +`; + +const Logo = require("../../../assets/logo.png"); +const CreateAccount = () => { + const styles = useStyle(); + const { colors } = useTheme(); + const navigation = useNavigation(); + const [enableApple, setEnableApple] = useState(false); + const [loginButton, loginButtonSetter] = useState(null); + const [loading, setLoading] = useState(false); + + const { setTokenAsync } = useContext(UserContext); + + useEffect(() => { + checkIfSupportsAppleAuthentication(); + }, []); + + const [mutate] = useMutation(LOGIN, { onCompleted, onError }); + + async function checkIfSupportsAppleAuthentication() { + setEnableApple(await AppleAuthentication.isAvailableAsync()); + } + + async function onCompleted(data) { + try { + const trackingOpts = { + id: data.login.userId, + usernameOrEmail: data.login.email, + }; + Analytics.identify(data.login.userId, trackingOpts); + Analytics.track(Analytics.events.USER_CREATED_ACCOUNT, trackingOpts); + setTokenAsync(data.login.token); + navigation.navigate(NAVIGATION_SCREEN.Menu); + } catch (e) { + console.log(e); + } finally { + setLoading(false); + } + } + function onError(error) { + try { + console.log(JSON.stringify(error)); + FlashMessage({ + message: error.graphQLErrors[0].message, + }); + loginButtonSetter(null); + } catch (e) { + console.log(e); + } finally { + setLoading(false); + } + } + + async function mutateLogin(user) { + setLoading(true); + let notificationToken = null; + if (Constants.isDevice) { + const { status: existingStatus } = + await Notifications.getPermissionsAsync(); + if (existingStatus === "granted") { + notificationToken = (await Notifications.getExpoPushTokenAsync()).data; + } + } + mutate({ variables: { ...user, notificationToken } }); + } + + function renderAppleAction() { + if (loading && loginButton === "Apple") { + return ( + + + + ); + } + return ( + { + try { + const credential = await AppleAuthentication.signInAsync({ + requestedScopes: [ + AppleAuthentication.AppleAuthenticationScope.FULL_NAME, + AppleAuthentication.AppleAuthenticationScope.EMAIL, + ], + }); + console.log(credential); + if (credential) { + const user = { + appleId: credential.user, + phone: "", + email: credential.email, + password: "", + name: + credential.fullName.givenName + + " " + + credential.fullName.familyName, + picture: "", + type: "apple", + }; + mutateLogin(user); + } + loginButtonSetter("Apple"); + // signed in + } catch (e) { + if (e.code === "ERR_CANCELLED") { + // handle that the user canceled the sign-in flow + loginButtonSetter(null); + } else { + // handle other errors + loginButtonSetter(null); + } + } + }} + > + + + Signup with Apple + + + ); + } + + const [googleRequest, googleResponse, googlePromptAsync] = + Google.useAuthRequest({ + expoClientId: Expo_CLIENT_ID_GOOGLE, + iosClientId: IOS_CLIENT_ID_GOOGLE, + iosStandaloneAppClientId: IOS_CLIENT_ID_GOOGLE, + androidClientId: ANDROID_CLIENT_ID_GOOGLE, + androidStandaloneAppClientId: ANDROID_CLIENT_ID_GOOGLE, + //redirectUrl: `${AuthSession.OAuthRedirect}:/oauth2redirect/google`, + scopes: ["profile", "email"], + ...{ useProxy: true }, + }); + + const googleSignUp = () => { + if (googleResponse?.type === "success") { + const { authentication } = googleResponse; + console.log(authentication.accessToken); + (async () => { + const userInfoResponse = await fetch( + "https://www.googleapis.com/oauth2/v1/userinfo?alt=json", + { + headers: { Authorization: `Bearer ${authentication.accessToken}` }, + } + ); + const googleUser = await userInfoResponse.json(); + const user = { + phone: "", + email: googleUser.email, + password: "", + name: googleUser.name, + picture: googleUser.picture, + type: "google", + }; + mutateLogin(user); + })(); + } + }; + + useEffect(() => { + googleSignUp(); + }, [googleResponse]); + + function renderGoogleAction() { + return ( + { + loginButtonSetter("Google"); + }} + disabled={!googleRequest} + onPress={() => googlePromptAsync()} + /> + ); + } + function renderEmailAction() { + return ( + { + loginButtonSetter("Email"); + navigation.navigate(NAVIGATION_SCREEN.Register); + }} + /> + ); + } + + return ( + + + + + + + + + {renderGoogleAction()} + {enableApple && ( + {renderAppleAction()} + )} + + {renderEmailAction()} + navigation.navigate(NAVIGATION_SCREEN.Login)} + > + + Already a member? Log in + + + + + + + ); +}; +export default CreateAccount; diff --git a/CustomerApp/src/screens/CreateAccount/styles.js b/CustomerApp/src/screens/CreateAccount/styles.js new file mode 100644 index 0000000..16e91f9 --- /dev/null +++ b/CustomerApp/src/screens/CreateAccount/styles.js @@ -0,0 +1,96 @@ +import { useTheme } from '@react-navigation/native' +import { Dimensions, StyleSheet } from 'react-native' +import { useSafeAreaInsets } from 'react-native-safe-area-context' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale, verticalScale } from '../../utils/scaling' +const { height } = Dimensions.get('window') + +const useStyle = () => { + const { colors } = useTheme() + const inset = useSafeAreaInsets() + return StyleSheet.create({ + flex: { + flex: 1 + }, + width100: { + width: '100%' + }, + mainContainer: { + alignItems: 'center', + paddingTop: verticalScale(20) + inset.top + }, + subContainer: { + flex: 1, + width: '80%', + alignItems: 'center', + ...alignment.PBmedium + }, + whiteColor: { + backgroundColor: colors.buttonText + }, + crossIcon: { + width: scale(14), + height: scale(14), + ...alignment.MTlarge, + ...alignment.MLlarge + }, + upperContainer: { + marginTop: verticalScale(60) + }, + imgResponsive: { + width: scale(135), + height: scale(125), + backgroundColor: 'transparent' + }, + loadingView: { + backgroundColor: colors.background, + width: '100%', + height: '100%' + }, + marginTop3: { + ...alignment.MTxSmall + }, + marginTop5: { + ...alignment.MTsmall + }, + marginTop: { + marginTop: moderateScale(50) + }, + marginTop10: { + ...alignment.MTmedium + }, + alignItemsCenter: { + alignItems: 'center' + }, + buttonBackground: { + width: '100%', + height: height * 0.09, + alignItems: 'center' + }, + appleBtn: { + width: '100%', + height: height * 0.07, + borderRadius: moderateScale(20), + backgroundColor: colors.lightBackground, + flexDirection: 'row', + alignItems: 'center' + }, + alreadyBtn: { + marginTop: verticalScale(35), + width: '100%', + height: height * 0.06, + borderRadius: moderateScale(20), + backgroundColor: colors.buttonBackground, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'center' + }, + signupText: { + fontSize: moderateScale(17) + }, + marginLeft5: { + ...alignment.Pmedium + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/EditAddress/EditAddress.js b/CustomerApp/src/screens/EditAddress/EditAddress.js new file mode 100644 index 0000000..f54c713 --- /dev/null +++ b/CustomerApp/src/screens/EditAddress/EditAddress.js @@ -0,0 +1,359 @@ +import { useMutation } from '@apollo/react-hooks' +import { Ionicons } from '@expo/vector-icons' +import { useNavigation, useRoute, useTheme } from '@react-navigation/native' +import * as Location from 'expo-location' +import gql from 'graphql-tag' +import { keys } from 'lodash' +import React, { useEffect, useLayoutEffect, useRef, useState } from 'react' +import { + Image, + KeyboardAvoidingView, + Platform, + ScrollView, + TouchableOpacity, + View +} from 'react-native' +import MapView, { + Marker, + PROVIDER_DEFAULT, + PROVIDER_GOOGLE +} from 'react-native-maps' +import { FilledTextField } from 'react-native-material-textfield' +import i18n from '../../../i18n' +import { editAddress } from '../../apollo/server' +import { + FlashMessage, + Spinner, + TextDefault, + WrapperView +} from '../../components' +import { alignment } from '../../utils/alignment' +import { NAVIGATION_SCREEN } from '../../utils/constant' +import { scale } from '../../utils/scaling' +import useStyle from './styles' + +const EDIT_ADDRESS = gql` + ${editAddress} +` + +const labelValues = [ + { + title: 'Home', + value: 'Home' + }, + { + title: 'Work', + value: 'Work' + }, + { + title: 'Other', + value: 'Other' + } +] +const LATITUDE_DELTA = 0.0022 +const LONGITUDE_DELTA = 0.0021 + +function EditAddress() { + const { colors } = useTheme() + const route = useRoute() + const styles = useStyle() + const addressRef = useRef(null) + const navigation = useNavigation() + const [_id] = useState(route.params._id ?? null) + const [selectedLabel, setSelectedLabel] = useState( + route.params.label ?? labelValues[0].value + ) + const [region, setRegion] = useState({ + latitude: parseFloat(route.params.latitude ?? null), + latitudeDelta: LATITUDE_DELTA, + longitude: parseFloat(route.params.longitude ?? null), + longitudeDelta: LONGITUDE_DELTA + }) + const [deliveryAddress, setDeliveryAddress] = useState( + route.params.delivery_address ?? '' + ) + const [deliveryDetails, setDeliveryDetails] = useState( + route.params.details ?? '' + ) + const [deliveryAddressError, setDeliveryAddressError] = useState('') + const [deliveryDetailsError, setDeliveryDetailsError] = useState('') + const regionObj = route.params.regionChange ?? null + + const [mutate, { loading }] = useMutation(EDIT_ADDRESS, { + onCompleted, + onError + }) + + useLayoutEffect(() => { + navigation.setOptions({ + headerRight: null, + title: i18n.t('editAddress') + }) + }, [navigation]) + useEffect(() => { + if (regionObj !== null) regionChange(regionObj) + }, [regionObj]) + + function regionChange(region) { + Location.reverseGeocodeAsync({ ...region }) + .then(data => { + if (data.length) { + const location = data[0] + const deliveryAddress = keys(location) + .map(key => location[key]) + .join(' ') + setDeliveryAddress(deliveryAddress) + addressRef.current.setValue(deliveryAddress) + } + }) + .catch(error => { + console.log(error) + }) + setRegion(region) + } + + function onCompleted(data) { + FlashMessage({ + message: 'Address updated' + }) + // show message here + navigation.goBack() + } + + function onError(error) { + FlashMessage({ + message: `An error occured. Please try again ${error}` + }) + } + + return ( + + + + + { + navigation.navigate(NAVIGATION_SCREEN.FullMap, { + latitude: region.latitude, + longitude: region.longitude, + currentScreen: 'EditAddress' + }) + }}> + + + + + + + + + + + Label as + + + + {labelValues.map((label, index) => { + const isSelected = selectedLabel === label.value + return ( + { + setSelectedLabel(label.value) + }}> + {isSelected && ( + + )} + + {label.title} + + + ) + })} + + + + + { + setDeliveryAddress(text) + }} + onBlur={() => { + setDeliveryAddressError( + !deliveryAddress.trim().length + ? 'Delivery address is required' + : null + ) + }} + /> + { + setDeliveryDetails(text) + }} + onBlur={() => { + setDeliveryDetailsError( + !deliveryDetails.trim().length + ? 'Delivery details is required' + : null + ) + }} + /> + + + + { + const deliveryAddressError = !deliveryAddress.trim().length + ? 'Delivery address is required' + : null + const deliveryDetailsError = !deliveryDetails.trim().length + ? 'Delivery details is required' + : null + + setDeliveryAddressError(deliveryAddressError) + setDeliveryDetailsError(deliveryDetailsError) + + if ( + deliveryAddressError === null && + deliveryDetailsError === null + ) { + mutate({ + variables: { + addressInput: { + _id: _id, + latitude: `${region.latitude}`, + longitude: `${region.longitude}`, + delivery_address: deliveryAddress.trim(), + details: deliveryDetails.trim(), + label: selectedLabel + } + } + }) + } + }} + activeOpacity={0.5} + style={styles.saveBtnContainer}> + {loading ? ( + + + + ) : ( + + {i18n.t('saveContBtn')} + + )} + + navigation.goBack()}> + + {'cancel'} + + + + + + + ) +} + +export default EditAddress diff --git a/CustomerApp/src/screens/EditAddress/styles.js b/CustomerApp/src/screens/EditAddress/styles.js new file mode 100644 index 0000000..545bae3 --- /dev/null +++ b/CustomerApp/src/screens/EditAddress/styles.js @@ -0,0 +1,95 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale } from '../../utils/scaling' +import { textStyles } from '../../utils/textStyles' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + subContainer: { + flexGrow: 1, + alignItems: 'center', + borderWidth: scale(0.3), + borderTopLeftRadius: 30, + borderTopRightRadius: 30, + borderColor: 'grey', + justifyContent: 'space-around', + backgroundColor: colors.background + }, + upperContainer: { + width: '90%', + alignItems: 'center' + }, + addressContainer: { + paddingTop: 0, + width: '100%', + ...alignment.Psmall + }, + labelButtonContainer: { + width: '100%', + ...alignment.MBlarge, + ...alignment.Plarge + }, + buttonInline: { + width: '100%', + flexDirection: 'row', + justifyContent: 'space-around' + }, + labelButton: { + width: '30%', + height: moderateScale(40), + borderWidth: 1, + borderColor: colors.placeHolderColor, + borderRadius: 30, + justifyContent: 'center', + ...alignment.PxSmall + }, + activeLabel: { + flexDirection: 'row', + alignItems: 'center', + width: '30%', + borderWidth: 1, + borderRadius: 30, + backgroundColor: colors.tagColor, + justifyContent: 'space-evenly', + color: colors.fontWhite, + borderColor: colors.tagColor, + ...alignment.PxSmall + }, + textContainer: { + borderRadius: 20, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + backgroundColor: colors.buttonBackgroundLight, + alignItems: 'center', + overflow: 'hidden' + }, + labelStyle: { + ...textStyles.Bold, + marginTop: 3, + paddingLeft: 5, + paddingTop: scale(1) + }, + saveBtnContainer: { + width: '80%', + height: scale(45), + borderRadius: scale(10), + justifyContent: 'center', + alignItems: 'center', + backgroundColor: colors.buttonBackgroundBlue + }, + mapContainer: { + height: '40%', + backgroundColor: 'transparent' + }, + spinnerView: { + width: '100%', + height: '100%' + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/ForgotPassword/ForgotPassword.js b/CustomerApp/src/screens/ForgotPassword/ForgotPassword.js new file mode 100644 index 0000000..932e0d0 --- /dev/null +++ b/CustomerApp/src/screens/ForgotPassword/ForgotPassword.js @@ -0,0 +1,147 @@ +import { useMutation } from '@apollo/react-hooks' +import { useTheme } from '@react-navigation/native' +import gql from 'graphql-tag' +import React, { useState } from 'react' +import { + KeyboardAvoidingView, + Platform, + ScrollView, + TouchableOpacity, + View +} from 'react-native' +import { FilledTextField } from 'react-native-material-textfield' +import i18n from '../../../i18n' +import { forgotPassword } from '../../apollo/server' +import { + EnategaImage, + FlashMessage, + RegistrationHeader, + Spinner, + TextDefault, + WrapperView +} from '../../components' +import { alignment } from '../../utils/alignment' +import { scale } from '../../utils/scaling' +import useStyle from './styles' + +const FORGOT_PASSWORD = gql` + ${forgotPassword} +` + +const Logo = require('../../../assets/logo.png') + +function ForgotPassword() { + const styles = useStyle() + const { colors } = useTheme() + const [email, setEmail] = useState('') + const [emailError, setEmailError] = useState(null) + const [mutate, { loading }] = useMutation(FORGOT_PASSWORD, { + onCompleted, + onError + }) + + function validateCredentials() { + let result = true + setEmailError(null) + if (!email) { + setEmailError('Email is required') + result = false + } else { + const emailRegex = /^\w+([\\.-]?\w+)*@\w+([\\.-]?\w+)*(\.\w{2,3})+$/ + if (emailRegex.test(email) !== true) { + setEmailError('Invalid Email') + result = false + } + } + return result + } + function onCompleted(data) { + FlashMessage({ + message: 'Reset password link sent on your email' + }) + } + function onError(error) { + if (error.networkError) { + FlashMessage({ + message: error.networkError.result.errors[0].message + }) + } else if (error.graphQLErrors) { + FlashMessage({ + message: error.graphQLErrors[0].message + }) + } + } + + return ( + + + + + + + + + + + + To reset your password, please enter your Email address below. + + { + setEmail(text.trim()) + }} + /> + { + if (validateCredentials() && !loading) { + mutate({ + variables: { email: email.toLowerCase().trim() } + }) + } + }}> + {loading ? ( + + ) : ( + CONTINUE + )} + + + + + + + + ) +} +export default ForgotPassword diff --git a/CustomerApp/src/screens/ForgotPassword/styles.js b/CustomerApp/src/screens/ForgotPassword/styles.js new file mode 100644 index 0000000..c2ddfcf --- /dev/null +++ b/CustomerApp/src/screens/ForgotPassword/styles.js @@ -0,0 +1,67 @@ +import { useTheme } from '@react-navigation/native' +import { Dimensions, StyleSheet } from 'react-native' +import { useSafeAreaInsets } from 'react-native-safe-area-context' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale, verticalScale } from '../../utils/scaling' +import { textStyles } from '../../utils/textStyles' +const { height } = Dimensions.get('window') + +const useStyle = () => { + const { colors } = useTheme() + const inset = useSafeAreaInsets() + return StyleSheet.create({ + flex: { + flex: 1 + }, + width100: { + width: '100%' + }, + mainContainer: { + flex: 1, + alignItems: 'center', + paddingTop: verticalScale(20) + inset.top + }, + subContainer: { + flex: 1, + width: '80%', + alignItems: 'center', + ...alignment.PBmedium + }, + imgResponsive: { + width: scale(135), + height: scale(125), + backgroundColor: 'transparent' + }, + loadingView: { + backgroundColor: colors.background, + width: '100%', + height: '100%' + }, + upperContainer: { + marginTop: verticalScale(60) + }, + actionBtn: { + height: height * 0.06, + alignItems: 'center', + justifyContent: 'center', + borderRadius: moderateScale(18), + backgroundColor: colors.buttonBackground, + ...alignment.MTlarge + }, + labelStyle: { + ...textStyles.Medium, + marginTop: 3, + paddingLeft: 5, + paddingTop: scale(1) + }, + textContainer: { + borderRadius: 20, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + backgroundColor: colors.buttonBackgroundLight, + overflow: 'hidden', + ...alignment.MTlarge + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/FullMap/FullMap.js b/CustomerApp/src/screens/FullMap/FullMap.js new file mode 100644 index 0000000..56fe558 --- /dev/null +++ b/CustomerApp/src/screens/FullMap/FullMap.js @@ -0,0 +1,282 @@ +import { useNavigation, useRoute, useTheme } from '@react-navigation/native' +import * as Location from 'expo-location' +import React, { useEffect, useLayoutEffect, useState } from 'react' +import { Image, TouchableOpacity, View } from 'react-native' +import MapView, { Marker, PROVIDER_GOOGLE } from 'react-native-maps' +import { FlashMessage, TextDefault, WrapperView } from '../../components' +import { NAVIGATION_SCREEN } from '../../utils/constant' +import { scale } from '../../utils/scaling' +import useStyle from './styles' + +const LATITUDE = 33.7001019 +const LONGITUDE = 72.9735978 +const LATITUDE_DELTA = 0.0022 +const LONGITUDE_DELTA = 0.0021 +const mapStyle = [ + { + elementType: 'geometry', + stylers: [ + { + color: '#242f3e' + } + ] + }, + { + elementType: 'labels.text.fill', + stylers: [ + { + color: '#746855' + } + ] + }, + { + elementType: 'labels.text.stroke', + stylers: [ + { + color: '#242f3e' + } + ] + }, + { + featureType: 'administrative.locality', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#d59563' + } + ] + }, + { + featureType: 'poi', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#d59563' + } + ] + }, + { + featureType: 'poi.park', + elementType: 'geometry', + stylers: [ + { + color: '#263c3f' + } + ] + }, + { + featureType: 'poi.park', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#6b9a76' + } + ] + }, + { + featureType: 'road', + elementType: 'geometry', + stylers: [ + { + color: '#38414e' + } + ] + }, + { + featureType: 'road', + elementType: 'geometry.stroke', + stylers: [ + { + color: '#212a37' + } + ] + }, + { + featureType: 'road', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#9ca5b3' + } + ] + }, + { + featureType: 'road.highway', + elementType: 'geometry', + stylers: [ + { + color: '#746855' + } + ] + }, + { + featureType: 'road.highway', + elementType: 'geometry.stroke', + stylers: [ + { + color: '#1f2835' + } + ] + }, + { + featureType: 'road.highway', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#f3d19c' + } + ] + }, + { + featureType: 'transit', + elementType: 'geometry', + stylers: [ + { + color: '#2f3948' + } + ] + }, + { + featureType: 'transit.station', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#d59563' + } + ] + }, + { + featureType: 'water', + elementType: 'geometry', + stylers: [ + { + color: '#17263c' + } + ] + }, + { + featureType: 'water', + elementType: 'labels.text.fill', + stylers: [ + { + color: '#515c6d' + } + ] + }, + { + featureType: 'water', + elementType: 'labels.text.stroke', + stylers: [ + { + color: '#17263c' + } + ] + } +] + +export default function FullMap() { + const route = useRoute() + const styles = useStyle() + const { dark, colors } = useTheme() + const navigation = useNavigation() + const [mapMargin, setMapMargin] = useState(1) + const latitude = route.params.latitude ?? LATITUDE + const longitude = route.params.longitude ?? LONGITUDE + + const [region, setRegion] = useState({ + latitude: latitude, + latitudeDelta: LATITUDE_DELTA, + longitude: longitude, + longitudeDelta: LONGITUDE_DELTA + }) + const backScreen = route.params.currentScreen ?? null + + useLayoutEffect(() => { + navigation.setOptions({ + title: 'Map', + headerRight: null + }) + }, [navigation]) + + useEffect(() => { + if (backScreen === 'NewAddress') _getLocationAsync() + }, [backScreen]) + function setMargin() { + setMapMargin(0) + } + + async function _getLocationAsync() { + const { status } = await Location.requestForegroundPermissionsAsync() + if (status === 'granted') { + const location = await Location.getCurrentPositionAsync({ + enableHighAccuracy: true + }) + const loc = { + latitude: parseFloat(location.coords.latitude), + latitudeDelta: LATITUDE_DELTA, + longitude: parseFloat(location.coords.longitude), + longitudeDelta: LONGITUDE_DELTA + } + setRegion(loc) + } else { + FlashMessage({ + message: 'Location permission not granted' + }) + } + } + + function onSave() { + if (backScreen === NAVIGATION_SCREEN.NewAddress) { + navigation.navigate(NAVIGATION_SCREEN.NewAddress, { + regionChange: region + }) + } else if (backScreen === NAVIGATION_SCREEN.EditAddress) { + navigation.navigate(NAVIGATION_SCREEN.EditAddress, { + regionChange: region + }) + } + } + + return ( + + + + + + + + + + + Save + + + + + + ) +} diff --git a/CustomerApp/src/screens/FullMap/styles.js b/CustomerApp/src/screens/FullMap/styles.js new file mode 100644 index 0000000..b5a58cd --- /dev/null +++ b/CustomerApp/src/screens/FullMap/styles.js @@ -0,0 +1,27 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { moderateScale } from '../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + container: { + height: '92%' + }, + button: { + position: 'absolute', + alignSelf: 'center', + justifyContent: 'center', + alignItems: 'center', + borderRadius: moderateScale(10), + bottom: 0, + height: '8%', + width: '100%', + backgroundColor: colors.buttonBackgroundBlue + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/Help/Help.js b/CustomerApp/src/screens/Help/Help.js new file mode 100644 index 0000000..521603e --- /dev/null +++ b/CustomerApp/src/screens/Help/Help.js @@ -0,0 +1,54 @@ +import { AntDesign } from '@expo/vector-icons' +import { useNavigation } from '@react-navigation/native' +import React, { useLayoutEffect } from 'react' +import { TouchableOpacity, View } from 'react-native' +import i18n from '../../../i18n' +import { TextDefault, WrapperView } from '../../components' +import { NAVIGATION_SCREEN } from '../../utils/constant' +import useStyle from './styles' + +const links = [ + { + title: 'Product Page', + url: 'https://market.nativebase.io/view/react-native-food-delivery-backend-app' + }, + { title: 'Docs', url: 'https://enatega.gitbook.io/enatega-full-app/' }, + { + title: 'Blog', + url: 'https://blog.nativebase.io/enatega-full-food-delivery-app-is-finally-here-a6039de4a09d' + }, + { title: 'About Us', url: 'https://ninjascode.com/pages/ourteam.html' } +] +function Help() { + const styles = useStyle() + const navigation = useNavigation() + + useLayoutEffect(() => { + navigation.setOptions({ + headerTitle: i18n.t('titleHelp'), + headerRight: null + }) + }, [navigation]) + + return ( + + + {links.map(({ title, url }, index) => ( + + navigation.navigate(NAVIGATION_SCREEN.HelpBrowser, { title, url }) + } + style={styles.itemContainer} + key={index}> + {title} + + + + + ))} + + + ) +} + +export default Help diff --git a/CustomerApp/src/screens/Help/styles.js b/CustomerApp/src/screens/Help/styles.js new file mode 100644 index 0000000..4d88b7c --- /dev/null +++ b/CustomerApp/src/screens/Help/styles.js @@ -0,0 +1,35 @@ +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, verticalScale } from '../../utils/scaling' +import { useTheme } from '@react-navigation/native' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + itemContainer: { + backgroundColor: colors.white, + marginHorizontal: moderateScale(20), + borderRadius: moderateScale(10), + elevation: 2, + shadowColor: 'black', + shadowOffset: { + width: 0, + height: verticalScale(1) + }, + shadowOpacity: 0.5, + shadowRadius: verticalScale(1), + flexDirection: 'row', + justifyContent: 'space-between', + borderColor: colors.horizontalLine, + ...alignment.Pmedium, + ...alignment.Pmedium, + ...alignment.PLlarge, + ...alignment.PRsmall, + ...alignment.MTsmall + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/HelpBrowser/HelpBrowser.js b/CustomerApp/src/screens/HelpBrowser/HelpBrowser.js new file mode 100644 index 0000000..84a42fd --- /dev/null +++ b/CustomerApp/src/screens/HelpBrowser/HelpBrowser.js @@ -0,0 +1,30 @@ +import React, { useLayoutEffect } from 'react' +import { WebView } from 'react-native-webview' +import Spinner from '../../components/Spinner/Spinner' +import { useNavigation, useRoute } from '@react-navigation/native' +import { WrapperView } from '../../components' + +function HelpBrowser() { + const navigation = useNavigation() + const route = useRoute() + const { title, url } = route.params + + useLayoutEffect(() => { + navigation.setOptions({ + headerRight: null, + headerTitle: title + }) + }, [navigation]) + + return ( + + } + source={{ uri: url }} + /> + + ) +} + +export default HelpBrowser diff --git a/CustomerApp/src/screens/ItemDetail/ItemDetail.js b/CustomerApp/src/screens/ItemDetail/ItemDetail.js new file mode 100644 index 0000000..49b0df9 --- /dev/null +++ b/CustomerApp/src/screens/ItemDetail/ItemDetail.js @@ -0,0 +1,235 @@ +import { useNavigation, useRoute } from '@react-navigation/native' +import React, { useContext, useEffect, useState } from 'react' +import { ScrollView, View } from 'react-native' +import { WrapperView } from '../../components' +import CartComponent from '../../components/CustomizeComponents/CartComponent/CartComponent' +import CheckComponent from '../../components/CustomizeComponents/CheckComponent/CheckComponent' +import HeadingComponent from '../../components/CustomizeComponents/HeadingComponent/HeadingComponent' +import ImageHeader from '../../components/CustomizeComponents/ImageHeader/ImageHeader' +import RadioComponent from '../../components/CustomizeComponents/RadioComponent/RadioComponent' +import TitleComponent from '../../components/CustomizeComponents/TitleComponent/TitleComponent' +import UserContext from '../../context/User' +import { alignment } from '../../utils/alignment' +import { NAVIGATION_SCREEN } from '../../utils/constant' +import useStyle from './styles' + +function ItemDetail() { + const route = useRoute() + const styles = useStyle() + const navigation = useNavigation() + const [food] = useState(route.params.food ?? null) + const [selectedVariation, setSelectedVariation] = useState(food.variations[0]) + const [selectedAddons, setSelectedAddons] = useState([]) + const { cart, addQuantity, addCartItem } = useContext(UserContext) + + useEffect(() => { + navigation.setOptions({ + title: 'Customize', + headerRight: () => null + }) + }, [navigation]) + + function validateButton() { + if (!selectedVariation) return false + const validatedAddons = [] + selectedVariation.addons.forEach(addon => { + const selected = selectedAddons.find(ad => ad._id === addon._id) + if (!selected && addon.quantity_minimum === 0) { + validatedAddons.push(false) + } else if ( + selected && + selected.options.length >= addon.quantity_minimum && + selected.options.length <= addon.quantity_maximum + ) { + validatedAddons.push(false) + } else validatedAddons.push(true) + }) + return validatedAddons.every(val => val === false) + } + + async function onAddToCart(quantity) { + if (validateOrderItem()) { + const addons = selectedAddons.map(addon => ({ + ...addon, + options: addon.options.map(({ _id }) => ({ + _id + })) + })) + + const cartItem = cart.find(cartItem => { + if ( + cartItem._id === food._id && + cartItem.variation._id === selectedVariation._id + ) { + if (cartItem.addons.length === addons.length) { + if (addons.length === 0) return true + const addonsResult = addons.every(newAddon => { + const cartAddon = cartItem.addons.find( + ad => ad._id === newAddon._id + ) + + if (!cartAddon) return false + const optionsResult = newAddon.options.every(newOption => { + const cartOption = cartAddon.options.find( + op => op._id === newOption._id + ) + + if (!cartOption) return false + return true + }) + + return optionsResult + }) + + return addonsResult + } + } + return false + }) + + if (!cartItem) { + await addCartItem(food._id, selectedVariation._id, quantity, addons) + } else { + await addQuantity(cartItem.key, quantity) + } + navigation.navigate(NAVIGATION_SCREEN.Cart) + } + } + + function onSelectVariation(variation) { + setSelectedVariation(variation) + } + + async function onSelectOption(addon, option) { + const addons = selectedAddons + const index = addons.findIndex(ad => ad._id === addon._id) + if (index > -1) { + if (addon.quantity_minimum === 1 && addon.quantity_maximum === 1) { + addons[index].options = [option] + } else { + const optionIndex = addons[index].options.findIndex( + opt => opt._id === option._id + ) + if (optionIndex > -1) { + addons[index].options = addons[index].options.filter( + opt => opt._id !== option._id + ) + } else { + addons[index].options.push(option) + } + if (!addons[index].options.length) { + addons.splice(index, 1) + } + } + } else { + addons.push({ _id: addon._id, options: [option] }) + } + setSelectedAddons([...addons]) + } + + function calculatePrice() { + const variation = selectedVariation.price + let addons = 0 + selectedAddons.forEach(addon => { + addons += addon.options.reduce((acc, option) => { + return acc + option.price + }, 0) + }) + return (variation + addons).toFixed(2) + } + + function validateOrderItem() { + const validatedAddons = selectedVariation.addons.map(addon => { + const selected = selectedAddons.find(ad => ad._id === addon._id) + + if (!selected && addon.quantity_minimum === 0) { + addon.error = false + } else if ( + selected && + selected.options.length >= addon.quantity_minimum && + selected.options.length <= addon.quantity_maximum + ) { + addon.error = false + } else addon.error = true + return addon + }) + setSelectedVariation({ ...selectedVariation, addons: validatedAddons }) + return validatedAddons.every(addon => addon.error === false) + } + + function renderOption(addon) { + if (addon.quantity_minimum === 1 && addon.quantity_maximum === 1) { + return ( + + ) + } else { + return ( + + ) + } + } + + return ( + + + + {!!food.img_url && } + + + + {food.variations.length > 1 && ( + <> + + + + + + )} + {selectedVariation.addons.map(addon => ( + + + {renderOption(addon)} + + ))} + + + + + + ) +} + +export default ItemDetail diff --git a/CustomerApp/src/screens/ItemDetail/styles.js b/CustomerApp/src/screens/ItemDetail/styles.js new file mode 100644 index 0000000..df16f92 --- /dev/null +++ b/CustomerApp/src/screens/ItemDetail/styles.js @@ -0,0 +1,30 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' + +const useStyle = () => { + const { colors } = useTheme() + + return StyleSheet.create({ + flex: { + flex: 1 + }, + scrollViewContainer: { + width: '100%', + height: '100%' + }, + subContainer: { + width: '90%', + height: '100%', + alignSelf: 'center', + ...alignment.MTmedium + }, + line: { + width: '100%', + height: StyleSheet.hairlineWidth, + ...alignment.MBsmall, + backgroundColor: colors.horizontalLine + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/Login/Login.js b/CustomerApp/src/screens/Login/Login.js new file mode 100755 index 0000000..c19b8da --- /dev/null +++ b/CustomerApp/src/screens/Login/Login.js @@ -0,0 +1,279 @@ +import { useMutation } from '@apollo/react-hooks' +import { useNavigation, useTheme } from '@react-navigation/native' +import * as Notifications from 'expo-notifications' +import Constants from 'expo-constants' +import gql from 'graphql-tag' +import React, { useContext, useEffect, useState } from 'react' +import { + ActivityIndicator, + BackHandler, + KeyboardAvoidingView, + Platform, + ScrollView, + TouchableOpacity, + View +} from 'react-native' +import { FilledTextField } from 'react-native-material-textfield' +import { useSafeAreaInsets } from 'react-native-safe-area-context' +import i18n from '../../../i18n' +import { login } from '../../apollo/server' +import { + EnategaImage, + FlashMessage, + RegistrationHeader, + TextDefault, + WrapperView +} from '../../components' +import UserContext from '../../context/User' +import { alignment } from '../../utils/alignment' +import Analytics from '../../utils/analytics' +import { NAVIGATION_SCREEN } from '../../utils/constant' +import { scale, verticalScale } from '../../utils/scaling' +import useStyle from './styles' + +// Constants +const LOGIN = gql` + ${login} +` + +const Logo = require('../../../assets/logo.png') + +function Login() { + let _didFocusSubscription = null + let _willBlurSubscription = null + const styles = useStyle() + const inset = useSafeAreaInsets() + const { colors } = useTheme() + const navigation = useNavigation() + const [email, setEmail] = useState('john@test.com') + const [loading, setLoading] = useState(false) + const [password, setPassword] = useState('123123') + const [emailError, setEmailError] = useState('') + const { setTokenAsync } = useContext(UserContext) + const [passwordError, setPasswordError] = useState(null) + + const [mutate] = useMutation(LOGIN, { onCompleted, onError }) + + useEffect(() => { + _didFocusSubscription = navigation.addListener('didFocus', () => { + BackHandler.addEventListener( + 'hardwareBackPress', + onBackButtonPressAndroid + ) + }) + _willBlurSubscription = navigation.addListener('willBlur', () => { + BackHandler.removeEventListener( + 'hardwareBackPress', + onBackButtonPressAndroid + ) + }) + return () => { + _didFocusSubscription && _didFocusSubscription() + _willBlurSubscription && _willBlurSubscription() + BackHandler.removeEventListener( + 'hardwareBackPress', + onBackButtonPressAndroid + ) + } + }, []) + function validateCredentials() { + let result = true + setEmailError(null) + setPasswordError(null) + + if (!email) { + setEmailError('Email/Phone is required') + result = false + } else { + const emailRegex = /^\w+([\\.-]?\w+)*@\w+([\\.-]?\w+)*(\.\w{2,3})+$/ + const phoneRegex = /^[+]\d{6,15}$/ + if (emailRegex.test(email) !== true && phoneRegex.test(email) !== true) { + setEmailError('Invalid Email/Phone') + result = false + } + } + if (!password) { + setPasswordError('Password is required') + result = false + } + return result + } + async function onCompleted(data) { + try { + const trackingOpts = { + id: data.login.userId, + usernameOrEmail: data.login.email + } + Analytics.identify(data.login.userId, trackingOpts) + Analytics.track(Analytics.events.USER_LOGGED_IN, trackingOpts) + setTokenAsync(data.login.token) + navigation.navigate(NAVIGATION_SCREEN.Menu) + } catch (e) { + console.log(e) + } finally { + setLoading(false) + } + } + function onError(error) { + try { + console.log(JSON.stringify(error)) + FlashMessage({ + message: error.graphQLErrors[0].message + }) + } catch (e) { + console.log(e) + } finally { + setLoading(false) + } + } + + function onBackButtonPressAndroid() { + navigation.navigate(NAVIGATION_SCREEN.Menu) + return true + } + + async function mutateLogin(user) { + try { + setLoading(true) + let notificationToken = null + if (Constants.isDevice) { + const { status: existingStatus } = + await Notifications.getPermissionsAsync() + if (existingStatus === 'granted') { + notificationToken = (await Notifications.getExpoPushTokenAsync()).data + } + } + mutate({ variables: { ...user, notificationToken } }) + } catch (e) { + console.log(e) + } finally { + } + } + + function renderLoginAction() { + return ( + { + const user = { + email: email, + password: password, + type: 'default' + } + if (validateCredentials()) { + mutateLogin(user) + } + }}> + {loading ? ( + + ) : ( + {i18n.t('loginBtn')} + )} + + ) + } + + return ( + + + + + + + + + + + + Enter your Email and Password + + + { + setEmail(text.toLowerCase().trim()) + }} + /> + { + setPassword(text.trim()) + }} + /> + + navigation.navigate(NAVIGATION_SCREEN.ForgotPassword) + }> + + Forgot Password? + + + {renderLoginAction()} + + navigation.navigate(NAVIGATION_SCREEN.CreateAccount) + }> + + Create New Account + + + + + + + + + ) +} + +export default Login diff --git a/CustomerApp/src/screens/Login/screenOptions.js b/CustomerApp/src/screens/Login/screenOptions.js new file mode 100644 index 0000000..737deff --- /dev/null +++ b/CustomerApp/src/screens/Login/screenOptions.js @@ -0,0 +1,31 @@ +/* eslint-disable react/prop-types */ +import React from 'react' +import { textStyles } from '../../utils/textStyles' +import PropTypes from 'prop-types' +const { + LeftButton +} = require('../../components/Header/HeaderIcons/HeaderIcons') + +const navigationOptions = props => { + return { + title: 'Log in', + headerTitleAlign: 'left', + headerRight: null, + // eslint-disable-next-line react/display-name + headerLeft: () => , + headerStyle: { + backgroundColor: props.backColor + }, + headerTitleStyle: { + color: props.fontColor, + ...textStyles.H3, + ...textStyles.Bold + } + } +} +navigationOptions.propTypes = { + iconColor: PropTypes.string, + fontColor: PropTypes.string, + backColor: PropTypes.string +} +export default navigationOptions diff --git a/CustomerApp/src/screens/Login/styles.js b/CustomerApp/src/screens/Login/styles.js new file mode 100644 index 0000000..ec51d03 --- /dev/null +++ b/CustomerApp/src/screens/Login/styles.js @@ -0,0 +1,84 @@ +import { useTheme } from '@react-navigation/native' +import { Dimensions, StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale, verticalScale } from '../../utils/scaling' +import { textStyles } from '../../utils/textStyles' +const { height } = Dimensions.get('window') + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + width100: { + width: '100%' + }, + safeAreaViewStyles: { + flex: 1, + backgroundColor: colors.cardContainer + }, + imgResponsive: { + width: scale(135), + height: scale(125), + backgroundColor: 'transparent' + }, + loadingView: { + backgroundColor: colors.background, + width: '100%', + height: '100%' + }, + upperContainer: { + marginTop: verticalScale(60) + }, + mainContainer: { + flex: 1, + alignItems: 'center' + }, + subContainer: { + flex: 1, + width: '80%', + alignItems: 'center', + ...alignment.PBmedium + }, + + marginTop3: { + ...alignment.MTmedium + }, + lgnText: { + fontSize: moderateScale(20) + }, + textContainer: { + borderRadius: 20, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + backgroundColor: colors.buttonBackgroundLight, + alignItems: 'center', + overflow: 'hidden' + }, + labelStyle: { + ...textStyles.Medium, + marginTop: 3, + paddingLeft: 5, + paddingTop: scale(1) + }, + loginBtn: { + width: '100%', + borderRadius: moderateScale(18), + height: height * 0.06, + backgroundColor: colors.buttonBackground, + justifyContent: 'center', + alignItems: 'center' + }, + whiteBtn: { + backgroundColor: colors.white, + borderWidth: 1, + borderColor: colors.fontSecondColor + }, + appleBtn: { + width: '100%', + height: height * 0.06 + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/Menu/Menu.js b/CustomerApp/src/screens/Menu/Menu.js new file mode 100755 index 0000000..6c3735c --- /dev/null +++ b/CustomerApp/src/screens/Menu/Menu.js @@ -0,0 +1,107 @@ +import { useQuery } from "@apollo/react-hooks"; +import { useNavigation } from "@react-navigation/native"; +import gql from "graphql-tag"; +import React, { useContext, useLayoutEffect } from "react"; +import { FlatList, View } from "react-native"; +import { categories } from "../../apollo/server"; +import EmptyFood from "../../assets/images/SVG/imageComponents/EmptyFood"; +import { + MenuCard, + Spinner, + StatusCard, + TextDefault, + TextError, + WrapperView, +} from "../../components"; +import UserContext from "../../context/User"; +import { alignment } from "../../utils/alignment"; +import { NAVIGATION_SCREEN } from "../../utils/constant"; +import { scale } from "../../utils/scaling"; +import useStyle from "./styles"; + +// constants +const CATEGORIES = gql` + ${categories} +`; + +function Menu() { + const styles = useStyle(); + const navigation = useNavigation(); + const { isLoggedIn, profile } = useContext(UserContext); + const { data, refetch, networkStatus, loading, error } = useQuery(CATEGORIES); + + useLayoutEffect(() => { + navigation.setOptions({ + title: "Home", + }); + }, []); + + function emptyView() { + if (loading) { + return ; + } else if (error) { + return ( + + ); + } else { + return ( + + + + No item found + + + ); + } + } + + return ( + + + String(index)} + ListEmptyComponent={emptyView()} + data={loading ? [] : error ? [] : data.categories} + refreshing={networkStatus === 4} + onRefresh={() => refetch()} + ListHeaderComponent={() => { + if (!error && !loading) { + return ( + <> + {isLoggedIn && profile && } + + + Featured + + + ); + } + return null; + }} + renderItem={({ item }) => ( + + + navigation.navigate(NAVIGATION_SCREEN.MenuItems, { + ...item, + }) + } + title={item.title} + description={item.description} + image={item.img_menu || ""} + /> + + )} + /> + + + ); +} + +export default React.memo(Menu); diff --git a/CustomerApp/src/screens/Menu/styles.js b/CustomerApp/src/screens/Menu/styles.js new file mode 100644 index 0000000..da6c4f1 --- /dev/null +++ b/CustomerApp/src/screens/Menu/styles.js @@ -0,0 +1,53 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { verticalScale } from '../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + + return StyleSheet.create({ + flex: { + flex: 1 + }, + backgroundColor: { + backgroundColor: colors.background + }, + emptyContainer: { + flex: 1, + justifyContent: 'center', + alignItems: 'center' + }, + mainContentContainer: { + width: '100%', + ...alignment.PLsmall, + ...alignment.PRsmall, + alignSelf: 'center' + }, + cardViewContainer: { + width: '95%', + alignSelf: 'center', + height: verticalScale(165), + elevation: 7, + borderRadius: 30, + shadowColor: colors.shadowColor, + shadowOffset: { + width: 0, + height: verticalScale(3) + }, + shadowOpacity: 1, + shadowRadius: verticalScale(4), + borderWidth: 0, + borderColor: colors.white, + ...alignment.MTxSmall, + ...alignment.MBsmall + }, + contentContainer: { + flexGrow: 1, + ...alignment.MTxSmall, + ...alignment.PBlarge + } + }) +} + +export default useStyle diff --git a/CustomerApp/src/screens/MenuItems/MenuItems.js b/CustomerApp/src/screens/MenuItems/MenuItems.js new file mode 100755 index 0000000..2cbf3b3 --- /dev/null +++ b/CustomerApp/src/screens/MenuItems/MenuItems.js @@ -0,0 +1,283 @@ +import { useQuery } from "@apollo/react-hooks"; +import { useNavigation, useRoute } from "@react-navigation/native"; +//import { useHeaderHeight } from '@react-navigation/stack' +import { useHeaderHeight } from "@react-navigation/elements"; +import gql from "graphql-tag"; +import { get } from "lodash"; +import React, { useContext, useLayoutEffect, useRef, useState } from "react"; +import { + FlatList, + ImageBackground, + Platform, + TouchableOpacity, + View, +} from "react-native"; +import { Modalize } from "react-native-modalize"; +import { foods } from "../../apollo/server"; +import EmptyFood from "../../assets/images/SVG/imageComponents/EmptyFood"; +import { + EnategaImage, + FilterModal, + FlashMessage, + RightButton, + Spinner, + TextDefault, + TextError, + WrapperView, +} from "../../components"; +import ConfigurationContext from "../../context/Configuration"; +import UserContext from "../../context/User"; +import { alignment } from "../../utils/alignment"; +import { ICONS_NAME, NAVIGATION_SCREEN, SORT_DATA } from "../../utils/constant"; +import { moderateScale, scale } from "../../utils/scaling"; +import useStyle from "./styles"; + +// constants +const FOODS = gql` + ${foods} +`; + +function MenuItems() { + const route = useRoute(); + const styles = useStyle(); + const headerHeight = useHeaderHeight(); + const navigation = useNavigation(); + const _id = route.params._id ?? null; + const imgMenu = route.params.img_menu ?? null; + const title = route.params.title ?? null; + const description = route.params.description ?? null; + const [filters, setFilters] = useState({}); + const { loading, error, data, refetch, networkStatus } = useQuery(FOODS, { + variables: { category: _id, ...filters }, + }); + const { addCartItem } = useContext(UserContext); + const configuration = useContext(ConfigurationContext); + const modalizeRef = useRef(null); + + const closeModal = () => { + modalizeRef.current.close(); + }; + + useLayoutEffect(() => { + navigation.setOptions({ + headerTitle: title, + headerRight: () => ( + modalizeRef.current.open()} + /> + ), + }); + }, [navigation]); + + async function onAddToCart(food) { + if (food.stock < 1) { + FlashMessage({ + message: "Item out of stock", + }); + return; + } + + if ( + food.variations.length === 1 && + food.variations[0].addons.length === 0 + ) { + await addCartItem(food._id, food.variations[0]._id); + navigation.navigate(NAVIGATION_SCREEN.Cart); + } else { + navigation.navigate(NAVIGATION_SCREEN.ItemDetail, { food }); + } + } + + function renderGridCards(item) { + return ( + { + onAddToCart(item); + }} + activeOpacity={0.7} + style={styles.cardContainer} + > + + + {item.stock < 1 && ( + + + No Stock + + + )} + + + + {item.title} + + + {item.description} + + + {item.variations[0].discounted > 0 && ( + + {configuration.currency_symbol}{" "} + {( + item.variations[0].price + item.variations[0].discounted + ).toFixed(2)} + + )} + + {configuration.currency_symbol}{" "} + {item.variations[0].price.toFixed(2)} + + + + + ); + } + + function sortData(foods) { + const VALUE = get(SORT_DATA, get(filters, "sort")); + switch (VALUE) { + case SORT_DATA.NameAsc: + return foods.sort((a, b) => + a.title.toLowerCase() > b.title.toLowerCase() ? 1 : -1 + ); + case SORT_DATA.NameDesc: + return foods.sort((a, b) => + a.title.toLowerCase() < b.title.toLowerCase() ? 1 : -1 + ); + case SORT_DATA.PriceAsc: + return foods.sort((a, b) => + a.variations[0].price > b.variations[0].price ? 1 : -1 + ); + case SORT_DATA.PriceDesc: + return foods.sort((a, b) => + a.variations[0].price < b.variations[0].price ? 1 : -1 + ); + default: + return foods.sort((a, b) => (a.img_url < b.img_url ? 1 : -1)); + } + } + + const setFilterss = (filterObj) => { + setFilters(filterObj); + }; + + function emptyView() { + if (loading) { + return ; + } else if (error) { + return ( + + ); + } else { + return ( + + + + No food item found + + + ); + } + } + + function renderListHeader() { + return ( + + + + + + {title} + + + {description} + + + + + ); + } + return ( + + + String(index)} + ListEmptyComponent={emptyView} + data={loading ? [] : error ? [] : sortData(data.foodByCategory)} + refreshing={networkStatus === 4} + onRefresh={() => + refetch({ + variables: { category: _id, ...filters }, + }) + } + renderItem={({ item }) => renderGridCards(item)} + /> + + + + + + ); +} +export default MenuItems; diff --git a/CustomerApp/src/screens/MenuItems/styles.js b/CustomerApp/src/screens/MenuItems/styles.js new file mode 100755 index 0000000..d1e60b0 --- /dev/null +++ b/CustomerApp/src/screens/MenuItems/styles.js @@ -0,0 +1,129 @@ +import { useTheme } from '@react-navigation/native' +import { Dimensions, StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, verticalScale } from '../../utils/scaling' +const { width, height } = Dimensions.get('window') + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + contentContaienr: { + flexGrow: 1, + ...alignment.PBlarge + }, + whiteFont: { + color: colors.fontWhite + }, + lightColor: { + color: colors.fontSecondColor + }, + tagColor: { + color: colors.tagColor + }, + emptyContainer: { + flex: 1, + justifyContent: 'center', + alignItems: 'center' + }, + shadeContainer: { + width: '100%', + height: '100%', + borderRadius: moderateScale(20), + backgroundColor: colors.fontMainColor, + opacity: 0.3, + position: 'absolute' + }, + backgroundImageContainer: { + height: height * 0.2, + width: '88%', + borderRadius: moderateScale(20), + alignSelf: 'center', + ...alignment.MTmedium, + ...alignment.MBlarge + }, + backgroundImage: { + width: '100%', + height: '100%', + borderRadius: moderateScale(20), + alignSelf: 'center', + justifyContent: 'flex-end' + }, + backgroundImageTextContainer: { + width: '100%', + borderRadius: moderateScale(20), + backgroundColor: '#21262d99', + justifyContent: 'flex-end', + ...alignment.PRxSmall, + ...alignment.PLlarge, + ...alignment.PTsmall, + ...alignment.PBsmall + }, + + filter: { + height: '100%', + flexDirection: 'row', + alignItems: 'center', + ...alignment.PLmedium, + ...alignment.PRmedium + }, + + cardContainer: { + width: '90%', + flexDirection: 'row', + height: width * 0.28, + justifyContent: 'center', + alignItems: 'center', + borderWidth: 1, + borderColor: colors.white, + backgroundColor: colors.cardContainer, + elevation: 5, + shadowColor: colors.placeHolderColor, + shadowOffset: { + width: verticalScale(2), + height: verticalScale(1) + }, + borderRadius: moderateScale(20), + alignSelf: 'center', + shadowOpacity: 0.2, + shadowRadius: verticalScale(10), + ...alignment.MBxSmall, + ...alignment.MTmedium, + ...alignment.PLsmall, + ...alignment.PRsmall + }, + cardImageContainer: { + width: moderateScale(75), + height: moderateScale(75), + borderRadius: moderateScale(20) + }, + imgResponsive: { + width: moderateScale(75), + height: moderateScale(75), + borderRadius: moderateScale(20) + }, + loadingView: { + backgroundColor: colors.background, + width: '100%', + height: '100%' + }, + emtpyStockLabel: { + position: 'absolute', + top: 0, + right: -10, + justifyContent: 'center', + alignItems: 'center', + backgroundColor: colors.tagColor, + ...alignment.PLxSmall, + ...alignment.PRxSmall + }, + textContainer: { + flex: 1, + justifyContent: 'center', + ...alignment.MLlarge + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/MyOrders/MyOrders.js b/CustomerApp/src/screens/MyOrders/MyOrders.js new file mode 100755 index 0000000..7897fc0 --- /dev/null +++ b/CustomerApp/src/screens/MyOrders/MyOrders.js @@ -0,0 +1,198 @@ +import { useApolloClient } from "@apollo/react-hooks"; +import { useNavigation, useTheme } from "@react-navigation/native"; +import React, { useContext, useLayoutEffect } from "react"; +import { FlatList, TouchableOpacity, View } from "react-native"; +import uuid from "uuid"; +import i18n from "../../../i18n"; +import EmptyOrder from "../../assets/images/SVG/imageComponents/EmptyOrder"; +import { + ActiveOrders, + CustomIcon, + EnategaImage, + Spinner, + TextDefault, + TextError, + WrapperView, +} from "../../components"; +import ConfigurationContext from "../../context/Configuration"; +import UserContext from "../../context/User"; +import { alignment } from "../../utils/alignment"; +import { ICONS_NAME, NAVIGATION_SCREEN } from "../../utils/constant"; +import { scale } from "../../utils/scaling"; +import useStyle from "./style"; + +const orderStatusActive = ["PENDING", "PICKED", "ACCEPTED"]; +const orderStatusInactive = ["DELIVERED", "COMPLETED"]; + +function MyOrders() { + const styles = useStyle(); + const { colors } = useTheme(); + const client = useApolloClient(); + const navigation = useNavigation(); + const configuration = useContext(ConfigurationContext); + const { + orders, + loadingOrders, + errorOrders, + fetchOrders, + fetchMoreOrdersFunc, + networkStatusOrders, + updateCart, + } = useContext(UserContext); + + useLayoutEffect(() => { + navigation.setOptions({ + headerTitle: i18n.t("titleOrders"), + headerRight: null, + }); + }, [navigation]); + + // add items to cart and navigate to cart screen + async function onReOrder({ order }) { + const data = { + cartItems: order.items.map((item) => { + return { + ...item.food, + key: uuid.v4(), + __typename: "CartItem", + variation: { + __typename: "ItemVariation", + _id: item.variation._id, + }, + quantity: item.quantity, + addons: item.addons.map((addon) => ({ + ...addon, + __typename: "ItemAddon", + options: addon.options.map(({ _id }) => ({ + _id, + __typename: "ItemOption", + })), + })), + }; + }), + }; + await updateCart(data.cartItems); + navigation.navigate(NAVIGATION_SCREEN.Cart); + } + + function emptyView() { + if (loadingOrders) return ; + if (errorOrders) return ; + else { + return ( + + + + + + + No Orders Found + + + navigation.navigate(NAVIGATION_SCREEN.Menu)} + > + + Start Shopping + + + + ); + } + } + + return ( + + orderStatusInactive.includes(o.order_status)) + } + style={styles.container} + contentContainerStyle={styles.contentContainer} + ListEmptyComponent={emptyView()} + ListHeaderComponent={ + + orderStatusActive.includes(o.order_status) + )} + pastOrders={orders.filter((o) => + orderStatusInactive.includes(o.order_status) + )} + loading={loadingOrders} + error={errorOrders} + /> + } + //keyExtractor={(item) => item._id} + keyExtractor={(item, index) => String(index)} + refreshing={networkStatusOrders === 4} + onRefresh={() => networkStatusOrders === 7 && fetchOrders()} + renderItem={({ item }) => ( + + navigation.navigate(NAVIGATION_SCREEN.OrderDetail, { + _id: item._id, + currency_symbol: configuration.currency_symbol, + }) + } + > + + + + + + + {"ID: "} + {item.order_id} + + + {configuration.currency_symbol} + {item.order_amount} + {/* {item.order_status === 'PENDING' + ? "We're asking the restaurant how long it will take to deliver your food." + : 'The restaurant rider will be at your place around.'} */} + + + + onReOrder({ order: item, client })} + style={styles.subContainerRight} + > + + + + + + {"Re-Order"} + + + + + + )} + onEndReached={fetchMoreOrdersFunc} + /> + + ); +} + +export default MyOrders; diff --git a/CustomerApp/src/screens/MyOrders/style.js b/CustomerApp/src/screens/MyOrders/style.js new file mode 100644 index 0000000..a52567d --- /dev/null +++ b/CustomerApp/src/screens/MyOrders/style.js @@ -0,0 +1,126 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { scale, verticalScale } from '../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + safeAreaViewStyles: { + flex: 1, + backgroundColor: colors.headerBackground + }, + container: { + flex: 1 + }, + contentContainer: { + flexGrow: 1, + ...alignment.PBsmall + }, + subContainerImage: { + flex: 1, + justifyContent: 'center', + alignContent: 'center', + ...alignment.PBlarge + }, + imageContainer: { + justifyContent: 'center', + alignItems: 'center', + ...alignment.MBlarge + }, + image: { + width: scale(134), + height: scale(131) + }, + descriptionEmpty: { + justifyContent: 'center', + alignItems: 'center', + ...alignment.Plarge + }, + emptyButton: { + width: '70%', + height: scale(50), + backgroundColor: colors.blueColor, + justifyContent: 'center', + alignItems: 'center', + alignSelf: 'center', + borderRadius: scale(15), + ...alignment.MTlarge + }, + subContainer: { + flex: 1, + backgroundColor: colors.cardContainer, + borderRadius: scale(20), + elevation: 3, + width: '85%', + alignSelf: 'center', + shadowColor: 'black', + shadowOffset: { + width: 0, + height: verticalScale(1) + }, + shadowOpacity: 0.5, + shadowRadius: verticalScale(1), + flexDirection: 'row', + justifyContent: 'space-between', + ...alignment.Psmall, + ...alignment.MBmedium + }, + subContainerLeft: { + width: '30%', + justifyContent: 'center', + alignItems: 'center', + ...alignment.PRxSmall, + ...alignment.PLxSmall + }, + subContainerRight: { + width: '30%', + justifyContent: 'center', + alignItems: 'center' + }, + subContainerButton: { + backgroundColor: colors.buttonBackground, + width: scale(70), + height: verticalScale(25), + alignSelf: 'flex-end', + alignItems: 'center', + justifyContent: 'center' + }, + Vline: { + borderRightWidth: StyleSheet.hairlineWidth, + borderColor: colors.placeHolderColor, + shadowOffset: { + width: 2, + height: 2 + }, + shadowRadius: 10, + shadowColor: colors.lightBackground, + shadowOpacity: 0.6 + }, + imgContainer: { + alignItems: 'center', + justifyContent: 'center', + borderRadius: 20, + overflow: 'hidden' + }, + imgResponsive: { + width: scale(70), + height: scale(70) + }, + loadingView: { + backgroundColor: colors.background, + width: '100%', + height: '100%' + }, + infoContainer: { + flex: 1, + justifyContent: 'center', + ...alignment.PRxSmall, + ...alignment.PLsmall + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/NewAddress/NewAddress.js b/CustomerApp/src/screens/NewAddress/NewAddress.js new file mode 100644 index 0000000..8dab412 --- /dev/null +++ b/CustomerApp/src/screens/NewAddress/NewAddress.js @@ -0,0 +1,382 @@ +import { useMutation } from '@apollo/react-hooks' +import { Ionicons } from '@expo/vector-icons' +import { useNavigation, useRoute, useTheme } from '@react-navigation/native' +import * as Location from 'expo-location' +import gql from 'graphql-tag' +import { keys } from 'lodash' +import React, { useEffect, useLayoutEffect, useRef, useState } from 'react' +import { + Image, + KeyboardAvoidingView, + Platform, + ScrollView, + TouchableOpacity, + View +} from 'react-native' +import MapView, { + Marker, + PROVIDER_DEFAULT, + PROVIDER_GOOGLE +} from 'react-native-maps' +import { FilledTextField } from 'react-native-material-textfield' +import i18n from '../../../i18n' +import { createAddress } from '../../apollo/server' +import { + FlashMessage, + Spinner, + TextDefault, + WrapperView +} from '../../components' +import { alignment } from '../../utils/alignment' +import { NAVIGATION_SCREEN } from '../../utils/constant' +import { scale } from '../../utils/scaling' +import useStyle from './styles' + +const CREATE_ADDRESS = gql` + ${createAddress} +` + +const labelValues = [ + { + title: 'Home', + value: 'Home' + }, + { + title: 'Work', + value: 'Work' + }, + { + title: 'Other', + value: 'Other' + } +] + +const LATITUDE = 33.7001019 +const LONGITUDE = 72.9735978 +const LATITUDE_DELTA = 0.0022 +const LONGITUDE_DELTA = 0.0021 + +function NewAddress() { + const route = useRoute() + const styles = useStyle() + const addressRef = useRef() + const { colors } = useTheme() + const navigation = useNavigation() + + const [deliveryAddress, setDeliveryAddress] = useState('') + const [deliveryDetails, setDeliveryDetails] = useState('') + const [deliveryAddressError, setDeliveryAddressError] = useState('') + const [deliveryDetailsError, setDeliveryDetailsError] = useState('') + const [selectedLabel, setSelectedLabel] = useState(labelValues[0].value) + const [region, setRegion] = useState({ + latitude: LATITUDE, + latitudeDelta: LATITUDE_DELTA, + longitude: LONGITUDE, + longitudeDelta: LONGITUDE_DELTA + }) + + const regionObj = route.params ? route.params.regionChange : null + + useLayoutEffect(() => { + navigation.setOptions({ + title: i18n.t('addAddress'), + headerRight: null + }) + }, [navigation]) + + useEffect(() => { + _getLocationAsync() + }, []) + + useEffect(() => { + if (regionObj !== null) regionChange(regionObj) + }, [regionObj]) + + const [mutate, { loading }] = useMutation(CREATE_ADDRESS, { + onCompleted, + onError + }) + + async function _getLocationAsync() { + const { status } = await Location.requestForegroundPermissionsAsync() + if (status === 'granted') { + const location = await Location.getCurrentPositionAsync({ + enableHighAccuracy: true + }) + const loc = { + latitude: parseFloat(location.coords.latitude), + latitudeDelta: LATITUDE_DELTA, + longitude: parseFloat(location.coords.longitude), + longitudeDelta: LONGITUDE_DELTA + } + setRegion(loc) + regionChange(loc) + } else { + FlashMessage({ + message: 'Location permission not granted' + }) + } + } + + function regionChange(region) { + Location.reverseGeocodeAsync({ ...region }) + .then(data => { + if (data.length && addressRef.current !== null) { + const location = data[0] + const deliveryAddress = keys(location) + .map(key => location[key]) + .join(' ') + setDeliveryAddress(deliveryAddress) + setRegion(region) + + addressRef.current.setValue(deliveryAddress) + } + }) + .catch(error => { + console.log('Error : ', error) + }) + } + + function onCompleted(data) { + FlashMessage({ + message: 'Address added' + }) + const cartAddress = route.params ? route.params.backScreen : null + if (cartAddress === NAVIGATION_SCREEN.Cart) { + navigation.navigate(NAVIGATION_SCREEN.Cart, { + AddressObject: data.createAddress.addresses[0] + }) + } else navigation.goBack() + } + + function onError(error) { + FlashMessage({ + message: `An error occured. Please try again. ${error}` + }) + } + + return ( + + + + + { + navigation.navigate(NAVIGATION_SCREEN.FullMap, { + latitude: region.latitude, + longitude: region.longitude, + currentScreen: 'NewAddress' + }) + }}> + + + + + + + + + + + + + Label As: + + + + {labelValues.map((label, index) => { + const isSelected = selectedLabel === label.value + return ( + { + setSelectedLabel(label.value) + }}> + {isSelected && ( + + )} + + {label.title} + + + ) + })} + + + + { + setDeliveryAddress(text) + }} + onBlur={() => { + setDeliveryAddressError( + !deliveryAddress.trim().length + ? 'Delivery address is required' + : null + ) + }} + /> + + { + setDeliveryDetails(text) + }} + onBlur={() => { + setDeliveryDetailsError( + !deliveryDetails.trim().length + ? 'Delivery details is required' + : null + ) + }} + /> + + + { + const deliveryAddressError = !deliveryAddress.trim().length + ? 'Delivery address is required' + : null + const deliveryDetailsError = !deliveryDetails.trim().length + ? 'Delivery details is required' + : null + + setDeliveryAddressError(deliveryAddressError) + setDeliveryDetailsError(deliveryDetailsError) + + if ( + deliveryAddressError === null && + deliveryDetailsError === null + ) { + mutate({ + variables: { + addressInput: { + latitude: `${region.latitude}`, + longitude: `${region.longitude}`, + delivery_address: deliveryAddress.trim(), + details: deliveryDetails.trim(), + label: selectedLabel + } + } + }) + } + }} + activeOpacity={0.5} + style={styles.saveBtnContainer}> + {loading ? ( + + + + ) : ( + + {i18n.t('saveContBtn')} + + )} + + navigation.goBack()}> + + {'Cancel'} + + + + + + + + ) +} + +export default NewAddress diff --git a/CustomerApp/src/screens/NewAddress/styles.js b/CustomerApp/src/screens/NewAddress/styles.js new file mode 100644 index 0000000..b9490ac --- /dev/null +++ b/CustomerApp/src/screens/NewAddress/styles.js @@ -0,0 +1,98 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale } from '../../utils/scaling' +import { textStyles } from '../../utils/textStyles' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + subContainer: { + flex: 1, + alignItems: 'center', + borderWidth: scale(0.3), + borderTopLeftRadius: 30, + borderTopRightRadius: 30, + borderColor: 'grey', + justifyContent: 'space-around', + backgroundColor: colors.background + }, + upperContainer: { + width: '90%', + alignItems: 'center' + }, + addressContainer: { + paddingTop: 0, + width: '100%', + ...alignment.Psmall + }, + labelButtonContainer: { + width: '100%', + ...alignment.MBlarge, + ...alignment.Plarge + }, + labelTitleContainer: { + ...alignment.PBsmall + }, + buttonInline: { + width: '100%', + flexDirection: 'row', + justifyContent: 'space-evenly' + }, + labelButton: { + width: '30%', + height: moderateScale(40), + borderWidth: 1, + borderColor: colors.placeHolderColor, + borderRadius: 30, + justifyContent: 'center', + ...alignment.PxSmall + }, + activeLabel: { + flexDirection: 'row', + alignItems: 'center', + width: '30%', + borderWidth: 1, + borderRadius: 30, + backgroundColor: colors.tagColor, + justifyContent: 'space-evenly', + color: colors.fontWhite, + borderColor: colors.tagColor, + ...alignment.PxSmall + }, + saveBtnContainer: { + width: '80%', + height: scale(45), + borderRadius: scale(10), + justifyContent: 'center', + alignItems: 'center', + backgroundColor: colors.buttonBackgroundBlue + }, + mapContainer: { + height: '40%', + backgroundColor: 'transparent' + }, + spinnerView: { + width: '100%', + height: '100%' + }, + textContainer: { + borderRadius: 20, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + backgroundColor: colors.buttonBackgroundLight, + alignItems: 'center', + overflow: 'hidden' + }, + labelStyle: { + ...textStyles.Bold, + marginTop: 3, + paddingLeft: 5, + paddingTop: scale(1) + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/OrderDetail/OrderDetail.js b/CustomerApp/src/screens/OrderDetail/OrderDetail.js new file mode 100644 index 0000000..da431d1 --- /dev/null +++ b/CustomerApp/src/screens/OrderDetail/OrderDetail.js @@ -0,0 +1,293 @@ +import { MaterialIcons } from '@expo/vector-icons' +import { useNavigation, useRoute, useTheme } from '@react-navigation/native' +import React, { useContext, useEffect, useLayoutEffect } from 'react' +import { Platform, ScrollView, TouchableOpacity, View } from 'react-native' +import MapView, { PROVIDER_DEFAULT, PROVIDER_GOOGLE } from 'react-native-maps' +import i18n from '../../../i18n' +import { + Spinner, + TextDefault, + TextError, + TrackingRider, + WrapperView +} from '../../components' +import { orderStatuses } from '../../components/Menu/StatusCard/StatusCard' +import ConfigurationContext from '../../context/Configuration' +import UserContext from '../../context/User' +import { alignment } from '../../utils/alignment' +import { NAVIGATION_SCREEN } from '../../utils/constant' +import { moderateScale, scale } from '../../utils/scaling' +import useStyle from './styles' + +function calculatePrice(food) { + var foodPrice = food.variation.price + food.addons.forEach(addons => { + addons.options.forEach(addon => { + foodPrice += addon.price + }) + }) + return foodPrice +} + +const checkStatus = status => { + const obj = orderStatuses.filter(x => { + return x.key === status + }) + return obj[0] +} + +function OrderDetail() { + const styles = useStyle() + const route = useRoute() + const { colors } = useTheme() + const navigation = useNavigation() + const id = route.params._id ?? null + const cart = route.params.clearCart ?? false + const { loadingOrders, errorOrders, orders, clearCart } = + useContext(UserContext) + const configuration = useContext(ConfigurationContext) + + const order = orders.find(o => o._id === id) + + useLayoutEffect(() => { + navigation.setOptions({ + headerTitle: 'Order Detail', + headerRight: null + }) + }, [navigation]) + + useEffect(() => { + return () => { + if (cart) { + clear() + } + } + }, [cart]) + async function clear() { + await clearCart() + } + + if (loadingOrders || !order) return + if (errorOrders) return + return ( + + + + {order.order_status === 'PICKED' && order.rider && ( + + )} + + + + Thank You! + + + Your order ID is + + + {order.order_id} + + + Status + + + {order.order_status}{' '} + + ( {checkStatus(order.order_status).statusText}) + + + + Delivery address: + + + {order.delivery_address.delivery_address} + + + {order.delivery_address.details} + + + + {order.items.map((item, index) => ( + + + {item.quantity}x + + + {item.food.title} + + + {configuration.currency_symbol} + {parseFloat(calculatePrice(item)).toFixed(2)} + + + ))} + + + + Subtotal + + + {configuration.currency_symbol} + {parseFloat(order.order_amount - order.delivery_charges).toFixed( + 2 + )} + + + + + Delivery fee + + + {configuration.currency_symbol} + {parseFloat(order.delivery_charges).toFixed(2)} + + + + + Total + + + {configuration.currency_symbol} + {parseFloat(order.order_amount).toFixed(2)} + + + + {order.order_status === 'PICKED' && ( + + + + + + Chat with Rider + + + + + )} + + {(order.order_status === 'DELIVERED' || + order.order_status === 'COMPLETED') && + order.review && + order.review.rating === 0 && ( + + + Any suggestion? + + + Review regarding your order? + + + navigation.navigate(NAVIGATION_SCREEN.RateAndReview, { + _id: order._id + }) + }> + + + Write a review + + + + )} + + + ) +} + +export default OrderDetail diff --git a/CustomerApp/src/screens/OrderDetail/styles.js b/CustomerApp/src/screens/OrderDetail/styles.js new file mode 100644 index 0000000..5d3c3f1 --- /dev/null +++ b/CustomerApp/src/screens/OrderDetail/styles.js @@ -0,0 +1,39 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + container: { + ...alignment.PLmedium, + ...alignment.PRmedium, + ...alignment.PTlarge, + ...alignment.PBlarge + }, + marginBottom20: { + ...alignment.MBlarge + }, + marginBottom10: { + ...alignment.MBsmall + }, + orderReceipt: { + ...alignment.PLmedium, + ...alignment.PRmedium, + ...alignment.PBlarge + }, + horizontalLine: { + borderBottomColor: colors.horizontalLine, + borderBottomWidth: StyleSheet.hairlineWidth + }, + floatView: { + flexDirection: 'row', + width: '100%', + alignItems: 'center' + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/Paypal/Paypal.js b/CustomerApp/src/screens/Paypal/Paypal.js new file mode 100644 index 0000000..421a1e7 --- /dev/null +++ b/CustomerApp/src/screens/Paypal/Paypal.js @@ -0,0 +1,73 @@ +import React, { useState, useLayoutEffect } from 'react' +import { WebView } from 'react-native-webview' +import gql from 'graphql-tag' +import { myOrders } from '../../apollo/server' +import getEnvVars from '../../../environment' +import { useApolloClient } from '@apollo/react-hooks' +import { useNavigation, useRoute } from '@react-navigation/native' +import { ActivityIndicator } from 'react-native' +import { WrapperView } from '../../components' + +const { SERVER_URL } = getEnvVars() + +const MYORDERS = gql` + ${myOrders} +` + +function Paypal() { + const [loading, loadingSetter] = useState(true) + const navigation = useNavigation() + const route = useRoute() + const client = useApolloClient() + const [_id] = useState(route.params._id ?? null) + + useLayoutEffect(() => { + navigation.setOptions({ + headerRight: null, + title: 'Paypal Checkout' + }) + }, [navigation]) + + async function handleResponse(data) { + if (data.title === 'success') { + const result = await client.query({ + query: MYORDERS, + fetchPolicy: 'network-only' + }) + const order = result.data.orders.find(order => order.order_id === _id) + navigation.reset({ + routes: [ + { name: 'Menu' }, + { + name: 'OrderDetail', + params: { _id: order._id, clearCart: true } + } + ] + }) + } else if (data.title === 'cancel') { + navigation.goBack() + // goBack on Payment Screen + } + } + + return ( + + { + handleResponse(data) + }} + onLoad={() => { + loadingSetter(false) + }} + /> + {loading ? ( + + ) : null} + + ) +} + +export default Paypal diff --git a/CustomerApp/src/screens/Profile/ChangePassword.js b/CustomerApp/src/screens/Profile/ChangePassword.js new file mode 100644 index 0000000..8e94dce --- /dev/null +++ b/CustomerApp/src/screens/Profile/ChangePassword.js @@ -0,0 +1,148 @@ +import { useMutation } from '@apollo/react-hooks' +import { useTheme } from '@react-navigation/native' +import gql from 'graphql-tag' +import PropTypes from 'prop-types' +import React, { useState } from 'react' +import { Alert, TouchableOpacity, View } from 'react-native' +import { TextField } from 'react-native-material-textfield' +import Modal from 'react-native-modal' +import i18n from '../../../i18n' +import { changePassword } from '../../apollo/server' +import { FlashMessage } from '../../components/FlashMessage/FlashMessage' +import TextDefault from '../../components/Text/TextDefault/TextDefault' +import { alignment } from '../../utils/alignment' +import { scale } from '../../utils/scaling' +import useStyle from './styles' + +const CHANGE_PASSWORD = gql` + ${changePassword} +` + +function ChangePassword(props) { + const styles = useStyle() + const { colors } = useTheme() + const [oldPassword, setOldPassword] = useState('') + const [newPassword, setNewPassword] = useState('') + const [oldPasswordError, setOldPasswordError] = useState('') + const [newPasswordError, setNewPasswordError] = useState('') + + const [mutate, { loading }] = useMutation(CHANGE_PASSWORD, { + onError, + onCompleted + }) + + function onError(error) { + if (error.networkError) { + FlashMessage({ + message: error.networkError.result.errors[0].message + }) + } else if (error.graphQLErrors) { + FlashMessage({ + message: error.graphQLErrors[0].message + }) + } + } + function clearFields() { + setOldPassword('') + setNewPassword('') + setOldPasswordError('') + setNewPasswordError('') + } + + function onCompleted(data) { + if (data.changePassword) { + clearFields() + FlashMessage({ + message: 'Password Updated' + }) + props.hideModal() + } else { + Alert.alert('Error', 'Invalid password') + } + } + + return ( + + + + + + Change password + + + + + { + setOldPasswordError(!oldPassword ? 'Password is required' : '') + }} + /> + + + { + setNewPasswordError(!newPassword ? 'Password is required' : '') + }} + /> + + + { + const newPasswordError = + newPassword === '' ? 'Password is required' : '' + const oldPasswordError = + oldPassword === '' ? 'Password is required' : '' + setNewPasswordError(newPasswordError) + setOldPasswordError(oldPasswordError) + + if ( + oldPasswordError.length === 0 && + newPasswordError.length === 0 + ) { + mutate({ variables: { oldPassword, newPassword } }) + } + }} + style={[styles.btnContainer]}> + + {i18n.t('apply')} + + + + + + ) +} + +ChangePassword.propTypes = { + hideModal: PropTypes.func, + modalVisible: PropTypes.bool.isRequired +} +export default ChangePassword diff --git a/CustomerApp/src/screens/Profile/Profile.js b/CustomerApp/src/screens/Profile/Profile.js new file mode 100644 index 0000000..55d4925 --- /dev/null +++ b/CustomerApp/src/screens/Profile/Profile.js @@ -0,0 +1,388 @@ +import { useMutation } from '@apollo/react-hooks' +import { MaterialCommunityIcons } from '@expo/vector-icons' +import { useNavigation, useRoute, useTheme } from '@react-navigation/native' +import gql from 'graphql-tag' +import React, { + useContext, + useEffect, + useLayoutEffect, + useRef, + useState +} from 'react' +import { + KeyboardAvoidingView, + Platform, + ScrollView, + TouchableOpacity, + View +} from 'react-native' +import { TextField } from 'react-native-material-textfield' +import i18n from '../../../i18n' +import { updateUser } from '../../apollo/server' +import { + FlashMessage, + RightButton, + TextDefault, + WrapperView +} from '../../components' +import UserContext from '../../context/User' +import { alignment } from '../../utils/alignment' +import { ICONS_NAME } from '../../utils/constant' +import { moderateScale, scale } from '../../utils/scaling' +import { textStyles } from '../../utils/textStyles' +import ChangePassword from './ChangePassword' +import useStyle from './styles' + +const UPDATEUSER = gql` + ${updateUser} +` + +function Profile() { + const refName = useRef() + const route = useRoute() + const styles = useStyle() + const refPhone = useRef(null) + const { colors } = useTheme() + const navigation = useNavigation() + + const [nameError, setNameError] = useState('') + const [phoneError, setPhoneError] = useState('') + const [toggleView, setToggleView] = useState(true) + const [modelVisible, setModalVisible] = useState(false) + + const { profile } = useContext(UserContext) + const backScreen = route.params ? route.params.backScreen : null + + const [mutate, { loading: loadingMutation }] = useMutation(UPDATEUSER, { + onCompleted, + onError + }) + + useLayoutEffect(() => { + navigation.setOptions({ + title: 'Profile', + headerRight: () => ( + + ) + }) + }, [navigation, toggleView]) + + useEffect(() => { + if (backScreen) { + viewHideAndShow() + setPhoneError('Phone number is required') + FlashMessage({ + message: 'Phone Number is missing' + }) + } + }, [backScreen]) + + function viewHideAndShow() { + setToggleView(prev => !prev) + } + + function onCompleted({ updateUser }) { + if (updateUser) { + FlashMessage({ + message: "User's Info Updated" + }) + if (backScreen) { + navigation.goBack() + } + } + } + + function validateInfo() { + // clear errors + setNameError('') + setPhoneError('') + + const name = refName.current.value() + const phone = refPhone.current.value() + + if (name === profile.name && phone === profile.phone && phone.length > 0) { + return + } + let res = true + if (!name.trim()) { + refName.current.focus() + setNameError('Name is required') + res = false + } + const num = phone.trim().replace('.', '') + if (num.length < 11 || num.length > 15 || isNaN(num)) { + setPhoneError('Minimum 11 and maximum 15 characters allowed') + if (res) { + refPhone.current.focus() + } + res = false + } + return res + } + + function onError(error) { + try { + if (error.graphQLErrors) { + FlashMessage({ + message: error.graphQLErrors[0].message + }) + } else if (error.networkError) { + FlashMessage({ + message: error.networkError.result.errors[0].message + }) + } + } catch (err) {} + } + + function changePasswordTab() { + return ( + + + + + + + setModalVisible(true)} + style={styles.changePassword}> + Change Password + + + + ) + } + + return ( + + { + setModalVisible(false) + }} + /> + + + + + + + + {profile.name.substr(0, 1).toUpperCase()} + + + + {toggleView ? ( + changePasswordTab() + ) : ( + + + + + + + + + + + { + if (validateInfo()) { + mutate({ + variables: { + name: refName.current.value(), + phone: refPhone.current.value() + } + }) + } + }}> + + {i18n.t('saveBtn')} + + + + + {'Cancel'} + + + + )} + + + All rights are reserved by Enatega + + + + + + ) +} + +export default Profile diff --git a/CustomerApp/src/screens/Profile/styles.js b/CustomerApp/src/screens/Profile/styles.js new file mode 100644 index 0000000..f887770 --- /dev/null +++ b/CustomerApp/src/screens/Profile/styles.js @@ -0,0 +1,111 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale, verticalScale } from '../../utils/scaling' + +const useStyle = () => { + const { dark, colors } = useTheme() + + return StyleSheet.create({ + flex: { + flex: 1 + }, + formContainer: { + flex: 1, + width: '100%', + height: '100%' + }, + containerInfo: { + width: '100%', + marginTop: moderateScale(60), + ...alignment.PLsmall, + ...alignment.PLlarge + }, + changePassword: { + alignItems: 'center', + flexDirection: 'row', + width: '100%', + backgroundColor: colors.background, + alignSelf: 'center', + justifyContent: 'space-between', + shadowOffset: { width: 2, height: 2 }, + shadowColor: colors.shadowColor, + shadowOpacity: 0.1, + shadowRadius: 12, + borderWidth: dark ? 2 : 0, + borderRadius: moderateScale(10), + elevation: 2, + paddingHorizontal: scale(10), + height: moderateScale(55), + marginTop: moderateScale(20) + }, + formSubContainer: { + marginTop: moderateScale(100), + alignItems: 'center', + width: '85%', + backgroundColor: colors.background, + alignSelf: 'center', + shadowOffset: { width: 2, height: 2 }, + shadowColor: colors.shadowColor, + shadowOpacity: 0.2, + shadowRadius: 12, + borderRadius: moderateScale(20), + elevation: 2, + height: moderateScale(450), + borderWidth: dark ? 2 : 0, + borderColor: colors.shadowColor, + ...alignment.MBlarge, + ...alignment.PRlarge, + ...alignment.Psmall + }, + + saveContainer: { + marginTop: scale(40), + width: '90%', + height: scale(40), + backgroundColor: colors.blueColor, + justifyContent: 'center', + alignItems: 'center', + alignSelf: 'center', + borderRadius: moderateScale(14) + }, + // Model for password changing + modalContainer: { + backgroundColor: colors.cardContainer, + borderRadius: verticalScale(8), + justifyContent: 'center', + alignItems: 'center', + ...alignment.PTmedium, + ...alignment.PBsmall + }, + modalContent: { + width: '90%' + }, + titleContainer: { + width: '100%', + justifyContent: 'flex-start', + alignItems: 'flex-start' + }, + btnContainer: { + width: '30%', + justifyContent: 'center', + borderRadius: moderateScale(10), + height: verticalScale(40), + backgroundColor: colors.blueColor, + alignItems: 'center', + alignSelf: 'flex-end', + ...alignment.MTsmall, + ...alignment.PxSmall + }, + imgContainer: { + width: scale(90), + height: scale(90), + justifyContent: 'center', + marginBottom: moderateScale(10), + alignItems: 'center', + borderRadius: 10, + backgroundColor: colors.fontSecondColor + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/RateAndReview/RateAndReview.js b/CustomerApp/src/screens/RateAndReview/RateAndReview.js new file mode 100755 index 0000000..14a6b67 --- /dev/null +++ b/CustomerApp/src/screens/RateAndReview/RateAndReview.js @@ -0,0 +1,137 @@ +import { useMutation } from '@apollo/react-hooks' +import { EvilIcons } from '@expo/vector-icons' +import { useNavigation, useRoute, useTheme } from '@react-navigation/native' +import gql from 'graphql-tag' +import React, { useLayoutEffect, useState } from 'react' +import { TextInput, TouchableOpacity, View } from 'react-native' +import { useSafeAreaInsets } from 'react-native-safe-area-context' +import StarRating from 'react-native-star-rating' +import i18n from '../../../i18n' +import { reviewOrder } from '../../apollo/server' +import { FlashMessage } from '../../components/FlashMessage/FlashMessage' +import Spinner from '../../components/Spinner/Spinner' +import TextDefault from '../../components/Text/TextDefault/TextDefault' +import { scale } from '../../utils/scaling' +import useStyle from './styles' + +// constants +const REVIEWORDER = gql` + ${reviewOrder} +` + +function RateAndReview() { + const route = useRoute() + const styles = useStyle() + const { colors } = useTheme() + const navigation = useNavigation() + const [id] = useState(route.params._id ?? null) + const [rating, setRating] = useState(0) + const [description, setDescription] = useState('') + const inset = useSafeAreaInsets() + + const [mutate, { loading: loadingMutation }] = useMutation(REVIEWORDER, { + onError, + onCompleted + }) + useLayoutEffect(() => { + navigation.setOptions({ + headerTitle: i18n.t('rateAndReview'), + headerRight: null + }) + }, [navigation]) + + function onFinishRating(rating) { + setRating(rating) + } + + function onChangeText(description) { + setDescription(description) + } + + function onSubmit() { + mutate({ + variables: { + orderId: id, + rating: rating, + description: description + } + }) + } + + function onCompleted(data) { + navigation.pop(2) + } + + function onError(error) { + FlashMessage({ + message: error.networkError.result.errors[0].message + }) + } + + return ( + <> + + + + + + {i18n.t('writeAReview')} + + + + + + + + + + + + + + + + + + + + {loadingMutation && } + {!loadingMutation && ( + + + {i18n.t('submit')} + + + )} + + + + + + ) +} +export default RateAndReview diff --git a/CustomerApp/src/screens/RateAndReview/styles.js b/CustomerApp/src/screens/RateAndReview/styles.js new file mode 100755 index 0000000..9707c17 --- /dev/null +++ b/CustomerApp/src/screens/RateAndReview/styles.js @@ -0,0 +1,79 @@ +import { useTheme } from '@react-navigation/native' +import { Dimensions, StyleSheet } from 'react-native' +import { verticalScale } from '../../utils/scaling' +import { textStyles } from '../../utils/textStyles' +const { height } = Dimensions.get('window') + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + reviewTextContainer: { + width: '100%', + height: height * 0.1, + alignItems: 'flex-end' + }, + reviewTextSubContainer: { + width: '100%', + height: '100%', + flexDirection: 'row' + }, + reviewTextContainerText: { + width: '40%', + height: '100%', + justifyContent: 'center', + alignItems: 'flex-end' + }, + reviewTextContainerImage: { + width: '50%', + height: '100%', + justifyContent: 'center' + }, + ratingContainer: { + width: '100%', + height: height * 0.1, + justifyContent: 'center', + alignItems: 'center' + }, + ratingSubContainer: { + width: '70%', + height: '60%' + }, + inputContainer: { + width: '100%', + height: height * 0.1, + justifyContent: 'center', + alignItems: 'center' + }, + inputSubContainer: { + width: '80%', + height: '40%', + borderBottomColor: colors.horizontalLine, + borderBottomWidth: verticalScale(1) + }, + textinput: { + height: '100%', + ...textStyles.Bold, + ...textStyles.Normal + }, + btnContainer: { + width: '100%', + height: height * 0.1, + justifyContent: 'center', + alignItems: 'center' + }, + btnSubContainer: { + width: '80%', + height: '60%' + }, + btnTouch: { + flex: 1, + backgroundColor: colors.buttonBackground, + justifyContent: 'center', + alignItems: 'center' + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/Register/Register.js b/CustomerApp/src/screens/Register/Register.js new file mode 100755 index 0000000..ca635a4 --- /dev/null +++ b/CustomerApp/src/screens/Register/Register.js @@ -0,0 +1,324 @@ +import { useMutation } from '@apollo/react-hooks' +import { useNavigation, useTheme } from '@react-navigation/native' +import * as Device from 'expo-device' +import * as Localization from 'expo-localization' +import * as Notifications from 'expo-notifications' +import gql from 'graphql-tag' +import React, { useContext, useState } from 'react' +import { + KeyboardAvoidingView, + Platform, + ScrollView, + TouchableOpacity, + View +} from 'react-native' +import { FilledTextField } from 'react-native-material-textfield' +import { useSafeAreaInsets } from 'react-native-safe-area-context' +import { createUser } from '../../apollo/server' +import { + CustomIcon, + EnategaImage, + FlashMessage, + Spinner, + TextDefault, + WrapperView +} from '../../components' +import UserContext from '../../context/User' +import { alignment } from '../../utils/alignment' +import Analytics from '../../utils/analytics' +import { ICONS_NAME, NAVIGATION_SCREEN } from '../../utils/constant' +// eslint-disable-next-line camelcase +import country_codes from '../../utils/country_codes' +import { scale, verticalScale } from '../../utils/scaling' +import useStyle from './styles' + +const CREATEUSER = gql` + ${createUser} +` + +const Logo = require('../../../assets/logo.png') + +function Register() { + const styles = useStyle() + const { colors } = useTheme() + const navigation = useNavigation() + const inset = useSafeAreaInsets() + const [email, setEmail] = useState('') + const [phone, setPhone] = useState('') + const [lastname, setLastname] = useState('') + const [password, setPassword] = useState('') + const [firstname, setFirstname] = useState('') + const [loading, setLoading] = useState(false) + const [emailError, setEmailError] = useState(null) + const [phoneError, setPhoneError] = useState(null) + const [lastnameError, setLastnameError] = useState(null) + const [passwordError, setPasswordError] = useState(null) + const [firstnameError, setFirstnameError] = useState(null) + + const { setTokenAsync } = useContext(UserContext) + + const [mutate] = useMutation(CREATEUSER, { onCompleted, onError }) + + function validateCredentials() { + let result = true + + setEmailError(null) + setPasswordError(null) + setPhoneError(null) + setFirstnameError(null) + setLastnameError(null) + + const emailRegex = /^\w+([\\.-]?\w+)*@\w+([\\.-]?\w+)*(\.\w{2,3})+$/ + if (!emailRegex.test(email.trim())) { + setEmailError('Provide a valid email address') + result = false + } + if (!password) { + setPasswordError('Password is required') + result = false + } + const phoneRegex = /^\d{11,15}$/ + if (!phoneRegex.test(phone)) { + setPhoneError('Provide a valid phone number') + result = false + } + const nameRegex = /^[A-Za-z]{1,15}$/ + if (!nameRegex.test(firstname)) { + setFirstnameError('First name is required') + result = false + } + if (!nameRegex.test(lastname)) { + setLastnameError('Last name is required') + result = false + } + return result + } + + async function onCompleted(data) { + try { + const trackingOpts = { + id: data.createUser.userId, + usernameOrEmail: data.createUser.email + } + Analytics.identify(data.createUser.userId, trackingOpts) + Analytics.track(Analytics.events.USER_CREATED_ACCOUNT, trackingOpts) + setTokenAsync(data.createUser.token) + navigation.navigate(NAVIGATION_SCREEN.Menu) + } catch (e) { + console.log(e) + } finally { + setLoading(false) + } + } + + function onError(error) { + try { + FlashMessage({ + message: error.graphQLErrors[0].message + }) + } catch (e) { + console.log(e) + } finally { + setLoading(false) + } + } + + async function mutateLogin(user) { + setLoading(true) + let notificationToken = null + const { status: existingStatus } = await Notifications.getPermissionsAsync() + if (existingStatus === 'granted' && Device.isDevice) { + notificationToken = (await Notifications.getExpoPushTokenAsync()).data + } + mutate({ variables: { ...user, notificationToken } }) + } + + function renderJoinAction() { + if (loading) return + return ( + { + if (validateCredentials()) { + const user = { + phone: phone.trim(), + email: email.toLowerCase().trim(), + password: password, + name: firstname + ' ' + lastname, + picture: '' + } + mutateLogin(user) + } + }}> + Signup + + ) + } + + function updateCountryCode() { + const timezone = country_codes.find( + value => + value.timezone.toLowerCase() === Localization.timezone.toLowerCase() + ) + if (!phone) { + setPhone(timezone.country_code) + } + } + + return ( + + + + + + navigation.goBack()} + style={[styles.backBtnWidth, styles.backBtn]}> + + + + Signup + + + + + + + + + { + setFirstname(text.trim()) + }} + maxLength={15} + /> + { + setLastname(text.trim()) + }} + maxLength={15} + /> + { + setEmail(text.toLowerCase().trim()) + }} + /> + { + setPhone(text.trim()) + }} + /> + { + setPassword(text.trim()) + }} + /> + {renderJoinAction()} + + navigation.navigate(NAVIGATION_SCREEN.ForgotPassword) + }> + + Forgot password? + + + + + + + + + ) +} + +export default Register diff --git a/CustomerApp/src/screens/Register/styles.js b/CustomerApp/src/screens/Register/styles.js new file mode 100644 index 0000000..9d53b9e --- /dev/null +++ b/CustomerApp/src/screens/Register/styles.js @@ -0,0 +1,86 @@ +import { useTheme } from '@react-navigation/native' +import { Dimensions, StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale, verticalScale } from '../../utils/scaling' +import { textStyles } from '../../utils/textStyles' +const { height } = Dimensions.get('window') + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1 + }, + width100: { + width: '100%' + }, + mainContainer: { + flex: 1, + alignItems: 'center' + }, + upperContainer: { + marginTop: verticalScale(60) + }, + subContainer: { + flex: 1, + width: '80%', + alignItems: 'center', + ...alignment.PBmedium + }, + imgResponsive: { + width: scale(135), + height: scale(125) + }, + loadingView: { + backgroundColor: colors.background, + width: '100%', + height: '100%' + }, + marginTop5: { + ...alignment.MTsmall + }, + alignItemCenter: { + alignItems: 'center' + }, + joinBtn: { + width: '100%', + height: height * 0.06, + backgroundColor: colors.buttonBackground, + justifyContent: 'center', + alignItems: 'center', + borderRadius: moderateScale(20) + }, + textContainer: { + borderRadius: 20, + borderTopLeftRadius: 20, + borderTopRightRadius: 20, + backgroundColor: colors.buttonBackgroundLight, + overflow: 'hidden' + }, + labelStyle: { + ...textStyles.Medium, + marginTop: 3, + paddingLeft: 5, + paddingTop: scale(1) + }, + headerContainer: { + paddingHorizontal: moderateScale(20), + flexDirection: 'row', + width: '100%', + alignItems: 'center', + justifyContent: 'space-between' + }, + backBtnWidth: { + width: scale(40), + aspectRatio: 1 + }, + backBtn: { + backgroundColor: colors.white, + borderRadius: scale(13), + justifyContent: 'center', + alignItems: 'center' + } + }) +} + +export default useStyle diff --git a/CustomerApp/src/screens/Settings/Settings.js b/CustomerApp/src/screens/Settings/Settings.js new file mode 100644 index 0000000..73a5b78 --- /dev/null +++ b/CustomerApp/src/screens/Settings/Settings.js @@ -0,0 +1,328 @@ +import { useMutation } from "@apollo/react-hooks"; +import AsyncStorage from "@react-native-async-storage/async-storage"; +import { useNavigation, useTheme } from "@react-navigation/native"; +import Constants from "expo-constants"; +import * as Device from "expo-device"; +import * as Localization from "expo-localization"; +import * as Notifications from "expo-notifications"; +import * as Updates from "expo-updates"; +import gql from "graphql-tag"; +import React, { useContext, useEffect, useRef, useState } from "react"; +import { + AppState, + Linking, + Platform, + StyleSheet, + TouchableOpacity, + View, +} from "react-native"; +import { Modalize } from "react-native-modalize"; +import i18n from "../../../i18n"; +import { + profile, + pushToken, + updateNotificationStatus, +} from "../../apollo/server"; +import { + CustomIcon, + FlashMessage, + Spinner, + TextDefault, + WrapperView, +} from "../../components"; +import SwitchBtn from "../../components/FdSwitch/SwitchBtn"; +import UserContext from "../../context/User"; +import { alignment } from "../../utils/alignment"; +import { ICONS_NAME } from "../../utils/constant"; +import { scale } from "../../utils/scaling"; +import SettingModal from "./components/SettingModal"; +import useStyle from "./styles"; + +const languageTypes = [ + { value: "English", code: "en", index: 0 }, + { value: "français", code: "fr", index: 1 }, + { value: "ភាសាខ្មែរ", code: "km", index: 2 }, + { value: "中文", code: "zh", index: 3 }, + { value: "Deutsche", code: "de", index: 4 }, +]; + +const PUSH_TOKEN = gql` + ${pushToken} +`; +const UPDATE_NOTIFICATION_TOKEN = gql` + ${updateNotificationStatus} +`; +const PROFILE = gql` + ${profile} +`; + +function Settings() { + const styles = useStyle(); + const { colors } = useTheme(); + const navigation = useNavigation(); + const { profile } = useContext(UserContext); + + const [languageName, languageNameSetter] = useState("English"); + const [offerNotification, offerNotificationSetter] = useState( + profile.is_offer_notification + ); + const [orderNotification, orderNotificationSetter] = useState( + profile.is_order_notification + ); + const [activeRadio, activeRadioSetter] = useState(languageTypes[0].index); + // eslint-disable-next-line no-unused-vars + const [appState, setAppState] = useState(AppState.currentState); + const [uploadToken] = useMutation(PUSH_TOKEN); + const [mutate, { loading }] = useMutation(UPDATE_NOTIFICATION_TOKEN, { + onCompleted, + onError, + refetchQueries: [{ query: PROFILE }], + }); + const modalizeRef = useRef(null); + + useEffect(() => { + navigation.setOptions({ + headerTitle: i18n.t("titleSettings"), + headerRight: null, + }); + selectLanguage(); + checkPermission(); + }, [navigation]); + + const _handleAppStateChange = async (nextAppState) => { + if (nextAppState === "active") { + let token = null; + const permission = await getPermission(); + if (permission === "granted") { + if (!profile.notificationToken) { + token = (await Notifications.getExpoPushTokenAsync()).data; + uploadToken({ variables: { token } }); + } + offerNotificationSetter(profile.is_offer_notification); + orderNotificationSetter(profile.is_order_notification); + } else { + offerNotificationSetter(false); + orderNotificationSetter(false); + } + } + setAppState(nextAppState); + }; + + useEffect(() => { + AppState.addEventListener("change", _handleAppStateChange); + return () => { + AppState.remove("change", _handleAppStateChange); + }; + }, []); + + async function checkPermission() { + const permission = await getPermission(); + if (permission !== "granted") { + offerNotificationSetter(false); + orderNotificationSetter(false); + } else { + offerNotificationSetter(profile.is_offer_notification); + orderNotificationSetter(profile.is_order_notification); + } + } + + async function getPermission() { + const { status } = await Notifications.getPermissionsAsync(); + return status; + } + + async function selectLanguage() { + const lang = await AsyncStorage.getItem("enatega-language"); + if (lang) { + const defLang = languageTypes.findIndex((el) => el.code === lang); + const langName = languageTypes[defLang].value; + activeRadioSetter(defLang); + languageNameSetter(langName); + } + } + + const onSelectedLanguage = async (active) => { + const languageInd = active; + if (Platform.OS === "android") { + const localization = await Localization.getLocalizationAsync(); + localization.locale = languageTypes[languageInd].code; + await AsyncStorage.setItem( + "enatega-language", + languageTypes[languageInd].code + ); + Updates.reloadAsync(); + } + }; + + const onClose = () => { + modalizeRef.current.close(); + }; + + function onCompleted() { + FlashMessage({ + message: "Notification Status Updated", + }); + } + + function onError(error) { + try { + FlashMessage({ + message: error.networkError.result.errors[0].message, + }); + } catch (err) {} + } + + async function updateNotificationStatus(notificationCheck) { + let orderNotify, offerNotify; + if (!Device.isDevice) { + FlashMessage({ + message: "Notification do not work on simulator", + }); + return; + } + + const permission = await getPermission(); + if (!profile.notificationToken || permission !== "granted") { + Linking.openSettings(); + } + if (notificationCheck === "offer") { + offerNotificationSetter(!offerNotification); + orderNotify = orderNotification; + offerNotify = !offerNotification; + } + + if (notificationCheck === "order") { + orderNotificationSetter(!orderNotification); + orderNotify = !orderNotification; + offerNotify = offerNotification; + } + mutate({ + variables: { + offerNotification: offerNotify, + orderNotification: orderNotify, + }, + }); + } + + return ( + + {loading && ( + + + + )} + + + {Platform.OS === "android" && ( + + + + + Language + + + ({languageName}) + + + modalizeRef.current.open("top")} + style={styles.button} + > + + + + + )} + { + updateNotificationStatus("offer"); + }} + style={[styles.notificationContainer, styles.shadow]} + > + + + {" "} + Receive Special Offers{" "} + + { + updateNotificationStatus("offer"); + }} + /> + + + { + updateNotificationStatus("order"); + }} + style={[styles.notificationContainer, styles.shadow]} + > + + + {" "} + Get updates on your order status!{" "} + + { + updateNotificationStatus("order"); + }} + /> + + + + + Version: {Constants.manifest.version} + + + + + + All rights are reserved by Enatega + + + {/* Modal for language Changes */} + + + + + ); +} +export default Settings; diff --git a/CustomerApp/src/screens/Settings/components/SettingModal.js b/CustomerApp/src/screens/Settings/components/SettingModal.js new file mode 100644 index 0000000..a4f9930 --- /dev/null +++ b/CustomerApp/src/screens/Settings/components/SettingModal.js @@ -0,0 +1,75 @@ +import { useTheme } from '@react-navigation/native' +import PropTypes from 'prop-types' +import React, { useState } from 'react' +import { TouchableOpacity, View } from 'react-native' +import RadioButton from '../../../components/FdRadioBtn/RadioBtn' +import TextDefault from '../../../components/Text/TextDefault/TextDefault' +import { alignment } from '../../../utils/alignment' +import useStyle from './styles' + +const languageTypes = [ + { value: 'English', code: 'en', index: 0 }, + { value: 'français', code: 'fr', index: 1 }, + { value: 'ភាសាខ្មែរ', code: 'km', index: 2 }, + { value: '中文', code: 'zh', index: 3 }, + { value: 'Deutsche', code: 'de', index: 4 } +] + +function SettingModal(props) { + const styles = useStyle() + const { colors } = useTheme() + const [activeRadio, activeRadioSetter] = useState(props.activeRadio) + + return ( + + + Select Language + + + {languageTypes.map((item, index) => ( + activeRadioSetter(item.index)} + style={[styles.radioContainer]}> + + {item.value} + + activeRadioSetter(item.index)} + /> + {/* */} + + ))} + {/* */} + + props.onSelectedLanguage(activeRadio)}> + + Done + + + props.onClose()}> + Cancel + + {/* */} + + ) +} + +SettingModal.propTypes = { + activeRadio: PropTypes.number, + onSelectedLanguage: PropTypes.func, + onClose: PropTypes.func +} +export default SettingModal diff --git a/CustomerApp/src/screens/Settings/components/styles.js b/CustomerApp/src/screens/Settings/components/styles.js new file mode 100644 index 0000000..d1bad7c --- /dev/null +++ b/CustomerApp/src/screens/Settings/components/styles.js @@ -0,0 +1,50 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../../utils/alignment' +import { moderateScale } from '../../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + return StyleSheet.create({ + flex: { + flex: 1, + alignItems: 'center' + }, + width100: { + width: '100%' + }, + radioContainer: { + width: '70%', + backgroundColor: '#FFF', + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + ...alignment.PTlarge, + ...alignment.PBsmall + }, + horizontalLine: { + width: '70%', + opacity: 0.3, + borderBottomColor: colors.placeHolderColor, + borderBottomWidth: StyleSheet.hairlineWidth + }, + button: { + justifyContent: 'center', + alignItems: 'center', + backgroundColor: colors.buttonBackgroundBlue, + borderRadius: moderateScale(10), + width: '70%', + padding: moderateScale(15), + ...alignment.MTlarge + }, + modalButtonsContainer: { + flexDirection: 'row', + justifyContent: 'flex-end' + }, + modalButtons: { + ...alignment.Msmall, + marginBottom: 0 + } + }) +} +export default useStyle diff --git a/CustomerApp/src/screens/Settings/styles.js b/CustomerApp/src/screens/Settings/styles.js new file mode 100644 index 0000000..bc7c0bc --- /dev/null +++ b/CustomerApp/src/screens/Settings/styles.js @@ -0,0 +1,106 @@ +import { useTheme } from '@react-navigation/native' +import { StyleSheet } from 'react-native' +import { alignment } from '../../utils/alignment' +import { moderateScale, scale, verticalScale } from '../../utils/scaling' + +const useStyle = () => { + const { colors } = useTheme() + + return StyleSheet.create({ + flex: { + flex: 1 + }, + headingLanguage: { + width: '85%', + justifyContent: 'flex-start', + flexDirection: 'row', + alignItems: 'center' + }, + shadow: { + shadowOffset: { width: scale(2), height: scale(5) }, + shadowColor: colors.lightBackground, + shadowOpacity: 1, + shadowRadius: scale(2), + elevation: 0, + borderWidth: 1, + borderColor: colors.lightBackground + }, + mainContainer: { + ...alignment.PLsmall, + ...alignment.PRsmall + }, + languageContainer: { + width: '100%', + borderRadius: scale(20), + backgroundColor: colors.cardContainer, + ...alignment.PRmedium, + ...alignment.PTmedium, + ...alignment.PBmedium, + ...alignment.PLmedium + }, + changeLanguage: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + borderRadius: scale(10), + width: '100%', + height: verticalScale(18) + }, + button: { + width: '15%', + height: '100%', + alignItems: 'center', + justifyContent: 'center' + }, + notificationContainer: { + width: '100%', + backgroundColor: colors.cardContainer, + flexDirection: 'row', + justifyContent: 'space-between', + borderRadius: moderateScale(20), + ...alignment.PTmedium, + ...alignment.PBmedium, + ...alignment.PRmedium, + ...alignment.PLmedium, + ...alignment.MTmedium + }, + notificationChekboxContainer: { + flexDirection: 'row', + flex: 1, + justifyContent: 'space-between', + alignItems: 'center', + ...alignment.MRsmall + }, + versionContainer: { + width: '100%', + alignItems: 'center', + justifyContent: 'center', + backgroundColor: 'transparent', + ...alignment.MTlarge + }, + modalContainer: { + width: '100%', + backgroundColor: 'white', + borderRadius: verticalScale(4), + ...alignment.Plarge + }, + radioContainer: { + width: '100%', + backgroundColor: '#FFF', + flexDirection: 'row', + alignItems: 'center', + ...alignment.PTxSmall, + ...alignment.PBxSmall + }, + modalButtonsContainer: { + flexDirection: 'row', + justifyContent: 'flex-end' + }, + modalButtons: { + ...alignment.Msmall, + marginBottom: 0 + } + }) +} + +export default useStyle diff --git a/CustomerApp/src/screens/Stripe/StripeCheckout.js b/CustomerApp/src/screens/Stripe/StripeCheckout.js new file mode 100644 index 0000000..b4b01ba --- /dev/null +++ b/CustomerApp/src/screens/Stripe/StripeCheckout.js @@ -0,0 +1,134 @@ +import React, { useLayoutEffect, useState } from 'react' +import { ActivityIndicator, Platform } from 'react-native' +import { WebView } from 'react-native-webview' +import { myOrders } from '../../apollo/server' +import gql from 'graphql-tag' +import { stripeCurrencies } from '../../utils/currencies' +import getEnvVars from '../../../environment' +import { useApolloClient } from '@apollo/react-hooks' +import { useNavigation, useRoute } from '@react-navigation/native' +import { WrapperView } from '../../components' + +const { SERVER_URL, STRIPE_PUBLIC_KEY, STRIPE_IMAGE_URL, STRIPE_STORE_NAME } = + getEnvVars() +const MYORDERS = gql` + ${myOrders} +` + +function StripeCheckout() { + const [loading, loadingSetter] = useState(true) + const navigation = useNavigation() + const route = useRoute() + const client = useApolloClient() + const { _id, currency, email: prepopulatedEmail } = route.params + const multiplier = stripeCurrencies.find( + ({ currency: curr }) => curr === currency + ).multiplier + const amount = route.params.amount * multiplier + const description = 'Food delivery' // find alternative to this + const allowRememberMe = false + + useLayoutEffect(() => { + navigation.setOptions({ + headerRight: null, + title: 'Stripe Checkout' + }) + }, [navigation]) + + function onClose(flag) { + // showMessage here + navigation.goBack() + } + + async function onPaymentSuccess() { + const result = await client.query({ + query: MYORDERS, + fetchPolicy: 'network-only' + }) + const order = result.data.orders.find(order => order.order_id === _id) + navigation.reset({ + routes: [ + { name: 'Menu' }, + { + name: 'OrderDetail', + params: { _id: order._id, clearCart: true } + } + ] + }) + } + + return ( + + { + loadingSetter(false) + }} + source={{ + html: ` +`, + baseUrl: Platform.OS === 'android' ? '' : `${SERVER_URL}` + }} + scalesPageToFit={Platform.OS === 'android'} + onNavigationStateChange={data => { + if (data.title === 'cancel') onClose(true) + if (data.title === 'failed') onClose(false) + if (data.title === 'success') onPaymentSuccess() + }} + /> + {loading ? ( + + ) : null} + + ) +} + +export default StripeCheckout diff --git a/CustomerApp/src/screens/index.js b/CustomerApp/src/screens/index.js new file mode 100644 index 0000000..130c191 --- /dev/null +++ b/CustomerApp/src/screens/index.js @@ -0,0 +1,53 @@ +import Addresses from './Addresses/Addresses' +import AnimatedSplash from './AnimatedSplash/AnimatedSplash' +import Cart from './Cart/Cart' +import CartAddress from './CartAddress/CartAddress' +import Chat from './Chat/Chat' +import SelectVoucher from './Coupon/Coupon' +import CreateAccount from './CreateAccount/CreateAccount' +import EditAddress from './EditAddress/EditAddress' +import ForgotPassword from './ForgotPassword/ForgotPassword' +import FullMap from './FullMap/FullMap' +import Help from './Help/Help' +import HelpBrowser from './HelpBrowser/HelpBrowser' +import ItemDetail from './ItemDetail/ItemDetail' +import Login from './Login/Login' +import Menu from './Menu/Menu' +import MenuItems from './MenuItems/MenuItems' +import MyOrders from './MyOrders/MyOrders' +import NewAddress from './NewAddress/NewAddress' +import OrderDetail from './OrderDetail/OrderDetail' +import Paypal from './Paypal/Paypal' +import Profile from './Profile/Profile' +import RateAndReview from './RateAndReview/RateAndReview' +import Register from './Register/Register' +import Settings from './Settings/Settings' +import StripeCheckout from './Stripe/StripeCheckout' + +export { + AnimatedSplash, + Addresses, + Menu, + Cart, + CartAddress, + Chat, + SelectVoucher, + CreateAccount, + EditAddress, + ForgotPassword, + FullMap, + Help, + HelpBrowser, + ItemDetail, + Login, + MenuItems, + MyOrders, + NewAddress, + OrderDetail, + Paypal, + Profile, + RateAndReview, + Register, + Settings, + StripeCheckout +} diff --git a/CustomerApp/src/utils/alignment.js b/CustomerApp/src/utils/alignment.js new file mode 100644 index 0000000..1c2b7a5 --- /dev/null +++ b/CustomerApp/src/utils/alignment.js @@ -0,0 +1,135 @@ +import { scale } from './scaling' + +const XSMALL = 5 +const SMALL = 10 +const MEDIUM = 15 +const LARGE = 20 +export const alignment = { + MxSmall: { + margin: scale(XSMALL) + }, + MBxSmall: { + marginBottom: scale(XSMALL) + }, + MTxSmall: { + marginTop: scale(XSMALL) + }, + MRxSmall: { + marginRight: scale(XSMALL) + }, + MLxSmall: { + marginLeft: scale(XSMALL) + }, + + Msmall: { + margin: scale(SMALL) + }, + MBsmall: { + marginBottom: scale(SMALL) + }, + MTsmall: { + marginTop: scale(SMALL) + }, + MRsmall: { + marginRight: scale(SMALL) + }, + MLsmall: { + marginLeft: scale(SMALL) + }, + + Mmedium: { + margin: scale(MEDIUM) + }, + MBmedium: { + marginBottom: scale(MEDIUM) + }, + MTmedium: { + marginTop: scale(MEDIUM) + }, + MRmedium: { + marginRight: scale(MEDIUM) + }, + MLmedium: { + marginLeft: scale(MEDIUM) + }, + Mlarge: { + margin: scale(LARGE) + }, + MBlarge: { + marginBottom: scale(LARGE) + }, + MTlarge: { + marginTop: scale(LARGE) + }, + MRlarge: { + marginRight: scale(LARGE) + }, + MLlarge: { + marginLeft: scale(LARGE) + }, + + // Padding + PxSmall: { + padding: scale(XSMALL) + }, + PBxSmall: { + paddingBottom: scale(XSMALL) + }, + PTxSmall: { + paddingTop: scale(XSMALL) + }, + PRxSmall: { + paddingRight: scale(XSMALL) + }, + PLxSmall: { + paddingLeft: scale(XSMALL) + }, + + Psmall: { + padding: scale(SMALL) + }, + PBsmall: { + paddingBottom: scale(SMALL) + }, + PTsmall: { + paddingTop: scale(SMALL) + }, + PRsmall: { + paddingRight: scale(SMALL) + }, + PLsmall: { + paddingLeft: scale(SMALL) + }, + + Pmedium: { + padding: scale(MEDIUM) + }, + PBmedium: { + paddingBottom: scale(MEDIUM) + }, + PTmedium: { + paddingTop: scale(MEDIUM) + }, + PRmedium: { + paddingRight: scale(MEDIUM) + }, + PLmedium: { + paddingLeft: scale(MEDIUM) + }, + + Plarge: { + padding: scale(LARGE) + }, + PBlarge: { + paddingBottom: scale(LARGE) + }, + PTlarge: { + paddingTop: scale(LARGE) + }, + PRlarge: { + paddingRight: scale(LARGE) + }, + PLlarge: { + paddingLeft: scale(LARGE) + } +} diff --git a/CustomerApp/src/utils/analytics.js b/CustomerApp/src/utils/analytics.js new file mode 100644 index 0000000..286c9ec --- /dev/null +++ b/CustomerApp/src/utils/analytics.js @@ -0,0 +1,66 @@ +import * as Amplitude from "@amplitude/analytics-react-native"; +import { normalizeTrackingOptions } from "./analyticsUtils"; +import getEnvVars from "../../environment"; +import { getTrackingPermissions } from "./useAppTrackingTransparency"; +const { AMPLITUDE_API_KEY } = getEnvVars(); + +let isInitialized = false; + +export const events = { + USER_LOGGED_IN: "USER_LOGGED_IN", + USER_LOGGED_OUT: "USER_LOGGED_OUT", + USER_CREATED_ACCOUNT: "USER_CREATED_ACCOUNT", + // USER_RESET_PASSWORD: 'USER_RESET_PASSWORD', + // USER_LINKED_SOCIAL: 'USER_LINKED_SOCIAL', + // USER_UPDATED_EMAIL: 'USER_UPDATED_EMAIL', + // USER_UPDATED_PROFILE: 'USER_UPDATED_PROFILE', + // USER_UPDATED_LINKS: 'USER_UPDATED_SOCIAL_LINKS', + // USER_UPDATED_LIKE: 'USER_UPDATED_LIKE', + // USER_UPDATED_PRIVACY: 'USER_UPDATED_PRIVACY', + // USER_REMOVED_PROJECT: 'USER_REMOVED_PROJECT', + // USER_OPENED_CREATION: 'USER_OPENED_CREATION', + // USER_UPDATED_SETTINGS: 'USER_UPDATED_SETTINGS', + USER_PLACED_ORDER: "USER_PLACED_ORDER", +}; + +export async function initialize() { + const trackingStatus = await getTrackingPermissions(); + if (isInitialized || !AMPLITUDE_API_KEY || trackingStatus !== "granted") { + return; + } + Amplitude.init(AMPLITUDE_API_KEY); + isInitialized = true; +} + +export async function identify(id, options) { + initialize(); + const properties = normalizeTrackingOptions(options); + + if (properties) { + Amplitude.Identify(properties); + //await Amplitude.setUserPropertiesAsync(properties) + } else { + //await Amplitude.clearUserPropertiesAsync() + const identifyObj = new Amplitude.Identify(); + identifyObj.remove(properties); + Amplitude.Identify(identifyObj); + } +} + +export async function track(event, options) { + initialize(); + const properties = normalizeTrackingOptions(options); + + if (properties) { + Amplitude.track(event, properties); + } else { + Amplitude.track(event); + } +} + +export default { + events, + initialize, + identify, + track, +}; diff --git a/CustomerApp/src/utils/analyticsUtils.js b/CustomerApp/src/utils/analyticsUtils.js new file mode 100644 index 0000000..ca7135a --- /dev/null +++ b/CustomerApp/src/utils/analyticsUtils.js @@ -0,0 +1,17 @@ +export function normalizeTrackingOptions(options) { + if (!options) { + return null + } + + const { usernameOrEmail, ...rest } = options + + if (usernameOrEmail) { + if (usernameOrEmail.includes('@')) { + rest.email = usernameOrEmail + } else { + rest.username = usernameOrEmail + } + } + + return rest +} diff --git a/CustomerApp/src/utils/androidBackButton.js b/CustomerApp/src/utils/androidBackButton.js new file mode 100644 index 0000000..d5e347b --- /dev/null +++ b/CustomerApp/src/utils/androidBackButton.js @@ -0,0 +1,35 @@ +// packages +import { BackHandler, Alert } from "react-native"; +/** + * Attaches an event listener that handles the android-only hardware + * back button + * @param {Function} callback The function to call on click + */ +const handleAndroidBackButton = (callback) => { + BackHandler.addEventListener("hardwareBackPress", () => { + callback(); + return true; + }); +}; +/** + * Removes the event listener in order not to add a new one + * every time the view component re-mounts + */ +const removeAndroidBackButtonHandler = () => { + // BackHandler.removeEventListener('hardwareBackPress') + BackHandler.remove("hardwareBackPress"); +}; +const exitAlert = () => { + Alert.alert("Confirm exit", "Do you want to quit the app?", [ + { text: "CANCEL", style: "cancel" }, + { + text: "OK", + onPress: () => { + BackHandler.exitApp(); + }, + }, + ]); + return true; +}; + +export { handleAndroidBackButton, removeAndroidBackButtonHandler, exitAlert }; diff --git a/CustomerApp/src/utils/constant.js b/CustomerApp/src/utils/constant.js new file mode 100644 index 0000000..bdeb585 --- /dev/null +++ b/CustomerApp/src/utils/constant.js @@ -0,0 +1,67 @@ +const NAVIGATION_SCREEN = { + Menu: 'Menu', + Help: 'Help', + Cart: 'Cart', + Chat: 'Chat', + Login: 'Login', + Paypal: 'Paypal', + Drawer: 'Drawer', + Coupon: 'Coupon', + Profile: 'Profile', + Payment: 'Payment', + FullMap: 'FullMap', + Settings: 'Settings', + MyOrders: 'MyOrders', + Register: 'Register', + MenuItems: 'MenuItems', + Addresses: 'Addresses', + NewAddress: 'NewAddress', + ItemDetail: 'ItemDetail', + HelpBrowser: 'HelpBrowser', + EditAddress: 'EditAddress', + CartAddress: 'CartAddress', + OrderDetail: 'OrderDetail', + RateAndReview: 'RateAndReview', + ForgotPassword: 'ForgotPassword', + StripeCheckout: 'StripeCheckout', + CreateAccount: 'CreateAccount' +} + +const ICONS_NAME = { + Logo: 'logo', + Menu: 'menu', + Back: 'back', + Exit: 'exit', + Cash: 'cash', + Visa: 'visa', + Home: 'home', + Cart: 'cart', + Info: 'info', + Plus: 'plus', + Radio: 'radio', + Cross: 'cross', + Minus: 'minus', + Trash: 'trash', + Clock: 'clock', + Reload: 'reload', + Pencil: 'pencil', + Target: 'target', + Filter: 'filter', + Paypal: 'paypal', + Message: 'message', + Setting: 'setting', + Checked: 'checked', + Refresh: 'refresh', + Location: 'location', + RadioSelect: 'radioSelect' +} + +const SORT_DATA = { + Default: 'Default', + NameAsc: 'Ascending (A-Z)', + NameDesc: 'Descending (Z-A)', + PriceAsc: 'Price (Low - High)', + PriceDesc: 'Price (High - Low)' +} + +export { NAVIGATION_SCREEN, ICONS_NAME, SORT_DATA } diff --git a/CustomerApp/src/utils/country_codes.js b/CustomerApp/src/utils/country_codes.js new file mode 100644 index 0000000..8ba005b --- /dev/null +++ b/CustomerApp/src/utils/country_codes.js @@ -0,0 +1,2554 @@ +const data = [ + { + iso_country_code: 'AF', + country: 'Afghanistan', + timezone: 'Asia/Kabul', + country_code: '93' + }, + { + iso_country_code: 'AX', + country: 'Aland Islands', + timezone: 'Europe/Mariehamn', + country_code: '355' + }, + { + iso_country_code: 'AL', + country: 'Albania', + timezone: 'Europe/Tirane', + country_code: '355' + }, + { + iso_country_code: 'DZ', + country: 'Algeria', + timezone: 'Africa/Algiers', + country_code: '213' + }, + { + iso_country_code: 'AS', + country: 'American Samoa', + timezone: 'Pacific/Pago_Pago', + country_code: '1-684' + }, + { + iso_country_code: 'AD', + country: 'Andorra', + timezone: 'Europe/Andorra', + country_code: '376' + }, + { + iso_country_code: 'AO', + country: 'Angola', + timezone: 'Africa/Luanda', + country_code: '244' + }, + { + iso_country_code: 'AI', + country: 'Anguilla', + timezone: 'America/Anguilla', + country_code: '1-264' + }, + { + iso_country_code: 'AQ', + country: 'Antarctica', + timezone: 'Antarctica/Casey', + country_code: '672' + }, + { + iso_country_code: 'AQ', + country: 'Antarctica', + timezone: 'Antarctica/Davis', + country_code: '672' + }, + { + iso_country_code: 'AQ', + country: 'Antarctica', + timezone: 'Antarctica/DumontDUrville', + country_code: '672' + }, + { + iso_country_code: 'AQ', + country: 'Antarctica', + timezone: 'Antarctica/Mawson', + country_code: '672' + }, + { + iso_country_code: 'AQ', + country: 'Antarctica', + timezone: 'Antarctica/McMurdo', + country_code: '672' + }, + { + iso_country_code: 'AQ', + country: 'Antarctica', + timezone: 'Antarctica/Palmer', + country_code: '672' + }, + { + iso_country_code: 'AQ', + country: 'Antarctica', + timezone: 'Antarctica/Rothera', + country_code: '672' + }, + { + iso_country_code: 'AQ', + country: 'Antarctica', + timezone: 'Antarctica/Syowa', + country_code: '672' + }, + { + iso_country_code: 'AQ', + country: 'Antarctica', + timezone: 'Antarctica/Troll', + country_code: '672' + }, + { + iso_country_code: 'AQ', + country: 'Antarctica', + timezone: 'Antarctica/Vostok', + country_code: '672' + }, + { + iso_country_code: 'AG', + country: 'Antigua and Barbuda', + timezone: 'America/Antigua', + country_code: '1-268' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/Buenos_Aires', + country_code: '54' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/Catamarca', + country_code: '54' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/Cordoba', + country_code: '54' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/Jujuy', + country_code: '54' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/La_Rioja', + country_code: '54' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/Mendoza', + country_code: '54' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/Rio_Gallegos', + country_code: '54' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/Salta', + country_code: '54' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/San_Juan', + country_code: '54' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/San_Luis', + country_code: '54' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/Tucuman', + country_code: '54' + }, + { + iso_country_code: 'AR', + country: 'Argentina', + timezone: 'America/Argentina/Ushuaia', + country_code: '54' + }, + { + iso_country_code: 'AM', + country: 'Armenia', + timezone: 'Asia/Yerevan', + country_code: '374' + }, + { + iso_country_code: 'AW', + country: 'Aruba', + timezone: 'America/Aruba', + country_code: '297' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Antarctica/Macquarie', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Adelaide', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Brisbane', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Broken_Hill', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Currie', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Darwin', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Eucla', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Hobart', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Lindeman', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Lord_Howe', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Melbourne', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Perth', + country_code: '61' + }, + { + iso_country_code: 'AU', + country: 'Australia', + timezone: 'Australia/Sydney', + country_code: '61' + }, + { + iso_country_code: 'AT', + country: 'Austria', + timezone: 'Europe/Vienna', + country_code: '43' + }, + { + iso_country_code: 'AZ', + country: 'Azerbaijan', + timezone: 'Asia/Baku', + country_code: '994' + }, + { + iso_country_code: 'BS', + country: 'Bahamas', + timezone: 'America/Nassau', + country_code: '1-242' + }, + { + iso_country_code: 'BH', + country: 'Bahrain', + timezone: 'Asia/Bahrain', + country_code: '973' + }, + { + iso_country_code: 'BD', + country: 'Bangladesh', + timezone: 'Asia/Dhaka', + country_code: '880' + }, + { + iso_country_code: 'BB', + country: 'Barbados', + timezone: 'America/Barbados', + country_code: '1-246' + }, + { + iso_country_code: 'BY', + country: 'Belarus', + timezone: 'Europe/Minsk', + country_code: '375' + }, + { + iso_country_code: 'BE', + country: 'Belgium', + timezone: 'Europe/Brussels', + country_code: '32' + }, + { + iso_country_code: 'BZ', + country: 'Belize', + timezone: 'America/Belize', + country_code: '501' + }, + { + iso_country_code: 'BJ', + country: 'Benin', + timezone: 'Africa/Porto-Novo', + country_code: '229' + }, + { + iso_country_code: 'BM', + country: 'Bermuda', + timezone: 'Atlantic/Bermuda', + country_code: '1-441' + }, + { + iso_country_code: 'BT', + country: 'Bhutan', + timezone: 'Asia/Thimphu', + country_code: '975' + }, + { + iso_country_code: 'BO', + country: 'Bolivia', + timezone: 'America/La_Paz', + country_code: '591' + }, + { + iso_country_code: 'BQ', + country: 'Bonaire, Saint Eustatius and Saba ', + timezone: 'America/Kralendijk', + country_code: '591' + }, + { + iso_country_code: 'BA', + country: 'Bosnia and Herzegovina', + timezone: 'Europe/Sarajevo', + country_code: '387' + }, + { + iso_country_code: 'BW', + country: 'Botswana', + timezone: 'Africa/Gaborone', + country_code: '267' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Araguaina', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Bahia', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Belem', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Boa_Vista', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Campo_Grande', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Cuiaba', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Eirunepe', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Fortaleza', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Maceio', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Manaus', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Noronha', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Porto_Velho', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Recife', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Rio_Branco', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Santarem', + country_code: '55' + }, + { + iso_country_code: 'BR', + country: 'Brazil', + timezone: 'America/Sao_Paulo', + country_code: '55' + }, + { + iso_country_code: 'IO', + country: 'British Indian Ocean Territory', + timezone: 'Indian/Chagos', + country_code: '246' + }, + { + iso_country_code: 'VG', + country: 'British Virgin Islands', + timezone: 'America/Tortola', + country_code: '1-284' + }, + { + iso_country_code: 'BN', + country: 'Brunei', + timezone: 'Asia/Brunei', + country_code: '673' + }, + { + iso_country_code: 'BG', + country: 'Bulgaria', + timezone: 'Europe/Sofia', + country_code: '359' + }, + { + iso_country_code: 'BF', + country: 'Burkina Faso', + timezone: 'Africa/Ouagadougou', + country_code: '226' + }, + { + iso_country_code: 'BI', + country: 'Burundi', + timezone: 'Africa/Bujumbura', + country_code: '257' + }, + { + iso_country_code: 'KH', + country: 'Cambodia', + timezone: 'Asia/Phnom_Penh', + country_code: '855' + }, + { + iso_country_code: 'CM', + country: 'Cameroon', + timezone: 'Africa/Douala', + country_code: '237' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Atikokan', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Blanc-Sablon', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Cambridge_Bay', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Creston', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Dawson', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Dawson_Creek', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Edmonton', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Fort_Nelson', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Glace_Bay', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Goose_Bay', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Halifax', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Inuvik', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Iqaluit', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Moncton', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Nipigon', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Pangnirtung', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Rainy_River', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Rankin_Inlet', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Regina', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Resolute', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/St_Johns', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Swift_Current', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Thunder_Bay', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Toronto', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Vancouver', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Whitehorse', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Winnipeg', + country_code: '1' + }, + { + iso_country_code: 'CA', + country: 'Canada', + timezone: 'America/Yellowknife', + country_code: '1' + }, + { + iso_country_code: 'CV', + country: 'Cape Verde', + timezone: 'Atlantic/Cape_Verde', + country_code: '238' + }, + { + iso_country_code: 'KY', + country: 'Cayman Islands', + timezone: 'America/Cayman', + country_code: '1-345' + }, + { + iso_country_code: 'CF', + country: 'Central African Republic', + timezone: 'Africa/Bangui', + country_code: '236' + }, + { + iso_country_code: 'TD', + country: 'Chad', + timezone: 'Africa/Ndjamena', + country_code: '235' + }, + { + iso_country_code: 'CL', + country: 'Chile', + timezone: 'America/Punta_Arenas', + country_code: '56' + }, + { + iso_country_code: 'CL', + country: 'Chile', + timezone: 'America/Santiago', + country_code: '56' + }, + { + iso_country_code: 'CL', + country: 'Chile', + timezone: 'Pacific/Easter', + country_code: '56' + }, + { + iso_country_code: 'CN', + country: 'China', + timezone: 'Asia/Shanghai', + country_code: '86' + }, + { + iso_country_code: 'CN', + country: 'China', + timezone: 'Asia/Urumqi', + country_code: '86' + }, + { + iso_country_code: 'CX', + country: 'Christmas Island', + timezone: 'Indian/Christmas', + country_code: '61' + }, + { + iso_country_code: 'CC', + country: 'Cocos Islands', + timezone: 'Indian/Cocos', + country_code: '61' + }, + { + iso_country_code: 'CO', + country: 'Colombia', + timezone: 'America/Bogota', + country_code: '57' + }, + { + iso_country_code: 'KM', + country: 'Comoros', + timezone: 'Indian/Comoro', + country_code: '269' + }, + { + iso_country_code: 'CK', + country: 'Cook Islands', + timezone: 'Pacific/Rarotonga', + country_code: '682' + }, + { + iso_country_code: 'CR', + country: 'Costa Rica', + timezone: 'America/Costa_Rica', + country_code: '506' + }, + { + iso_country_code: 'HR', + country: 'Croatia', + timezone: 'Europe/Zagreb', + country_code: '385' + }, + { + iso_country_code: 'CU', + country: 'Cuba', + timezone: 'America/Havana', + country_code: '53' + }, + { + iso_country_code: 'CW', + country: 'Curaçao', + timezone: 'America/Curacao', + country_code: '599' + }, + { + iso_country_code: 'CY', + country: 'Cyprus', + timezone: 'Asia/Famagusta', + country_code: '357' + }, + { + iso_country_code: 'CY', + country: 'Cyprus', + timezone: 'Asia/Nicosia', + country_code: '357' + }, + { + iso_country_code: 'CZ', + country: 'Czech Republic', + timezone: 'Europe/Prague', + country_code: '420' + }, + { + iso_country_code: 'CD', + country: 'Democratic Republic of the Congo', + timezone: 'Africa/Kinshasa', + country_code: '243' + }, + { + iso_country_code: 'CD', + country: 'Democratic Republic of the Congo', + timezone: 'Africa/Lubumbashi', + country_code: '243' + }, + { + iso_country_code: 'DK', + country: 'Denmark', + timezone: 'Europe/Copenhagen', + country_code: '45' + }, + { + iso_country_code: 'DJ', + country: 'Djibouti', + timezone: 'Africa/Djibouti', + country_code: '253' + }, + { + iso_country_code: 'DM', + country: 'Dominica', + timezone: 'America/Dominica', + country_code: '1-767' + }, + { + iso_country_code: 'DO', + country: 'Dominican Republic', + timezone: 'America/Santo_Domingo', + country_code: '1-809, 1-829, 1-849' + }, + { + iso_country_code: 'TL', + country: 'East Timor', + timezone: 'Asia/Dili', + country_code: '670' + }, + { + iso_country_code: 'EC', + country: 'Ecuador', + timezone: 'America/Guayaquil', + country_code: '593' + }, + { + iso_country_code: 'EC', + country: 'Ecuador', + timezone: 'Pacific/Galapagos', + country_code: '593' + }, + { + iso_country_code: 'EG', + country: 'Egypt', + timezone: 'Africa/Cairo', + country_code: '20' + }, + { + iso_country_code: 'SV', + country: 'El Salvador', + timezone: 'America/El_Salvador', + country_code: '503' + }, + { + iso_country_code: 'GQ', + country: 'Equatorial Guinea', + timezone: 'Africa/Malabo', + country_code: '240' + }, + { + iso_country_code: 'ER', + country: 'Eritrea', + timezone: 'Africa/Asmara', + country_code: '291' + }, + { + iso_country_code: 'EE', + country: 'Estonia', + timezone: 'Europe/Tallinn', + country_code: '372' + }, + { + iso_country_code: 'ET', + country: 'Ethiopia', + timezone: 'Africa/Addis_Ababa', + country_code: '251' + }, + { + iso_country_code: 'FK', + country: 'Falkland Islands', + timezone: 'Atlantic/Stanley', + country_code: '500' + }, + { + iso_country_code: 'FO', + country: 'Faroe Islands', + timezone: 'Atlantic/Faroe', + country_code: '298' + }, + { + iso_country_code: 'FJ', + country: 'Fiji', + timezone: 'Pacific/Fiji', + country_code: '679' + }, + { + iso_country_code: 'FI', + country: 'Finland', + timezone: 'Europe/Helsinki', + country_code: '358' + }, + { + iso_country_code: 'FR', + country: 'France', + timezone: 'Europe/Paris', + country_code: '33' + }, + { + iso_country_code: 'GF', + country: 'French Guiana', + timezone: 'America/Cayenne', + country_code: '689' + }, + { + iso_country_code: 'PF', + country: 'French Polynesia', + timezone: 'Pacific/Gambier', + country_code: '689' + }, + { + iso_country_code: 'PF', + country: 'French Polynesia', + timezone: 'Pacific/Marquesas', + country_code: '689' + }, + { + iso_country_code: 'PF', + country: 'French Polynesia', + timezone: 'Pacific/Tahiti', + country_code: '689' + }, + { + iso_country_code: 'TF', + country: 'French Southern Territories', + timezone: 'Indian/Kerguelen', + country_code: '689' + }, + { + iso_country_code: 'GA', + country: 'Gabon', + timezone: 'Africa/Libreville', + country_code: '241' + }, + { + iso_country_code: 'GM', + country: 'Gambia', + timezone: 'Africa/Banjul', + country_code: '220' + }, + { + iso_country_code: 'GE', + country: 'Georgia', + timezone: 'Asia/Tbilisi', + country_code: '995' + }, + { + iso_country_code: 'DE', + country: 'Germany', + timezone: 'Europe/Berlin', + country_code: '49' + }, + { + iso_country_code: 'DE', + country: 'Germany', + timezone: 'Europe/Busingen', + country_code: '49' + }, + { + iso_country_code: 'GH', + country: 'Ghana', + timezone: 'Africa/Accra', + country_code: '233' + }, + { + iso_country_code: 'GI', + country: 'Gibraltar', + timezone: 'Europe/Gibraltar', + country_code: '350' + }, + { + iso_country_code: 'GR', + country: 'Greece', + timezone: 'Europe/Athens', + country_code: '30' + }, + { + iso_country_code: 'GL', + country: 'Greenland', + timezone: 'America/Danmarkshavn', + country_code: '299' + }, + { + iso_country_code: 'GL', + country: 'Greenland', + timezone: 'America/Godthab', + country_code: '299' + }, + { + iso_country_code: 'GL', + country: 'Greenland', + timezone: 'America/Scoresbysund', + country_code: '299' + }, + { + iso_country_code: 'GL', + country: 'Greenland', + timezone: 'America/Thule', + country_code: '299' + }, + { + iso_country_code: 'GD', + country: 'Grenada', + timezone: 'America/Grenada', + country_code: '1-473' + }, + { + iso_country_code: 'GP', + country: 'Guadeloupe', + timezone: 'America/Guadeloupe', + country_code: '1-473' + }, + { + iso_country_code: 'GU', + country: 'Guam', + timezone: 'Pacific/Guam', + country_code: '1-671' + }, + { + iso_country_code: 'GT', + country: 'Guatemala', + timezone: 'America/Guatemala', + country_code: '502' + }, + { + iso_country_code: 'GG', + country: 'Guernsey', + timezone: 'Europe/Guernsey', + country_code: '44-1481' + }, + { + iso_country_code: 'GN', + country: 'Guinea', + timezone: 'Africa/Conakry', + country_code: '224' + }, + { + iso_country_code: 'GW', + country: 'Guinea-Bissau', + timezone: 'Africa/Bissau', + country_code: '245' + }, + { + iso_country_code: 'GY', + country: 'Guyana', + timezone: 'America/Guyana', + country_code: '592' + }, + { + iso_country_code: 'HT', + country: 'Haiti', + timezone: 'America/Port-au-Prince', + country_code: '509' + }, + { + iso_country_code: 'HN', + country: 'Honduras', + timezone: 'America/Tegucigalpa', + country_code: '504' + }, + { + iso_country_code: 'HK', + country: 'Hong Kong', + timezone: 'Asia/Hong_Kong', + country_code: '852' + }, + { + iso_country_code: 'HU', + country: 'Hungary', + timezone: 'Europe/Budapest', + country_code: '36' + }, + { + iso_country_code: 'IS', + country: 'Iceland', + timezone: 'Atlantic/Reykjavik', + country_code: '354' + }, + { + iso_country_code: 'IN', + country: 'India', + timezone: 'Asia/Kolkata', + country_code: '91' + }, + { + iso_country_code: 'ID', + country: 'Indonesia', + timezone: 'Asia/Jakarta', + country_code: '62' + }, + { + iso_country_code: 'ID', + country: 'Indonesia', + timezone: 'Asia/Jayapura', + country_code: '62' + }, + { + iso_country_code: 'ID', + country: 'Indonesia', + timezone: 'Asia/Makassar', + country_code: '62' + }, + { + iso_country_code: 'ID', + country: 'Indonesia', + timezone: 'Asia/Pontianak', + country_code: '62' + }, + { + iso_country_code: 'IR', + country: 'Iran', + timezone: 'Asia/Tehran', + country_code: '98' + }, + { + iso_country_code: 'IQ', + country: 'Iraq', + timezone: 'Asia/Baghdad', + country_code: '964' + }, + { + iso_country_code: 'IE', + country: 'Ireland', + timezone: 'Europe/Dublin', + country_code: '353' + }, + { + iso_country_code: 'IM', + country: 'Isle of Man', + timezone: 'Europe/Isle_of_Man', + country_code: '44-1624' + }, + { + iso_country_code: 'IL', + country: 'Israel', + timezone: 'Asia/Jerusalem', + country_code: '972' + }, + { + iso_country_code: 'IT', + country: 'Italy', + timezone: 'Europe/Rome', + country_code: '39' + }, + { + iso_country_code: 'CI', + country: 'Ivory Coast', + timezone: 'Africa/Abidjan', + country_code: '225' + }, + { + iso_country_code: 'JM', + country: 'Jamaica', + timezone: 'America/Jamaica', + country_code: '1-876' + }, + { + iso_country_code: 'JP', + country: 'Japan', + timezone: 'Asia/Tokyo', + country_code: '81' + }, + { + iso_country_code: 'JE', + country: 'Jersey', + timezone: 'Europe/Jersey', + country_code: '44-1534' + }, + { + iso_country_code: 'JO', + country: 'Jordan', + timezone: 'Asia/Amman', + country_code: '962' + }, + { + iso_country_code: 'KZ', + country: 'Kazakhstan', + timezone: 'Asia/Almaty', + country_code: '7' + }, + { + iso_country_code: 'KZ', + country: 'Kazakhstan', + timezone: 'Asia/Aqtau', + country_code: '7' + }, + { + iso_country_code: 'KZ', + country: 'Kazakhstan', + timezone: 'Asia/Aqtobe', + country_code: '7' + }, + { + iso_country_code: 'KZ', + country: 'Kazakhstan', + timezone: 'Asia/Atyrau', + country_code: '7' + }, + { + iso_country_code: 'KZ', + country: 'Kazakhstan', + timezone: 'Asia/Oral', + country_code: '7' + }, + { + iso_country_code: 'KZ', + country: 'Kazakhstan', + timezone: 'Asia/Qostanay', + country_code: '7' + }, + { + iso_country_code: 'KZ', + country: 'Kazakhstan', + timezone: 'Asia/Qyzylorda', + country_code: '7' + }, + { + iso_country_code: 'KE', + country: 'Kenya', + timezone: 'Africa/Nairobi', + country_code: '254' + }, + { + iso_country_code: 'KI', + country: 'Kiribati', + timezone: 'Pacific/Enderbury', + country_code: '686' + }, + { + iso_country_code: 'KI', + country: 'Kiribati', + timezone: 'Pacific/Kiritimati', + country_code: '686' + }, + { + iso_country_code: 'KI', + country: 'Kiribati', + timezone: 'Pacific/Tarawa', + country_code: '686' + }, + { + iso_country_code: 'KW', + country: 'Kuwait', + timezone: 'Asia/Kuwait', + country_code: '965' + }, + { + iso_country_code: 'KG', + country: 'Kyrgyzstan', + timezone: 'Asia/Bishkek', + country_code: '996' + }, + { + iso_country_code: 'LA', + country: 'Laos', + timezone: 'Asia/Vientiane', + country_code: '856' + }, + { + iso_country_code: 'LV', + country: 'Latvia', + timezone: 'Europe/Riga', + country_code: '371' + }, + { + iso_country_code: 'LB', + country: 'Lebanon', + timezone: 'Asia/Beirut', + country_code: '961' + }, + { + iso_country_code: 'LS', + country: 'Lesotho', + timezone: 'Africa/Maseru', + country_code: '266' + }, + { + iso_country_code: 'LR', + country: 'Liberia', + timezone: 'Africa/Monrovia', + country_code: '231' + }, + { + iso_country_code: 'LY', + country: 'Libya', + timezone: 'Africa/Tripoli', + country_code: '218' + }, + { + iso_country_code: 'LI', + country: 'Liechtenstein', + timezone: 'Europe/Vaduz', + country_code: '423' + }, + { + iso_country_code: 'LT', + country: 'Lithuania', + timezone: 'Europe/Vilnius', + country_code: '370' + }, + { + iso_country_code: 'LU', + country: 'Luxembourg', + timezone: 'Europe/Luxembourg', + country_code: '352' + }, + { + iso_country_code: 'MO', + country: 'Macao', + timezone: 'Asia/Macau', + country_code: '853' + }, + { + iso_country_code: 'MK', + country: 'Macedonia', + timezone: 'Europe/Skopje', + country_code: '389' + }, + { + iso_country_code: 'MG', + country: 'Madagascar', + timezone: 'Indian/Antananarivo', + country_code: '261' + }, + { + iso_country_code: 'MW', + country: 'Malawi', + timezone: 'Africa/Blantyre', + country_code: '265' + }, + { + iso_country_code: 'MY', + country: 'Malaysia', + timezone: 'Asia/Kuala_Lumpur', + country_code: '60' + }, + { + iso_country_code: 'MY', + country: 'Malaysia', + timezone: 'Asia/Kuching', + country_code: '60' + }, + { + iso_country_code: 'MV', + country: 'Maldives', + timezone: 'Indian/Maldives', + country_code: '960' + }, + { + iso_country_code: 'ML', + country: 'Mali', + timezone: 'Africa/Bamako', + country_code: '223' + }, + { + iso_country_code: 'MT', + country: 'Malta', + timezone: 'Europe/Malta', + country_code: '356' + }, + { + iso_country_code: 'MH', + country: 'Marshall Islands', + timezone: 'Pacific/Kwajalein', + country_code: '692' + }, + { + iso_country_code: 'MH', + country: 'Marshall Islands', + timezone: 'Pacific/Majuro', + country_code: '692' + }, + { + iso_country_code: 'MQ', + country: 'Martinique', + timezone: 'America/Martinique', + country_code: '222' + }, + { + iso_country_code: 'MR', + country: 'Mauritania', + timezone: 'Africa/Nouakchott', + country_code: '222' + }, + { + iso_country_code: 'MU', + country: 'Mauritius', + timezone: 'Indian/Mauritius', + country_code: '230' + }, + { + iso_country_code: 'YT', + country: 'Mayotte', + timezone: 'Indian/Mayotte', + country_code: '262' + }, + { + iso_country_code: 'MX', + country: 'Mexico', + timezone: 'America/Bahia_Banderas', + country_code: '52' + }, + { + iso_country_code: 'MX', + country: 'Mexico', + timezone: 'America/Cancun', + country_code: '52' + }, + { + iso_country_code: 'MX', + country: 'Mexico', + timezone: 'America/Chihuahua', + country_code: '52' + }, + { + iso_country_code: 'MX', + country: 'Mexico', + timezone: 'America/Hermosillo', + country_code: '52' + }, + { + iso_country_code: 'MX', + country: 'Mexico', + timezone: 'America/Matamoros', + country_code: '52' + }, + { + iso_country_code: 'MX', + country: 'Mexico', + timezone: 'America/Mazatlan', + country_code: '52' + }, + { + iso_country_code: 'MX', + country: 'Mexico', + timezone: 'America/Merida', + country_code: '52' + }, + { + iso_country_code: 'MX', + country: 'Mexico', + timezone: 'America/Mexico_City', + country_code: '52' + }, + { + iso_country_code: 'MX', + country: 'Mexico', + timezone: 'America/Monterrey', + country_code: '52' + }, + { + iso_country_code: 'MX', + country: 'Mexico', + timezone: 'America/Ojinaga', + country_code: '52' + }, + { + iso_country_code: 'MX', + country: 'Mexico', + timezone: 'America/Tijuana', + country_code: '52' + }, + { + iso_country_code: 'FM', + country: 'Micronesia', + timezone: 'Pacific/Chuuk', + country_code: '691' + }, + { + iso_country_code: 'FM', + country: 'Micronesia', + timezone: 'Pacific/Kosrae', + country_code: '691' + }, + { + iso_country_code: 'FM', + country: 'Micronesia', + timezone: 'Pacific/Pohnpei', + country_code: '691' + }, + { + iso_country_code: 'MD', + country: 'Moldova', + timezone: 'Europe/Chisinau', + country_code: '373' + }, + { + iso_country_code: 'MC', + country: 'Monaco', + timezone: 'Europe/Monaco', + country_code: '377' + }, + { + iso_country_code: 'MN', + country: 'Mongolia', + timezone: 'Asia/Choibalsan', + country_code: '976' + }, + { + iso_country_code: 'MN', + country: 'Mongolia', + timezone: 'Asia/Hovd', + country_code: '976' + }, + { + iso_country_code: 'MN', + country: 'Mongolia', + timezone: 'Asia/Ulaanbaatar', + country_code: '976' + }, + { + iso_country_code: 'ME', + country: 'Montenegro', + timezone: 'Europe/Podgorica', + country_code: '382' + }, + { + iso_country_code: 'MS', + country: 'Montserrat', + timezone: 'America/Montserrat', + country_code: '1-664' + }, + { + iso_country_code: 'MA', + country: 'Morocco', + timezone: 'Africa/Casablanca', + country_code: '212' + }, + { + iso_country_code: 'MZ', + country: 'Mozambique', + timezone: 'Africa/Maputo', + country_code: '258' + }, + { + iso_country_code: 'MM', + country: 'Myanmar', + timezone: 'Asia/Yangon', + country_code: '95' + }, + { + iso_country_code: 'NA', + country: 'Namibia', + timezone: 'Africa/Windhoek', + country_code: '264' + }, + { + iso_country_code: 'NR', + country: 'Nauru', + timezone: 'Pacific/Nauru', + country_code: '674' + }, + { + iso_country_code: 'NP', + country: 'Nepal', + timezone: 'Asia/Kathmandu', + country_code: '977' + }, + { + iso_country_code: 'NL', + country: 'Netherlands', + timezone: 'Europe/Amsterdam', + country_code: '31' + }, + { + iso_country_code: 'NC', + country: 'New Caledonia', + timezone: 'Pacific/Noumea', + country_code: '687' + }, + { + iso_country_code: 'NZ', + country: 'New Zealand', + timezone: 'Pacific/Auckland', + country_code: '64' + }, + { + iso_country_code: 'NZ', + country: 'New Zealand', + timezone: 'Pacific/Chatham', + country_code: '64' + }, + { + iso_country_code: 'NI', + country: 'Nicaragua', + timezone: 'America/Managua', + country_code: '505' + }, + { + iso_country_code: 'NE', + country: 'Niger', + timezone: 'Africa/Niamey', + country_code: '227' + }, + { + iso_country_code: 'NG', + country: 'Nigeria', + timezone: 'Africa/Lagos', + country_code: '234' + }, + { + iso_country_code: 'NU', + country: 'Niue', + timezone: 'Pacific/Niue', + country_code: '683' + }, + { + iso_country_code: 'NF', + country: 'Norfolk Island', + timezone: 'Pacific/Norfolk', + country_code: '683' + }, + { + iso_country_code: 'KP', + country: 'North Korea', + timezone: 'Asia/Pyongyang', + country_code: '850' + }, + { + iso_country_code: 'MP', + country: 'Northern Mariana Islands', + timezone: 'Pacific/Saipan', + country_code: '1-670' + }, + { + iso_country_code: 'NO', + country: 'Norway', + timezone: 'Europe/Oslo', + country_code: '47' + }, + { + iso_country_code: 'OM', + country: 'Oman', + timezone: 'Asia/Muscat', + country_code: '968' + }, + { + iso_country_code: 'PK', + country: 'Pakistan', + timezone: 'Asia/Karachi', + country_code: '92' + }, + { + iso_country_code: 'PW', + country: 'Palau', + timezone: 'Pacific/Palau', + country_code: '680' + }, + { + iso_country_code: 'PS', + country: 'Palestinian Territory', + timezone: 'Asia/Gaza', + country_code: '970' + }, + { + iso_country_code: 'PS', + country: 'Palestinian Territory', + timezone: 'Asia/Hebron', + country_code: '970' + }, + { + iso_country_code: 'PA', + country: 'Panama', + timezone: 'America/Panama', + country_code: '507' + }, + { + iso_country_code: 'PG', + country: 'Papua New Guinea', + timezone: 'Pacific/Bougainville', + country_code: '675' + }, + { + iso_country_code: 'PG', + country: 'Papua New Guinea', + timezone: 'Pacific/Port_Moresby', + country_code: '675' + }, + { + iso_country_code: 'PY', + country: 'Paraguay', + timezone: 'America/Asuncion', + country_code: '595' + }, + { + iso_country_code: 'PE', + country: 'Peru', + timezone: 'America/Lima', + country_code: '51' + }, + { + iso_country_code: 'PH', + country: 'Philippines', + timezone: 'Asia/Manila', + country_code: '63' + }, + { + iso_country_code: 'PN', + country: 'Pitcairn', + timezone: 'Pacific/Pitcairn', + country_code: '64' + }, + { + iso_country_code: 'PL', + country: 'Poland', + timezone: 'Europe/Warsaw', + country_code: '48' + }, + { + iso_country_code: 'PT', + country: 'Portugal', + timezone: 'Atlantic/Azores', + country_code: '351' + }, + { + iso_country_code: 'PT', + country: 'Portugal', + timezone: 'Atlantic/Madeira', + country_code: '351' + }, + { + iso_country_code: 'PT', + country: 'Portugal', + timezone: 'Europe/Lisbon', + country_code: '351' + }, + { + iso_country_code: 'PR', + country: 'Puerto Rico', + timezone: 'America/Puerto_Rico', + country_code: '1-787, 1-939' + }, + { + iso_country_code: 'QA', + country: 'Qatar', + timezone: 'Asia/Qatar', + country_code: '974' + }, + { + iso_country_code: 'CG', + country: 'Republic of the Congo', + timezone: 'Africa/Brazzaville', + country_code: '242' + }, + { + iso_country_code: 'RE', + country: 'Reunion', + timezone: 'Indian/Reunion', + country_code: '262' + }, + { + iso_country_code: 'RO', + country: 'Romania', + timezone: 'Europe/Bucharest', + country_code: '40' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Anadyr', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Barnaul', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Chita', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Irkutsk', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Kamchatka', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Khandyga', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Krasnoyarsk', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Magadan', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Novokuznetsk', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Novosibirsk', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Omsk', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Sakhalin', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Srednekolymsk', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Tomsk', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Ust-Nera', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Vladivostok', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Yakutsk', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Asia/Yekaterinburg', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Europe/Astrakhan', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Europe/Kaliningrad', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Europe/Kirov', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Europe/Moscow', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Europe/Samara', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Europe/Saratov', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Europe/Ulyanovsk', + country_code: '7' + }, + { + iso_country_code: 'RU', + country: 'Russia', + timezone: 'Europe/Volgograd', + country_code: '7' + }, + { + iso_country_code: 'RW', + country: 'Rwanda', + timezone: 'Africa/Kigali', + country_code: '250' + }, + { + iso_country_code: 'BL', + country: 'Saint Barthélemy', + timezone: 'America/St_Barthelemy', + country_code: '590' + }, + { + iso_country_code: 'SH', + country: 'Saint Helena', + timezone: 'Atlantic/St_Helena', + country_code: '290' + }, + { + iso_country_code: 'KN', + country: 'Saint Kitts and Nevis', + timezone: 'America/St_Kitts', + country_code: '1-869' + }, + { + iso_country_code: 'LC', + country: 'Saint Lucia', + timezone: 'America/St_Lucia', + country_code: '1-758' + }, + { + iso_country_code: 'MF', + country: 'Saint Martin', + timezone: 'America/Marigot', + country_code: '590' + }, + { + iso_country_code: 'PM', + country: 'Saint Pierre and Miquelon', + timezone: 'America/Miquelon', + country_code: '508' + }, + { + iso_country_code: 'VC', + country: 'Saint Vincent and the Grenadines', + timezone: 'America/St_Vincent', + country_code: '1-784' + }, + { + iso_country_code: 'WS', + country: 'Samoa', + timezone: 'Pacific/Apia', + country_code: '685' + }, + { + iso_country_code: 'SM', + country: 'San Marino', + timezone: 'Europe/San_Marino', + country_code: '378' + }, + { + iso_country_code: 'ST', + country: 'Sao Tome and Principe', + timezone: 'Africa/Sao_Tome', + country_code: '239' + }, + { + iso_country_code: 'SA', + country: 'Saudi Arabia', + timezone: 'Asia/Riyadh', + country_code: '966' + }, + { + iso_country_code: 'SN', + country: 'Senegal', + timezone: 'Africa/Dakar', + country_code: '221' + }, + { + iso_country_code: 'RS', + country: 'Serbia', + timezone: 'Europe/Belgrade', + country_code: '381' + }, + { + iso_country_code: 'SC', + country: 'Seychelles', + timezone: 'Indian/Mahe', + country_code: '248' + }, + { + iso_country_code: 'SL', + country: 'Sierra Leone', + timezone: 'Africa/Freetown', + country_code: '232' + }, + { + iso_country_code: 'SG', + country: 'Singapore', + timezone: 'Asia/Singapore', + country_code: '65' + }, + { + iso_country_code: 'SX', + country: 'Sint Maarten', + timezone: 'America/Lower_Princes', + country_code: '1-721' + }, + { + iso_country_code: 'SK', + country: 'Slovakia', + timezone: 'Europe/Bratislava', + country_code: '421' + }, + { + iso_country_code: 'SI', + country: 'Slovenia', + timezone: 'Europe/Ljubljana', + country_code: '386' + }, + { + iso_country_code: 'SB', + country: 'Solomon Islands', + timezone: 'Pacific/Guadalcanal', + country_code: '677' + }, + { + iso_country_code: 'SO', + country: 'Somalia', + timezone: 'Africa/Mogadishu', + country_code: '252' + }, + { + iso_country_code: 'ZA', + country: 'South Africa', + timezone: 'Africa/Johannesburg', + country_code: '27' + }, + { + iso_country_code: 'GS', + country: 'South Georgia and the South Sandwich Islands', + timezone: 'Atlantic/South_Georgia', + country_code: '27' + }, + { + iso_country_code: 'KR', + country: 'South Korea', + timezone: 'Asia/Seoul', + country_code: '82' + }, + { + iso_country_code: 'SS', + country: 'South Sudan', + timezone: 'Africa/Juba', + country_code: '211' + }, + { + iso_country_code: 'ES', + country: 'Spain', + timezone: 'Africa/Ceuta', + country_code: '34' + }, + { + iso_country_code: 'ES', + country: 'Spain', + timezone: 'Atlantic/Canary', + country_code: '34' + }, + { + iso_country_code: 'ES', + country: 'Spain', + timezone: 'Europe/Madrid', + country_code: '34' + }, + { + iso_country_code: 'LK', + country: 'Sri Lanka', + timezone: 'Asia/Colombo', + country_code: '94' + }, + { + iso_country_code: 'SD', + country: 'Sudan', + timezone: 'Africa/Khartoum', + country_code: '249' + }, + { + iso_country_code: 'SR', + country: 'Suriname', + timezone: 'America/Paramaribo', + country_code: '597' + }, + { + iso_country_code: 'SJ', + country: 'Svalbard and Jan Mayen', + timezone: 'Arctic/Longyearbyen', + country_code: '47' + }, + { + iso_country_code: 'SZ', + country: 'Swaziland', + timezone: 'Africa/Mbabane', + country_code: '268' + }, + { + iso_country_code: 'SE', + country: 'Sweden', + timezone: 'Europe/Stockholm', + country_code: '46' + }, + { + iso_country_code: 'CH', + country: 'Switzerland', + timezone: 'Europe/Zurich', + country_code: '41' + }, + { + iso_country_code: 'SY', + country: 'Syria', + timezone: 'Asia/Damascus', + country_code: '963' + }, + { + iso_country_code: 'TW', + country: 'Taiwan', + timezone: 'Asia/Taipei', + country_code: '886' + }, + { + iso_country_code: 'TJ', + country: 'Tajikistan', + timezone: 'Asia/Dushanbe', + country_code: '992' + }, + { + iso_country_code: 'TZ', + country: 'Tanzania', + timezone: 'Africa/Dar_es_Salaam', + country_code: '255' + }, + { + iso_country_code: 'TH', + country: 'Thailand', + timezone: 'Asia/Bangkok', + country_code: '66' + }, + { + iso_country_code: 'TG', + country: 'Togo', + timezone: 'Africa/Lome', + country_code: '228' + }, + { + iso_country_code: 'TK', + country: 'Tokelau', + timezone: 'Pacific/Fakaofo', + country_code: '690' + }, + { + iso_country_code: 'TO', + country: 'Tonga', + timezone: 'Pacific/Tongatapu', + country_code: '676' + }, + { + iso_country_code: 'TT', + country: 'Trinidad and Tobago', + timezone: 'America/Port_of_Spain', + country_code: '1-868' + }, + { + iso_country_code: 'TN', + country: 'Tunisia', + timezone: 'Africa/Tunis', + country_code: '216' + }, + { + iso_country_code: 'TR', + country: 'Turkey', + timezone: 'Europe/Istanbul', + country_code: '90' + }, + { + iso_country_code: 'TM', + country: 'Turkmenistan', + timezone: 'Asia/Ashgabat', + country_code: '993' + }, + { + iso_country_code: 'TC', + country: 'Turks and Caicos Islands', + timezone: 'America/Grand_Turk', + country_code: '1-649' + }, + { + iso_country_code: 'TV', + country: 'Tuvalu', + timezone: 'Pacific/Funafuti', + country_code: '688' + }, + { + iso_country_code: 'VI', + country: 'U.S. Virgin Islands', + timezone: 'America/St_Thomas', + country_code: '1-340' + }, + { + iso_country_code: 'UG', + country: 'Uganda', + timezone: 'Africa/Kampala', + country_code: '256' + }, + { + iso_country_code: 'UA', + country: 'Ukraine', + timezone: 'Europe/Kiev', + country_code: '380' + }, + { + iso_country_code: 'UA', + country: 'Ukraine', + timezone: 'Europe/Simferopol', + country_code: '380' + }, + { + iso_country_code: 'UA', + country: 'Ukraine', + timezone: 'Europe/Uzhgorod', + country_code: '380' + }, + { + iso_country_code: 'UA', + country: 'Ukraine', + timezone: 'Europe/Zaporozhye', + country_code: '380' + }, + { + iso_country_code: 'AE', + country: 'United Arab Emirates', + timezone: 'Asia/Dubai', + country_code: '971' + }, + { + iso_country_code: 'GB', + country: 'United Kingdom', + timezone: 'Europe/London', + country_code: '44' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Adak', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Anchorage', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Boise', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Chicago', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Denver', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Detroit', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Indiana/Indianapolis', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Indiana/Knox', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Indiana/Marengo', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Indiana/Petersburg', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Indiana/Tell_City', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Indiana/Vevay', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Indiana/Vincennes', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Indiana/Winamac', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Juneau', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Kentucky/Louisville', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Kentucky/Monticello', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Los_Angeles', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Menominee', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Metlakatla', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/New_York', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Nome', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/North_Dakota/Beulah', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/North_Dakota/Center', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/North_Dakota/New_Salem', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Phoenix', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Sitka', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'America/Yakutat', + country_code: '1' + }, + { + iso_country_code: 'US', + country: 'United States', + timezone: 'Pacific/Honolulu', + country_code: '1' + }, + { + iso_country_code: 'UM', + country: 'United States Minor Outlying Islands', + timezone: 'Pacific/Midway', + country_code: '1' + }, + { + iso_country_code: 'UM', + country: 'United States Minor Outlying Islands', + timezone: 'Pacific/Wake', + country_code: '1' + }, + { + iso_country_code: 'UY', + country: 'Uruguay', + timezone: 'America/Montevideo', + country_code: '598' + }, + { + iso_country_code: 'UZ', + country: 'Uzbekistan', + timezone: 'Asia/Samarkand', + country_code: '998' + }, + { + iso_country_code: 'UZ', + country: 'Uzbekistan', + timezone: 'Asia/Tashkent', + country_code: '998' + }, + { + iso_country_code: 'VU', + country: 'Vanuatu', + timezone: 'Pacific/Efate', + country_code: '678' + }, + { + iso_country_code: 'VA', + country: 'Vatican', + timezone: 'Europe/Vatican', + country_code: '379' + }, + { + iso_country_code: 'VE', + country: 'Venezuela', + timezone: 'America/Caracas', + country_code: '58' + }, + { + iso_country_code: 'VN', + country: 'Vietnam', + timezone: 'Asia/Ho_Chi_Minh', + country_code: '84' + }, + { + iso_country_code: 'WF', + country: 'Wallis and Futuna', + timezone: 'Pacific/Wallis', + country_code: '681' + }, + { + iso_country_code: 'EH', + country: 'Western Sahara', + timezone: 'Africa/El_Aaiun', + country_code: '212' + }, + { + iso_country_code: 'YE', + country: 'Yemen', + timezone: 'Asia/Aden', + country_code: '967' + }, + { + iso_country_code: 'ZM', + country: 'Zambia', + timezone: 'Africa/Lusaka', + country_code: '260' + }, + { + iso_country_code: 'ZW', + country: 'Zimbabwe', + timezone: 'Africa/Harare', + country_code: '263' + } +] + +export default data diff --git a/CustomerApp/src/utils/currencies.js b/CustomerApp/src/utils/currencies.js new file mode 100644 index 0000000..1053980 --- /dev/null +++ b/CustomerApp/src/utils/currencies.js @@ -0,0 +1,165 @@ +export const stripeCurrencies = [ + { currency: 'USD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'AED', currency_symbol: 'د.إ', multiplier: 100, type: 'STRIPE' }, + { currency: 'AFN', currency_symbol: '؋', multiplier: 100, type: 'STRIPE' }, + { currency: 'ALL', currency_symbol: 'L', multiplier: 100, type: 'STRIPE' }, + { currency: 'AMD', currency_symbol: '֏', multiplier: 100, type: 'STRIPE' }, + { currency: 'ANG', currency_symbol: 'ƒ', multiplier: 100, type: 'STRIPE' }, + { currency: 'AOA', currency_symbol: 'Kz', multiplier: 100, type: 'STRIPE' }, + { currency: 'ARS', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'AUD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'AWG', currency_symbol: 'ƒ', multiplier: 100, type: 'STRIPE' }, + { currency: 'AZN', currency_symbol: '₼', multiplier: 100, type: 'STRIPE' }, + { currency: 'BAM', currency_symbol: 'BAM', multiplier: 100, type: 'STRIPE' }, + { currency: 'BBD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'BDT', currency_symbol: '৳', multiplier: 100, type: 'STRIPE' }, + { currency: 'BGN', currency_symbol: 'лв', multiplier: 100, type: 'STRIPE' }, + { currency: 'BIF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' }, + { currency: 'BMD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'BND', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'BOB', currency_symbol: 'Bs.', multiplier: 100, type: 'STRIPE' }, + { currency: 'BRL', currency_symbol: 'R$', multiplier: 100, type: 'STRIPE' }, + { currency: 'BSD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'BWP', currency_symbol: 'P', multiplier: 100, type: 'STRIPE' }, + { currency: 'BZD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'CAD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'CDF', currency_symbol: 'Fr', multiplier: 100, type: 'STRIPE' }, + { currency: 'CHF', currency_symbol: 'Fr', multiplier: 100, type: 'STRIPE' }, + { currency: 'CLP', currency_symbol: '$', multiplier: 1, type: 'STRIPE' }, + { currency: 'CNY', currency_symbol: '¥', multiplier: 100, type: 'STRIPE' }, + { currency: 'COP', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'CRC', currency_symbol: '₡', multiplier: 100, type: 'STRIPE' }, + { currency: 'CVE', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'CZK', currency_symbol: 'Kč', multiplier: 100, type: 'STRIPE' }, + { currency: 'DJF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' }, + { currency: 'DKK', currency_symbol: 'kr', multiplier: 100, type: 'STRIPE' }, + { currency: 'DOP', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'DZD', currency_symbol: 'د.ج', multiplier: 100, type: 'STRIPE' }, + { currency: 'EGP', currency_symbol: '£', multiplier: 100, type: 'STRIPE' }, + { currency: 'ETB', currency_symbol: 'Br', multiplier: 100, type: 'STRIPE' }, + { currency: 'EUR', currency_symbol: '€', multiplier: 100, type: 'STRIPE' }, + { currency: 'FJD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'FKP', currency_symbol: '£', multiplier: 100, type: 'STRIPE' }, + { currency: 'GBP', currency_symbol: '£', multiplier: 100, type: 'STRIPE' }, + { currency: 'GEL', currency_symbol: '₾', multiplier: 100, type: 'STRIPE' }, + { currency: 'GIP', currency_symbol: '£', multiplier: 100, type: 'STRIPE' }, + { currency: 'GMD', currency_symbol: 'D', multiplier: 100, type: 'STRIPE' }, + { currency: 'GNF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' }, + { currency: 'GTQ', currency_symbol: 'Q', multiplier: 100, type: 'STRIPE' }, + { currency: 'GYD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'HKD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'HNL', currency_symbol: 'L', multiplier: 100, type: 'STRIPE' }, + { currency: 'HRK', currency_symbol: 'kn', multiplier: 100, type: 'STRIPE' }, + { currency: 'HTG', currency_symbol: 'G', multiplier: 100, type: 'STRIPE' }, + { currency: 'HUF', currency_symbol: 'Ft', multiplier: 100, type: 'STRIPE' }, + { currency: 'IDR', currency_symbol: 'Rp', multiplier: 100, type: 'STRIPE' }, + { currency: 'ILS', currency_symbol: 'ع.د', multiplier: 100, type: 'STRIPE' }, + { currency: 'INR', currency_symbol: '₹', multiplier: 100, type: 'STRIPE' }, + { currency: 'ISK', currency_symbol: 'kr', multiplier: 100, type: 'STRIPE' }, + { currency: 'JMD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'JPY', currency_symbol: '¥', multiplier: 1, type: 'STRIPE' }, + { currency: 'KES', currency_symbol: 'Sh', multiplier: 100, type: 'STRIPE' }, + { currency: 'KGS', currency_symbol: 'с', multiplier: 100, type: 'STRIPE' }, + { currency: 'KHR', currency_symbol: '៛', multiplier: 100, type: 'STRIPE' }, + { currency: 'KMF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' }, + { currency: 'KRW', currency_symbol: '₩', multiplier: 1, type: 'STRIPE' }, + { currency: 'KYD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'KZT', currency_symbol: '₸', multiplier: 100, type: 'STRIPE' }, + { currency: 'LAK', currency_symbol: '₭', multiplier: 100, type: 'STRIPE' }, + { currency: 'LBP', currency_symbol: 'ل.ل', multiplier: 100, type: 'STRIPE' }, + { currency: 'LKR', currency_symbol: 'Rs', multiplier: 100, type: 'STRIPE' }, + { currency: 'LRD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'LSL', currency_symbol: 'L', multiplier: 100, type: 'STRIPE' }, + { currency: 'MAD', currency_symbol: 'د.م.', multiplier: 100, type: 'STRIPE' }, + { currency: 'MDL', currency_symbol: 'L', multiplier: 100, type: 'STRIPE' }, + { currency: 'MGA', currency_symbol: 'Ar', multiplier: 1, type: 'STRIPE' }, + { currency: 'MKD', currency_symbol: 'ден', multiplier: 100, type: 'STRIPE' }, + { currency: 'MMK', currency_symbol: 'Ks', multiplier: 100, type: 'STRIPE' }, + { currency: 'MNT', currency_symbol: '₮', multiplier: 100, type: 'STRIPE' }, + { currency: 'MOP', currency_symbol: 'P', multiplier: 100, type: 'STRIPE' }, + { currency: 'MRO', currency_symbol: 'UM', multiplier: 100, type: 'STRIPE' }, + { currency: 'MUR', currency_symbol: '₨', multiplier: 100, type: 'STRIPE' }, + { currency: 'MVR', currency_symbol: '.ރ', multiplier: 100, type: 'STRIPE' }, + { currency: 'MWK', currency_symbol: 'MK', multiplier: 100, type: 'STRIPE' }, + { currency: 'MXN', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'MYR', currency_symbol: 'RM', multiplier: 100, type: 'STRIPE' }, + { currency: 'MZN', currency_symbol: 'MT', multiplier: 100, type: 'STRIPE' }, + { currency: 'NAD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'NGN', currency_symbol: '₦', multiplier: 100, type: 'STRIPE' }, + { currency: 'NIO', currency_symbol: 'C$', multiplier: 100, type: 'STRIPE' }, + { currency: 'NOK', currency_symbol: 'kr', multiplier: 100, type: 'STRIPE' }, + { currency: 'NPR', currency_symbol: '₨', multiplier: 100, type: 'STRIPE' }, + { currency: 'NZD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'PAB', currency_symbol: 'B/.', multiplier: 100, type: 'STRIPE' }, + { currency: 'PEN', currency_symbol: 'S/.', multiplier: 100, type: 'STRIPE' }, + { currency: 'PGK', currency_symbol: 'K', multiplier: 100, type: 'STRIPE' }, + { currency: 'PHP', currency_symbol: '₱', multiplier: 100, type: 'STRIPE' }, + { currency: 'PKR', currency_symbol: '₨', multiplier: 100, type: 'STRIPE' }, + { currency: 'PLN', currency_symbol: 'zł', multiplier: 100, type: 'STRIPE' }, + { currency: 'PYG', currency_symbol: '₲', multiplier: 1, type: 'STRIPE' }, + { currency: 'QAR', currency_symbol: 'ر.ق', multiplier: 100, type: 'STRIPE' }, + { currency: 'RON', currency_symbol: 'lei', multiplier: 100, type: 'STRIPE' }, + { currency: 'RSD', currency_symbol: 'дин', multiplier: 100, type: 'STRIPE' }, + { currency: 'RUB', currency_symbol: '₽', multiplier: 100, type: 'STRIPE' }, + { currency: 'RWF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' }, + { currency: 'SAR', currency_symbol: 'ر.س', multiplier: 100, type: 'STRIPE' }, + { currency: 'SBD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'SCR', currency_symbol: '₨', multiplier: 100, type: 'STRIPE' }, + { currency: 'SEK', currency_symbol: 'kr', multiplier: 100, type: 'STRIPE' }, + { currency: 'SGD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'SHP', currency_symbol: '£', multiplier: 100, type: 'STRIPE' }, + { currency: 'SLL', currency_symbol: 'Le', multiplier: 100, type: 'STRIPE' }, + { currency: 'SOS', currency_symbol: 'Sh', multiplier: 100, type: 'STRIPE' }, + { currency: 'SRD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'STD', currency_symbol: 'Db', multiplier: 100, type: 'STRIPE' }, + { currency: 'SZL', currency_symbol: 'L', multiplier: 100, type: 'STRIPE' }, + { currency: 'THB', currency_symbol: '฿', multiplier: 100, type: 'STRIPE' }, + { currency: 'TJS', currency_symbol: 'ЅМ', multiplier: 100, type: 'STRIPE' }, + { currency: 'TOP', currency_symbol: 'T$', multiplier: 100, type: 'STRIPE' }, + { currency: 'TRY', currency_symbol: '₺', multiplier: 100, type: 'STRIPE' }, + { currency: 'TTD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'TWD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'TZS', currency_symbol: 'Sh', multiplier: 100, type: 'STRIPE' }, + { currency: 'UAH', currency_symbol: '₴', multiplier: 100, type: 'STRIPE' }, + { currency: 'UGX', currency_symbol: 'Sh', multiplier: 1, type: 'STRIPE' }, + { currency: 'UYU', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'UZS', currency_symbol: 'сўм', multiplier: 100, type: 'STRIPE' }, + { currency: 'VND', currency_symbol: '₫', multiplier: 1, type: 'STRIPE' }, + { currency: 'VUV', currency_symbol: 'Vt', multiplier: 1, type: 'STRIPE' }, + { currency: 'WST', currency_symbol: 'T', multiplier: 100, type: 'STRIPE' }, + { currency: 'XAF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' }, + { currency: 'XCD', currency_symbol: '$', multiplier: 100, type: 'STRIPE' }, + { currency: 'XOF', currency_symbol: 'Fr', multiplier: 1, type: 'STRIPE' }, + { currency: 'XPF', currency_symbol: '₣', multiplier: 1, type: 'STRIPE' }, + { currency: 'YER', currency_symbol: '﷼', multiplier: 100, type: 'STRIPE' }, + { currency: 'ZAR', currency_symbol: 'Rs', multiplier: 100, type: 'STRIPE' }, + { currency: 'ZMW', currency_symbol: 'ZK', multiplier: 100, type: 'STRIPE' } +] + +export const paypalCurrencies = [ + { currency: 'AUD', currency_symbol: '$', type: 'PAYPAL' }, + { currency: 'BRL', currency_symbol: 'R$', type: 'PAYPAL' }, + { currency: 'CAD', currency_symbol: '$', type: 'PAYPAL' }, + { currency: 'CZK', currency_symbol: 'Kč', type: 'PAYPAL' }, + { currency: 'DKK', currency_symbol: 'kr', type: 'PAYPAL' }, + { currency: 'EUR', currency_symbol: '€', type: 'PAYPAL' }, + { currency: 'HKD', currency_symbol: '$', type: 'PAYPAL' }, + { currency: 'HUF', currency_symbol: 'Ft', type: 'PAYPAL' }, + { currency: 'INR', currency_symbol: '₹', type: 'PAYPAL' }, + { currency: 'ILS', currency_symbol: 'ع.د', type: 'PAYPAL' }, + { currency: 'JPY', currency_symbol: '¥', type: 'PAYPAL' }, + { currency: 'MYR', currency_symbol: 'RM', type: 'PAYPAL' }, + { currency: 'MXN', currency_symbol: '$', type: 'PAYPAL' }, + { currency: 'TWD', currency_symbol: '$', type: 'PAYPAL' }, + { currency: 'NZD', currency_symbol: '$', type: 'PAYPAL' }, + { currency: 'NOK', currency_symbol: 'kr', type: 'PAYPAL' }, + { currency: 'PHP', currency_symbol: '₱', type: 'PAYPAL' }, + { currency: 'PLN', currency_symbol: 'zł', type: 'PAYPAL' }, + { currency: 'GBP', currency_symbol: '£', type: 'PAYPAL' }, + { currency: 'RUB', currency_symbol: '₽', type: 'PAYPAL' }, + { currency: 'SGD', currency_symbol: '$', type: 'PAYPAL' }, + { currency: 'SEK', currency_symbol: 'kr', type: 'PAYPAL' }, + { currency: 'CHF', currency_symbol: 'Fr', type: 'PAYPAL' }, + { currency: 'THB', currency_symbol: '฿', type: 'PAYPAL' }, + { currency: 'USD', currency_symbol: '$', type: 'PAYPAL' } +] diff --git a/CustomerApp/src/utils/fontStyles.js b/CustomerApp/src/utils/fontStyles.js new file mode 100755 index 0000000..035d8d6 --- /dev/null +++ b/CustomerApp/src/utils/fontStyles.js @@ -0,0 +1,7 @@ +export const fontStyles = { + PoppinLight: 'Poppin300', + PoppingRegular: 'Poppin400', + PoppingMedium: 'Poppin500', + PoppingSemiBold: 'Poppin600', + PoppinBold: 'Poppin700' +} diff --git a/CustomerApp/src/utils/scaling.js b/CustomerApp/src/utils/scaling.js new file mode 100755 index 0000000..26f0f56 --- /dev/null +++ b/CustomerApp/src/utils/scaling.js @@ -0,0 +1,12 @@ +import { Dimensions } from 'react-native' + +const { width, height } = Dimensions.get('window') +// Guideline sizes are based on standard ~5" screen mobile device +const guidelineBaseWidth = 350 +const guidelineBaseHeight = 680 +const scale = size => (width / guidelineBaseWidth) * size +const verticalScale = size => (height / guidelineBaseHeight) * size +const moderateScale = (size, factor = 0.5) => + size + (scale(size) - size) * factor + +export { scale, verticalScale, moderateScale } diff --git a/CustomerApp/src/utils/textStyles.js b/CustomerApp/src/utils/textStyles.js new file mode 100644 index 0000000..0687236 --- /dev/null +++ b/CustomerApp/src/utils/textStyles.js @@ -0,0 +1,53 @@ +import { scale } from './scaling' +import { fontStyles } from './fontStyles' + +export const textStyles = { + H1: { + fontSize: scale(32) + }, + H2: { + fontSize: scale(22) + }, + H3: { + fontSize: scale(18) + }, + H4: { + fontSize: scale(15) + }, + H5: { + fontSize: scale(13) + }, + Normal: { + fontSize: scale(11) + }, + Small: { + fontSize: scale(9) + }, + Light: { + fontFamily: fontStyles.PoppinLight + }, + Regular: { + fontFamily: fontStyles.PoppingRegular + }, + Medium: { + fontFamily: fontStyles.PoppingMedium + }, + Bold: { + fontFamily: fontStyles.PoppingSemiBold + }, + Bolder: { + fontFamily: fontStyles.PoppinBold + }, + Center: { + textAlign: 'center' + }, + Right: { + textAlign: 'right' + }, + UpperCase: { + textTransform: 'uppercase' + }, + LineOver: { + textDecorationLine: 'line-through' + } +} diff --git a/CustomerApp/src/utils/useAppTrackingTransparency.js b/CustomerApp/src/utils/useAppTrackingTransparency.js new file mode 100644 index 0000000..9ee960d --- /dev/null +++ b/CustomerApp/src/utils/useAppTrackingTransparency.js @@ -0,0 +1,13 @@ +import { + requestTrackingPermissionsAsync, + getTrackingPermissionsAsync +} from 'expo-tracking-transparency' + +export const requestTrackingPermissions = async() => { + const { status } = await requestTrackingPermissionsAsync() + return status +} +export const getTrackingPermissions = async() => { + const { status } = await getTrackingPermissionsAsync() + return status +} diff --git a/CustomerApp/translations/de.js b/CustomerApp/translations/de.js new file mode 100644 index 0000000..7526468 --- /dev/null +++ b/CustomerApp/translations/de.js @@ -0,0 +1,140 @@ +export const de = { + home: 'Home', + title0: 'Gewählte Sprache', + subtitle0: 'English', + description0: + 'Wählen Sie eine Sprache Ihrer Wahl, um den Inhalt der App in die gewünschte Sprache zu ändern.', + title1: 'Lecker', + subtitle1: 'Frühstück', + description1: + 'Frühstück ist alles. Der Anfang, das Erste. Es ist der Mundvoll, der die Verpflichtung zu einem neuen Tag, einem fortwährenden Leben ist.', + title2: 'Erfrischend', + subtitle2: 'Getränke', + description2: + 'Wahre Stille ist der Rest des Geistes und ist für den Geist das, was Schlaf für den Körper ist, Nahrung und Erfrischung.', + title3: 'Köstlich', + subtitle3: 'Eis', + description3: + 'Das Alter mindert nicht die extreme Enttäuschung darüber, dass eine Kugel Eis vom Kegel fällt', + getStarted: 'Loslegen!', + welcome: + 'Willkommen bei Enatega, manchmal brauchen Sie nur Liebe. Aber ein bisschen Essen tut ab und zu nicht weh.', + loginBtn: 'Anmeldung', + registerBtn: 'Registrieren', + name: 'Name', + phone: 'Telefon', + email: 'Email', + emailphone: 'E-Mail oder Telefon', + password: 'Passwort', + deliveryAddress: 'Lieferadresse', + fullDeliveryAddress: 'Ihre vollständige Lieferadresse', + deliveryDetails: 'Erforderliche Angaben, z. Boden / Gebäude', + myAddresses: 'Meine Adressen', + addAddress: 'Neue Adressen hinzufügen', + editAddress: 'Adresse bearbeiten', + registerText: 'Oder registriere dich bei', + forgotPassword: 'Passwort vergessen?', + loginText: 'Oder Einloggen mit', + deliveryLocation: + 'Stellen Sie Ihren Lieferort so ein, dass wir Ihnen einen unendlichen Geschmack köstlichen Essens zusenden können.', + locationBtn: 'Standort einschalten', + locationPermissionDenied: + 'Die Berechtigung zum Zugriff auf den Speicherort wurde verweigert', + locationOff: 'Ort einschalten und erneut versuchen', + titleLanguage: 'Sprache ändern', + titleMenu: 'Speisekarte', + titleOrders: 'meine Bestellungen', + titleNotifications: 'Benachrichtigungen', + titleReviews: 'Bewertungen', + titleProfile: 'Profiel', + titleHelp: 'Hilfe', + titleChat: 'Plaudern', + titleLogout: 'Ausloggen', + titleCart: 'Mein Warenkorb', + titlePayment: 'Zahlung', + totalOrderAmount: 'Gesamtbestellmenge', + reOrder: 'Nachbestellen', + unReadNotifications: 'Keine ungelesenen Benachrichtigungen', + upload: 'Hochladen', + saveBtn: 'sparen', + saveContBtn: 'SPEICHERN UND FORTFAHREN', + emailUs: 'Mailen Sie uns an', + question1: 'Wo finden wir das Essen?', + question2: 'Wie treten wir in Kontakt?', + question3: 'Wie kann ich den Zusteller bezahlen?', + question4: 'Ist der Dienst in meiner Stadt verfügbar?', + answer1: + 'Sie finden das Essen in einem Geschäft in Ihrer Nähe, ohne den Kundenservice zu belasten. Unsere Gebühren sind im Vergleich zu anderen extrem niedrig.', + answer2: + 'Sie können uns über unsere E-Mail, Telefonnummer oder unsere Website kontaktieren.', + answer3: + 'Sie können den Zusteller persönlich bezahlen oder auch online mit Kredit- oder Debitkarte bezahlen.', + answer4: + 'Derzeit ist dieser Service in den Städten Islamabad und Karachi verfügbar. Sie können uns kontaktieren, um diesen Service in Ihrer Stadt in Anspruch zu nehmen.', + add: 'HINZUFÜGEN', + quantity: 'Menge', + size: 'Größe', + addToCart: 'in den Warenkorb legen', + orderNow: 'Jetzt bestellen', + addToCartMessage: 'Zum Warenkorb hinzugefügt', + emptyCart: 'Keine Artikel im Warenkorb', + itemTotal: 'Artikel Gesamt', + delvieryCharges: 'Versandkosten', + total: 'Gesamt', + contactInfo: 'Kontaktinformation', + deliveryAddressmessage: 'Lieferadresse einstellen', + proceedCheckout: 'Zur Kasse', + paymentText: 'Wie möchten Sie bezahlen?', + checkout: 'Auschecken', + creditCard: 'Kreditkarte Debitkarte', + paypal: 'Paypal', + cod: 'Nachnahme', + thankYou: 'Danke dir!', + orderConfirmed: 'Ihre Bestellung wird bestätigt', + orderId: 'Ihre Bestellnummer', + orderAmount: 'Ihre Bestellmenge', + orderDetail: 'Bestelldetails', + paymentMethod: 'Zahlungsmethode', + trackOrder: 'Versandverfolgung', + backToMenu: 'Zurück zum Menü', + foodItem: 'Essensgegenstand', + deliveredTo: 'Geliefert an', + writeAReview: 'Eine Rezension schreiben', + orderReceived: 'Bestellung erhalten', + cancelled: 'Abgebrochen', + foodPreparing: 'Essen wird zubereitet', + delivered: 'Geliefert', + rateAndReview: 'Bewerten und bewerten', + reviewPlaceholder: 'Detaillierte Bewertungen erhalten mehr Sichtbarkeit ...', + submit: 'einreichen', + noWorriesText: 'Keine Sorge, lassen Sie sich von uns helfen!', + yourEmail: 'Deine E-Mail', + send: 'Senden', + checkEmail: + 'Überprüfen Sie Ihre E-Mail-Adresse auf den Link zum Zurücksetzen des Kennworts', + languageText: 'Bitte wählen Sie Ihre gewünschte Sprache', + countryCodePickerTranslation: 'deu', + countryCodeSelect: 'Ländercode auswählen', + paymentNotSupported: 'Diese Zahlungsmethode unterstützt diese Währung nicht', + unReadReviews: 'Noch keine Bewertungen!', + unReadOrders: 'Noch keine Bestellungen!', + error: 'Error', + noMoreItems: 'Keine Artikel mehr auf Lager', + hungry: 'Hungrig', + emptyCartBtn: 'Zurück zum Essen', + subTotal: 'Zwischensumme', + deliveryFee: 'Liefergebühr', + haveVoucher: 'Hast du einen Gutschein?', + remove: 'Entfernen', + change: 'Veränderung', + condition1: + 'Mit Abschluss dieser Bestellung stimme ich allen Allgemeinen Geschäftsbedingungen zu.', + condition2: + 'Ich bin damit einverstanden und fordere Sie auf, den bestellten Service vor Ablauf der Widerrufsfrist auszuführen. Mir ist bekannt, dass ich nach vollständiger Erfüllung der Leistung mein Rücktrittsrecht verliere.', + orderBtn: 'Bestellung aufgeben', + coupanApply: 'Gutscheinrabatt angewendet', + coupanFailed: 'Gutschein nicht verfügbar', + invalidCoupan: 'Ungültiger Gutschein', + validateItems: 'Artikel vor dem Auschecken in den Warenkorb legen', + validateDelivery: 'Stellen Sie die Lieferadresse vor dem Auschecken ein' +} diff --git a/CustomerApp/translations/en.js b/CustomerApp/translations/en.js new file mode 100644 index 0000000..91c00e8 --- /dev/null +++ b/CustomerApp/translations/en.js @@ -0,0 +1,143 @@ +export const en = { + home: 'Home', + title0: 'Selected Language', + subtitle0: 'English', + description0: + 'Select any language of your choice to change the content of the app to your required language.', + title1: 'Tasty', + subtitle1: 'BreakFast', + description1: + 'Breakfast is everything. The beginning, the first thing. It is the mouthful that is the commitment to a new day, a continuing life.', + title2: 'Refreshing', + subtitle2: 'Drinks', + description2: + 'True silence is the rest of the mind, and is to the spirit what sleep is to the body, nourishment and refreshment.', + title3: 'Delicous', + subtitle3: 'Icecream', + description3: + 'Age does not diminish the extreme disappointment of having a scoop of ice cream fall from the cone', + getStarted: 'Get Started!', + welcome: + "Welcome to Enatega, sometimes all you need is love. But a little food now and then doesn't hurt.", + loginBtn: 'Login', + registerBtn: 'Register', + name: 'Name', + phone: 'Phone Number', + email: 'Email', + emailphone: 'Email or Phone', + password: 'Password', + deliveryAddress: 'Delivery Address', + fullDeliveryAddress: 'Your full delivery address', + deliveryDetails: 'Required details -e.g. floor/ building', + myAddresses: 'My Addresses', + addAddress: 'Add Address', + editAddress: 'Edit Address', + registerText: 'Or Register With', + forgotPassword: 'Forgot Password?', + loginText: 'Or Login With', + deliveryLocation: + 'Turn on location so we could send you endless taste of delicious food.', + locationBtn: 'Turn on Location', + locationPermissionDenied: 'Permission to access location was denied', + cameraRollPermissionDenied: 'Permission to access Camera Roll was denied', + locationOff: 'Turn on location and try again', + titleLanguage: 'Change Language', + titleMenu: 'Menu', + titleOrders: 'My Orders', + titleNotifications: 'Notifications', + titleReviews: 'Reviews', + titleProfile: 'Profile', + titleSettings: 'Settings', + titleHelp: 'Help', + titleChat: 'Chat', + titleLogout: 'Logout', + titleCart: 'My Cart', + titlePayment: 'Payment', + totalOrderAmount: 'Total Order Amount', + reOrder: 'Reorder', + unReadNotifications: 'No unread notifications', + upload: 'Upload', + saveBtn: 'Save Changes', + saveContBtn: 'SAVE AND CONTINUE', + emailUs: 'Email us at', + question1: 'Where do we find the food?', + question2: 'How do we contact?', + question3: 'How can I pay the delivery person?', + question4: 'Is the service available in my city?', + answer1: + 'You can find the food at your nearest store without paying anything to customer service.Our charges are extremely low as compared to others.', + answer2: 'You can contact us through our email, phone number or our website.', + answer3: + 'You can pay the delivery person in person or pay online as well through credit or debit card.', + answer4: + 'Currently this service is available in cities Islamabad and Karachi you can contact us to avail this service in your city.', + add: 'ADD', + quantity: 'Quantity', + size: 'Size', + addToCart: 'Add to Cart', + orderNow: 'Order Now', + addToCartMessage: 'Added to cart', + emptyCart: 'No items in cart', + itemTotal: 'Item Total', + delvieryCharges: 'Delivery Charges', + total: 'Total', + contactInfo: 'Contact Info', + deliveryAddressmessage: 'Set delivery address', + proceedCheckout: 'Proceed to Checkout', + paymentText: 'How do you wish to pay?', + checkout: 'Checkout', + creditCart: 'Credit Card/Debit Card', + paypal: 'Paypal', + cod: 'Cash on delivery', + thankYou: 'Thank You!', + orderConfirmed: 'Your Order is confirmed', + orderId: 'Your Order Id', + orderAmount: 'Your Order Amount', + orderDetail: 'Order Detail', + paymentMethod: 'Payment Method', + trackOrder: 'Track Order', + backToMenu: 'Back To Menu', + foodItem: 'Food item', + deliveredTo: 'Delivered to', + writeAReview: 'Write a Review', + orderReceived: 'Order Received', + orderPicked: 'Your order is on its way', + orderDelivered: 'Delivered', + completed: 'Completed', + cancelled: 'Cancelled', + orderPreparing: 'Your order is being prepared', + delivered: 'Delivered', + rateAndReview: 'Rate and Review', + reviewPlaceholder: 'More detailed reviews get more visibility...', + submit: 'Submit', + noWorriesText: 'No worries, let us help you out!', + yourEmail: 'Your Email', + send: 'Send', + apply: 'Apply', + checkEmail: 'Check your email for reset password link', + languageText: 'Please select your required language', + countryCodePickerTranslation: 'eng', + countryCodeSelect: 'Select Country Code', + paymentNotSupported: 'This payment method does not support this Currency', + loginOrCreateAccount: 'Login/Create Account', + unReadReviews: 'No Reviews Yet!', + unReadOrders: 'No Orders Yet!', + error: 'Error', + noMoreItems: 'No more items in stock', + hungry: 'Hungry', + emptyCartBtn: 'Back to Food', + subTotal: 'SubTotal', + deliveryFee: 'Delivery Fee', + haveVoucher: 'Do you have a voucher', + remove: 'Remove', + change: 'Change', + condition1: 'By completing this order, I agree to all Terms & Conditions.', + condition2: + 'I agree and I demand that you execute the ordered service before the end of the revocation period. I am aware that after complete fulfillment of the service I lose my right of rescission.', + orderBtn: 'Place order', + coupanApply: 'Coupon discount applied', + coupanFailed: 'Coupon Unavailable', + invalidCoupan: 'Invalid Coupon', + validateItems: 'Add items to cart before checkout', + validateDelivery: 'Set delivery address before checkout' +} diff --git a/CustomerApp/translations/fr.js b/CustomerApp/translations/fr.js new file mode 100644 index 0000000..4d680f7 --- /dev/null +++ b/CustomerApp/translations/fr.js @@ -0,0 +1,141 @@ +export const fr = { + home: 'Home', + title0: 'Langue sélectionnée', + subtitle0: 'English', + description0: + "Sélectionnez la langue de votre choix pour modifier le contenu de l'application dans la langue de votre choix.", + title1: 'Savoureux', + subtitle1: 'Petit déjeuner', + description1: + "Le petit déjeuner est tout. Le début, la première chose. C'est la bouchée qui est l'engagement pour un nouveau jour, une vie continue.", + title2: 'Rafraîchissant', + subtitle2: 'Boissons', + description2: + "Le vrai silence est le reste de l'esprit, et à l'esprit ce que le sommeil est pour le corps, nourriture et rafraîchissement.", + title3: 'Délicieux', + subtitle3: 'Crème glacée', + description3: + "L'âge ne diminue en rien l'extrême déception d'avoir une boule de glace tombée du cône.", + getStarted: 'Commencer!', + welcome: + "Bienvenue dans Enatega, parfois tout ce dont vous avez besoin est de l'amour. Mais un peu de nourriture maintenant et ensuite ne fait pas mal.", + loginBtn: "S'identifier", + registerBtn: 'registre', + name: 'prénom', + phone: 'Téléphone', + email: 'Email', + emailphone: 'Email ou téléphone', + password: 'Mot de passe', + deliveryAddress: 'Adresse de livraison', + fullDeliveryAddress: 'Votre adresse de livraison complète', + deliveryDetails: 'Détails requis -e.g. étage / bâtiment', + myAddresses: 'Mes adresses', + addAddress: 'Ajouter une nouvelle adresse', + editAddress: "Modifier l'adresse", + registerText: "Ou s'inscrire avec", + forgotPassword: 'Mot de passe oublié?', + loginText: 'Ou connectez-vous avec', + deliveryLocation: + 'Définissez votre lieu de livraison afin que nous puissions vous envoyer un goût infini de plats délicieux.', + locationBtn: "Activer l'emplacement", + locationPermissionDenied: + "La permission d'accéder à l'emplacement a été refusée", + locationOff: "Activer l'emplacement et réessayer", + titleLanguage: 'Changer de langue', + titleMenu: 'Menu', + titleOrders: 'Mes commandes', + titleNotifications: 'Les notifications', + titleReviews: 'Avis', + titleProfile: 'Profil', + titleHelp: 'Aidez-moi', + titleChat: 'Bavarder', + titleLogout: 'Connectez - Out', + titleCart: 'Mon panier', + titlePayment: 'Paiement', + totalOrderAmount: 'Total de la commande', + reOrder: 'Réorganiser', + unReadNotifications: 'Pas de notifications non lues', + upload: 'Télécharger', + saveBtn: 'sauvegarder', + saveContBtn: 'SAUVEGARDER ET CONTINUER', + emailUs: 'écrivez-nous à', + question1: 'Où trouvons-nous la nourriture?', + question2: 'Comment pouvons-nous contacter?', + question3: 'Comment puis-je payer le livreur?', + question4: 'Le service est-il disponible dans ma ville?', + answer1: + 'Vous pouvez trouver la nourriture dans le magasin le plus proche sans rien payer au service client. Nos frais sont extrêmement bas comparés aux autres.', + answer2: + 'Vous pouvez nous contacter via notre email, numéro de téléphone ou notre site web.', + answer3: + 'Vous pouvez payer le livreur en personne ou en ligne, par carte de crédit ou de débit.', + answer4: + "Actuellement, ce service est disponible dans les villes d'Islamabad et de Karachi. Vous pouvez nous contacter pour bénéficier de ce service dans votre ville.", + add: 'AJOUTER', + quantity: 'Quantité', + size: 'Taille', + addToCart: 'Ajouter au panier', + orderNow: 'Commandez maintenant', + addToCartMessage: 'Ajouté au panier', + emptyCart: 'Aucun article dans le panier', + itemTotal: 'Objet total', + delvieryCharges: 'Frais de livraison', + total: 'Total', + contactInfo: 'Informations de contact', + deliveryAddressmessage: "Définir l'adresse de livraison", + proceedCheckout: 'Passer à la caisse', + paymentText: 'Comment souhaitez-vous payer?', + checkout: 'Check-out', + creditCard: 'Carte de crédit carte de débit', + paypal: 'Pay Pal', + cod: 'Paiement à la livraison', + thankYou: 'Je vous remercie!', + orderConfirmed: 'Votre commande est confirmée', + orderId: 'Votre identifiant de commande', + orderAmount: 'Le montant de votre commande', + orderDetail: 'Détails de la commande', + paymentMethod: 'Mode de paiement', + trackOrder: 'Suivi de commande', + backToMenu: 'Suivi de commande', + foodItem: 'Produit alimentaire', + deliveredTo: 'livré à', + writeAReview: 'Écrire une critique', + orderReceived: 'Ordre reçu', + cancelled: 'Annulé', + foodPreparing: 'La nourriture est en cours de préparation', + delivered: 'Livré', + rateAndReview: 'Notez et évaluez', + reviewPlaceholder: 'Des revues plus détaillées ont plus de visibilité ...', + submit: 'Soumettre', + noWorriesText: 'Pas de soucis, laissez-nous vous aider!', + yourEmail: 'Votre email', + send: 'Envoyer', + checkEmail: + 'Vérifiez votre email pour le lien de réinitialisation du mot de passe', + languageText: "S'il vous plaît sélectionnez votre langue requise", + countryCodePickerTranslation: 'fra', + countryCodeSelect: 'Sélectionnez le code pays', + paymentNotSupported: + 'Ce mode de paiement ne prend pas en charge cette devise', + unReadReviews: "Pas encore d'avis!", + unReadOrders: 'Pas de commande pour le moment!', + error: 'Erreur', + noMoreItems: "Plus d'articles en stock", + hungry: 'Faim', + emptyCartBtn: 'Retour à la nourriture', + subTotal: 'Total', + deliveryFee: 'Frais de livraison', + haveVoucher: 'Avez-vous un bon', + remove: 'Retirer', + change: 'Changement', + condition1: + "En remplissant cette commande, j'accepte toutes les conditions générales.", + condition2: + "J'accepte et je vous demande d'exécuter le service commandé avant la fin de la période de révocation. Je suis conscient qu'après l'accomplissement complet du service, je perds mon droit de résolution.", + orderBtn: 'Passer la commande', + coupanApply: 'Remise de coupon appliquée', + coupanFailed: 'Coupon non disponible', + invalidCoupan: 'Coupon non valide', + validateItems: 'Ajouter des articles au panier avant le paiement', + validateDelivery: "Définir l'adresse de livraison avant le paiement" +} diff --git a/CustomerApp/translations/km.js b/CustomerApp/translations/km.js new file mode 100644 index 0000000..6cd9087 --- /dev/null +++ b/CustomerApp/translations/km.js @@ -0,0 +1,136 @@ +export const km = { + home: 'Home', + title0: 'ភាសាដែលបានជ្រើស', + subtitle0: 'English', + description0: + 'ជ្រើសរើសភាសាណាមួយនៃជម្រើសរបស់អ្នកដើម្បីប្តូរមាតិកានៃកម្មវិធីទៅភាសាដែលអ្នកត្រូវការ។', + title1: 'ហ៊ាន', + subtitle1: 'អាហារពេលព្រឹក', + description1: + 'អាហារពេលព្រឹកគឺជាអ្វីគ្រប់យ៉ាង។ ការចាប់ផ្តើមរឿងដំបូង។ វាគឺជាមាត់ដែលជាការប្តេជ្ញាចិត្តចំពោះថ្ងៃថ្មីនិងជីវិតដែលនៅតែបន្ត។', + title2: 'ធ្វើឱ្យស្រស់', + subtitle2: 'ភេសជ្ជៈ', + description2: + 'ភាពស្ងៀមស្ងាត់ពិតគឺជាគំនិតដែលនៅសល់ហើយជាវិញ្ញាណដែលជាការដេកលក់ដល់រាងកាយការថែទាំនិងការសំរាក។', + title3: 'ឆ្ងាញ់', + subtitle3: 'ការ៉េម', + description3: + 'អាយុមិនបន្ថយនូវការខកចិត្តយ៉ាងខ្លាំងនៃការធ្លាក់ចុះនៃការ៉េមពីកោណទេ', + getStarted: 'ចាប់ផ្ដើម!', + welcome: + 'សូមស្វាគមន៏ទៅ Enatega ពេលខ្លះអ្វីដែលអ្នកត្រូវការគឺស្នេហា។ ប៉ុន្តែអាហារតិចតួចឥឡូវនេះហើយបន្ទាប់មកមិនឈឺទេ។', + loginBtn: 'ចូល', + registerBtn: 'ចុះឈ្មោះ', + name: 'ឈ្មោះ', + phone: 'ទូរស័ព្ទ', + email: 'អ៊ីមែល', + emailphone: 'អី​ុ​ម៉ែ​ល​ឬ​ទូរស័ព្ទ', + password: 'ពាក្យសម្ងាត់', + deliveryAddress: 'អាស័យ​ដ្ឋាន​សំរាប់​ការ​ដឹកជញ្ជូន', + fullDeliveryAddress: 'អាសយដ្ឋានចែកចាយពេញរបស់អ្នក', + deliveryDetails: 'ព័ត៌មានលម្អិតចាំបាច់ -e. ជាន់ / អាគារ', + myAddresses: 'អាស័យដ្ឋានរបស់ខ្ញុំ', + addAddress: 'បន្ថែមអាសយដ្ឋានថ្មី', + editAddress: 'កែសម្រួលអាសយដ្ឋាន', + registerText: 'ឬចុះឈ្មោះជាមួយ', + forgotPassword: 'ភ្លេច​លេខសំងាត់​?', + loginText: 'ឬចូលជាមួយ', + deliveryLocation: + 'កំណត់ទីតាំងដឹកជញ្ជូនរបស់អ្នកដូច្នេះយើងអាចផ្ញើឱ្យអ្នកនូវរសជាតិអាហារឆ្ងាញ់គ្មានទីបញ្ចប់។', + locationBtn: 'បើកទីតាំង', + locationPermissionDenied: 'ការអនុញ្ញាតចូលទៅកាន់ទីតាំងត្រូវបានបដិសេធ', + locationOff: 'បើកទីតាំងហើយព្យាយាមម្តងទៀត', + titleLanguage: 'ប្ដូរ​ភាសា', + titleMenu: 'ម៉ឺនុយ', + titleOrders: 'ការបញ្ជាទិញរបស់ខ្ញុំ', + titleNotifications: 'ការជូនដំណឹង', + titleReviews: 'ពិនិត្យ', + titleProfile: 'ប្រវត្តិរូប', + titleHelp: 'ជំនួយ', + titleChat: 'ជជែក', + titleLogout: 'ចាកចេញ', + titleCart: 'កន្ត្រករបស់ខ្ញុំ', + titlePayment: 'ការទូទាត់', + totalOrderAmount: 'បរិមាណសរុប', + reOrder: 'តម្រៀបឡើងវិញ', + unReadNotifications: 'គ្មានការជូនដំណឹងមិនទាន់អាន', + upload: 'ផ្ទុកឡើង', + saveBtn: 'រក្សាទុក', + saveContBtn: 'រក្សាទុកនិងបន្ត', + emailUs: 'អ៊ីម៉ែលមកយើងនៅ', + question1: 'តើយើងរកម្ហូបបាននៅឯណា?', + question2: 'តើយើងទាក់ទងយ៉ាងដូចម្តេច?', + question3: 'តើខ្ញុំអាចបង់ប្រាក់ដល់មនុស្សដែលត្រូវដឹកជញ្ជូន?', + question4: 'តើសេវាកម្មនេះមាននៅក្នុងទីក្រុងរបស់ខ្ញុំដែរឬទេ?', + answer1: + 'អ្នកអាចរកឃើញម្ហូបអាហារនៅហាងដែលនៅជិតបំផុតរបស់អ្នកដោយមិនបង់អ្វីឱ្យសេវាកម្មបំរើអតិថិជន។ ការចោទប្រកាន់របស់យើងមានកម្រិតទាបខ្លាំងបើប្រៀបធៀបទៅនឹងអ្នកដទៃ។', + answer2: 'អ្នកអាចទាក់ទងយើងតាមរយៈអ៊ីម៉ែលលេខទូរស័ព្ទឬវេបសាយរបស់យើង។', + answer3: + 'អ្នកអាចបង់ប្រាក់ទៅកាន់បុគ្គលដឹកជញ្ជូនដោយផ្ទាល់ឬបង់ប្រាក់តាមរយៈអ៊ីនធឺណេតតាមរយៈប័ណ្ណឥណទានឬឥណពន្ធផងដែរ។', + answer4: + 'បច្ចុប្បន្នសេវាកម្មនេះអាចរកបាននៅក្នុងទីក្រុងអ៊ីស្លាម៉ាបាតនិងការ៉ាជីដែលអ្នកអាចទាក់ទងមកយើងដើម្បីទទួលបានសេវាកម្មនេះនៅក្នុងទីក្រុងរបស់អ្នក។', + add: 'បន្ថែម', + quantity: 'បរិមាណ', + size: 'ទំហំ', + addToCart: 'បន្ថែមទៅកន្ត្រក', + orderNow: 'បញ្ជាទិញឥឡូវ', + addToCartMessage: 'បានបន្ថែមទៅរទេះ', + emptyCart: 'គ្មានធាតុក្នុងរទេះទេ', + itemTotal: 'ធាតុសរុប', + delvieryCharges: 'ការដឹកជញ្ជូន', + total: 'សរុប', + contactInfo: 'ព័ត៌មានទំនាក់ទំនង', + deliveryAddressmessage: 'កំណត់អាសយដ្ឋានបញ្ជូន', + proceedCheckout: 'បន្តដើម្បីពិនិត្យចេញ', + paymentText: 'តើអ្នកចង់បង់ប្រាក់ដោយរបៀបណា?', + checkout: 'ពិនិត្យ​មុន​ពេល​ចេញ', + creditCard: 'ប័ណ្ណឥណទាន / ប័ណ្ណឥណពន្ធ', + paypal: 'Paypal', + cod: 'សាច់ប្រាក់នៅពេលប្រគល់', + thankYou: 'សូមអរគុណ!', + orderConfirmed: 'បញ្ជាទិញរបស់អ្នកត្រូវបានបញ្ជាក់', + orderId: 'លេខសម្គាល់លំដាប់របស់អ្នក', + orderAmount: 'ចំនួនទឹកប្រាក់នៃការបញ្ជាទិញរបស់អ្នក', + orderDetail: 'លំអិតលំដាប់', + paymentMethod: 'វិធី​សា​ស្រ្ត​ទូទាត់', + trackOrder: 'លំដាប់តាមបទ', + backToMenu: 'លំដាប់តាមបទ', + foodItem: 'ម្ហូបអាហារ', + deliveredTo: 'បញ្ជូនទៅ', + writeAReview: 'សរសេរ​សង្ខេប​ឡើងវិញ', + orderReceived: 'បញ្ជាទិញដែលទទួលបាន', + cancelled: 'បានបោះបង់', + foodPreparing: 'ម្ហូបកំពុងត្រូវបានរៀបចំ', + delivered: 'បានបញ្ជូន', + rateAndReview: 'វាយតម្លៃនិងពិនិត្យ', + reviewPlaceholder: 'ការពិនិត្យលម្អិតបន្ថែមទៀតទទួលបានភាពមើលឃើញកាន់តែច្រើន ...', + submit: 'ដាក់ស្នើ', + noWorriesText: 'គ្មានការព្រួយបារម្ភសូមឱ្យយើងជួយអ្នកចេញ!', + yourEmail: 'អ៊ីមែល​របស់​អ្នក', + send: 'ផ្ញើ', + checkEmail: 'ពិនិត្យអ៊ីមែលរបស់អ្នកសម្រាប់តំណពាក្យសម្ងាត់ឡើងវិញ', + languageText: 'សូមជ្រើសរើសភាសាដែលអ្នកត្រូវការ', + countryCodePickerTranslation: 'eng', + countryCodeSelect: 'ជ្រើសរើសលេខកូដប្រទេស', + paymentNotSupported: 'វិធីសាស្ត្រទូទាត់នេះមិនគាំទ្ររូបិយប័ណ្ណនេះទេ', + unReadReviews: 'មិនទាន់មានការពិនិត្យឡើងវិញទេ!', + unReadOrders: 'មិនទាន់មានការបញ្ជាទិញនៅឡើយទេ!', + error: 'កំហុស', + noMoreItems: 'មិនមានរបស់នៅក្នុងស្តុកទៀតទេ', + hungry: 'ឃ្លាន', + emptyCartBtn: 'ត្រឡប់ទៅអាហារ', + subTotal: 'SubTotal', + deliveryFee: 'ថ្លៃសេវាដឹកជញ្ជូន', + haveVoucher: 'តើអ្នកមានប័ណ្ណទូទាត់ទេ?', + remove: 'យកចេញ', + change: 'ផ្លាស់ប្តូរ', + condition1: 'ដោយបំពេញការបញ្ជាទិញនេះខ្ញុំយល់ព្រមនឹងល័ក្ខខ័ណ្ឌទាំងអស់។', + condition2: + 'ខ្ញុំយល់ព្រមហើយខ្ញុំទាមទារឱ្យអ្នកប្រតិបត្តិសេវាកម្មដែលបានបញ្ជាទិញមុនពេលចុងបញ្ចប់នៃរយៈពេលដកហូត។ ខ្ញុំដឹងថាបន្ទាប់ពីការបំពេញសេវាកម្មពេញលេញខ្ញុំបាត់បង់សិទ្ធិក្នុងការរំដោះខ្លួន។', + orderBtn: 'ដាក់បញ្ជាទិញ', + coupanApply: 'ការបញ្ចុះតម្លៃប័ណ្ណត្រូវបានអនុវត្ត', + coupanFailed: 'គូប៉ុងមិនមានទេ', + invalidCoupan: 'គូប៉ុងមិនត្រឹមត្រូវ', + validateItems: 'បន្ថែមរបស់របរទៅរទេះមុនពេលឆែក', + validateDelivery: 'កំណត់អាសយដ្ឋានដឹកជញ្ជូនមុនពេលពិនិត្យចេញ' +} diff --git a/CustomerApp/translations/zh.js b/CustomerApp/translations/zh.js new file mode 100644 index 0000000..bd3170a --- /dev/null +++ b/CustomerApp/translations/zh.js @@ -0,0 +1,132 @@ +export const zh = { + home: 'Home', + title0: '选定的语言', + subtitle0: 'English', + description0: '选择您选择的任何语言,将应用内容更改为您所需的语言。', + title1: '可口', + subtitle1: '早餐', + description1: + '早餐就是一切。一开始,第一件事。这是对新的一天,持续生活的承诺。', + title2: '清爽', + subtitle2: '饮料', + description2: + '真正的沉默是心灵的其余部分,对于精神来说,睡眠对身体,营养和茶点来说都是如此。', + title3: '美味的', + subtitle3: '冰淇淋', + description3: '年龄不会减少从冰锥中舀出一勺冰淇淋的极度失望', + getStarted: '开始吧!', + welcome: + '欢迎来到Enatega,有时您需要的只是爱。但是偶尔会有点食物不会受到伤害。', + loginBtn: '登录', + registerBtn: '寄存器', + name: '名称', + phone: '电话', + email: '电子邮件', + emailphone: '邮件或者电话', + password: '密码', + deliveryAddress: '邮寄地址', + fullDeliveryAddress: '您的完整收货地址', + deliveryDetails: '必填详细信息-例如 楼层/建筑物', + myAddresses: '我的地址', + addAddress: '添加新地址', + editAddress: '编辑地址', + registerText: '或注册', + forgotPassword: '忘记密码?', + loginText: '或登录', + deliveryLocation: '设置您的送货地点,以便我们可以向您发送无尽的美味食物。', + locationBtn: '打开位置', + locationPermissionDenied: '访问位置的权限被拒绝', + locationOff: '访问位置的权限被拒绝', + titleLanguage: '改变语言', + titleMenu: '菜单', + titleOrders: '我的订单', + titleNotifications: '通知', + titleReviews: '评测', + titleProfile: '轮廓', + titleHelp: '救命', + titleChat: '聊', + titleLogout: '登出', + titleCart: '我的车', + titlePayment: '付款', + totalOrderAmount: '总订单金额', + reOrder: '重新排序', + unReadNotifications: '没有未读通知', + upload: '上传', + saveBtn: '保存', + saveContBtn: '保存并继续', + emailUs: '给我们发电子邮件', + question1: '我们在哪里找到食物?', + question2: '我们如何联系?', + question3: '我该如何付款给送货人?', + question4: '我的城市有这项服务吗?', + answer1: + '您可以在离您最近的商店找到食物,而无需向客户支付任何费用。与其他人相比,我们的收费极低。', + answer2: '您可以通过我们的电子邮件,电话号码或我们的网站联系我们。', + answer3: '您可以亲自向付款人付款或使用信用卡或借记卡在线付款。', + answer4: + '目前,这项服务在伊斯兰堡和卡拉奇市提供,您可以联系我们以便在您所在的城市使用此服务。', + add: '加', + quantity: '数量', + size: '尺寸', + addToCart: '添加到购物车', + orderNow: '现在下单', + addToCartMessage: '已添加到购物车', + emptyCart: '购物车中没有商品', + itemTotal: '项目总计', + delvieryCharges: '送货费', + total: '总', + contactInfo: '联系信息', + deliveryAddressmessage: '设置送货地址', + proceedCheckout: '进行结算', + paymentText: '你想怎么付钱?', + checkout: '查看', + creditCard: '信用卡/借记卡', + paypal: '贝宝', + cod: '货到付款', + thankYou: 'ស谢谢!', + orderConfirmed: '您的订单已确认', + orderId: '您的订单ID', + orderAmount: '您的订单金额', + orderDetail: '订单详情', + paymentMethod: '付款方法', + trackOrder: '跟踪订单', + backToMenu: '跟踪订单', + foodItem: '食品', + deliveredTo: '送到了(送去了', + writeAReview: '写评论', + orderReceived: '订单已经收到', + cancelled: '取消', + foodPreparing: '食物正在准备中', + delivered: '交付', + rateAndReview: '打分和评论', + reviewPlaceholder: '更详细的评论获得更多可见性......', + submit: '提交', + noWorriesText: '不用担心,让我们帮帮你吧!', + yourEmail: '你的邮件', + send: '发送', + checkEmail: '查看您的电子邮件以重置密码链接', + languageText: '请选择您需要的语言', + countryCodePickerTranslation: 'zho', + countryCodeSelect: '选择国家代码', + paymentNotSupported: '此付款方式不支持此货币', + unReadReviews: '暂无评论!', + unReadOrders: '尚无订单!', + error: '错误', + noMoreItems: '库存不多', + hungry: '饥饿', + emptyCartBtn: '回到食物', + subTotal: '小计', + deliveryFee: '快递费', + haveVoucher: '你有优惠券吗', + remove: '去掉', + change: '更改', + condition1: '完成此订单,即表示我同意所有条款和条件。', + condition2: + '我同意,我要求您在吊销期结束之前执行订购的服务。 我知道,在完全完成服务后,我将失去撤销的权利。', + orderBtn: '下订单', + coupanApply: '优惠券折扣', + coupanFailed: '优惠券不可用', + invalidCoupan: '优惠券无效', + validateItems: '结帐前将商品添加到购物车', + validateDelivery: '结帐前设置送货地址' +}