From 87b7f76a9e8f8273e34f35fc189b66f47602c5fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Czernek?= Date: Fri, 29 Sep 2023 16:21:53 +0200 Subject: [PATCH 001/701] Add expo-modules to application. --- .gitignore | 5 + android/app/build.gradle | 5 + .../java/com/expensify/chat/MainActivity.java | 5 +- .../com/expensify/chat/MainApplication.java | 16 +- android/settings.gradle | 3 + ios/NewExpensify.xcodeproj/project.pbxproj | 186 ++++++++++++++++-- ios/NewExpensify/AppDelegate.h | 3 +- ios/Podfile | 9 + ios/Podfile.lock | 24 ++- metro.config.js | 3 +- package.json | 12 ++ 11 files changed, 242 insertions(+), 29 deletions(-) diff --git a/.gitignore b/.gitignore index d3b4daac04d7..a080cd995b3d 100644 --- a/.gitignore +++ b/.gitignore @@ -111,3 +111,8 @@ tsconfig.tsbuildinfo # Yalc .yalc yalc.lock + +# Expo +.expo +dist/ +web-build/ \ No newline at end of file diff --git a/android/app/build.gradle b/android/app/build.gradle index afe24fc37700..322e8295bcdd 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -50,6 +50,11 @@ react { // // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" // hermesFlags = ["-O", "-output-source-map"] + // + // Added by install-expo-modules + entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", rootDir.getAbsoluteFile().getParentFile().getAbsolutePath(), "android", "absolute"].execute(null, rootDir).text.trim()) + cliFile = new File(["node", "--print", "require.resolve('@expo/cli')"].execute(null, rootDir).text.trim()) + bundleCommand = "export:embed" } project.ext.envConfigFiles = [ diff --git a/android/app/src/main/java/com/expensify/chat/MainActivity.java b/android/app/src/main/java/com/expensify/chat/MainActivity.java index 2a56ea98ce85..e9f84039cf8a 100644 --- a/android/app/src/main/java/com/expensify/chat/MainActivity.java +++ b/android/app/src/main/java/com/expensify/chat/MainActivity.java @@ -1,4 +1,5 @@ package com.expensify.chat; +import expo.modules.ReactActivityDelegateWrapper; import android.os.Bundle; import android.content.pm.ActivityInfo; @@ -31,11 +32,11 @@ protected String getMainComponentName() { */ @Override protected ReactActivityDelegate createReactActivityDelegate() { - return new DefaultReactActivityDelegate( + return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate( this, getMainComponentName(), // If you opted-in for the New Architecture, we enable the Fabric Renderer. - DefaultNewArchitectureEntryPoint.getFabricEnabled()); + DefaultNewArchitectureEntryPoint.getFabricEnabled())); } @Override diff --git a/android/app/src/main/java/com/expensify/chat/MainApplication.java b/android/app/src/main/java/com/expensify/chat/MainApplication.java index a4f2bc97416d..d2d67eb978e8 100644 --- a/android/app/src/main/java/com/expensify/chat/MainApplication.java +++ b/android/app/src/main/java/com/expensify/chat/MainApplication.java @@ -1,4 +1,7 @@ package com.expensify.chat; +import android.content.res.Configuration; +import expo.modules.ApplicationLifecycleDispatcher; +import expo.modules.ReactNativeHostWrapper; import android.content.Context; import android.database.CursorWindow; @@ -23,7 +26,7 @@ public class MainApplication extends MultiDexApplication implements ReactApplication { private final ReactNativeHost mReactNativeHost = - new DefaultReactNativeHost(this) { + new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) { @Override public boolean getUseDeveloperSupport() { return BuildConfig.DEBUG; @@ -44,7 +47,7 @@ protected List getPackages() { @Override protected String getJSMainModuleName() { - return "index"; + return ".expo/.virtual-metro-entry"; } @Override @@ -56,7 +59,7 @@ protected boolean isNewArchEnabled() { protected Boolean isHermesEnabled() { return BuildConfig.IS_HERMES_ENABLED; } - }; + }); @Override public ReactNativeHost getReactNativeHost() { @@ -98,5 +101,12 @@ public void onCreate() { } catch (Exception e) { e.printStackTrace(); } + ApplicationLifecycleDispatcher.onApplicationCreate(this); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig); } } \ No newline at end of file diff --git a/android/settings.gradle b/android/settings.gradle index c2bb3db7845a..d9d1e903423c 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -25,3 +25,6 @@ includeBuild('../node_modules/react-native') { substitute(module("com.facebook.react:hermes-engine")).using(project(":packages:react-native:ReactAndroid:hermes-engine")) } } + +apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle") +useExpoModules() \ No newline at end of file diff --git a/ios/NewExpensify.xcodeproj/project.pbxproj b/ios/NewExpensify.xcodeproj/project.pbxproj index 64ed3fda8b02..9aa11897ed04 100644 --- a/ios/NewExpensify.xcodeproj/project.pbxproj +++ b/ios/NewExpensify.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -27,8 +27,10 @@ 7041848526A8E47D00E09F4D /* RCTStartupTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7041848426A8E47D00E09F4D /* RCTStartupTimer.m */; }; 7041848626A8E47D00E09F4D /* RCTStartupTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7041848426A8E47D00E09F4D /* RCTStartupTimer.m */; }; 70CF6E82262E297300711ADC /* BootSplash.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 70CF6E81262E297300711ADC /* BootSplash.storyboard */; }; + 7F5E81F06BCCF61AD02CEA06 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCD444BEDDB0AF1745B39049 /* ExpoModulesProvider.swift */; }; BDB853621F354EBB84E619C2 /* ExpensifyNewKansas-MediumItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = D2AFB39EC1D44BF9B91D3227 /* ExpensifyNewKansas-MediumItalic.otf */; }; DD79042B2792E76D004484B4 /* RCTBootSplash.m in Sources */ = {isa = PBXBuildFile; fileRef = DD79042A2792E76D004484B4 /* RCTBootSplash.m */; }; + DDCB2E57F334C143AC462B43 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D20D83B0E39BA6D21761E72 /* ExpoModulesProvider.swift */; }; E51DC681C7DEE40AEBDDFBFE /* BuildFile in Frameworks */ = {isa = PBXBuildFile; }; E9DF872D2525201700607FDC /* AirshipConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = E9DF872C2525201700607FDC /* AirshipConfig.plist */; }; ED222ED90E074A5481A854FA /* ExpensifyNeue-BoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8B28D84EF339436DBD42A203 /* ExpensifyNeue-BoldItalic.otf */; }; @@ -74,6 +76,7 @@ 432FF5842B766535509FC547 /* Pods-NewExpensify-NewExpensifyTests.debug adhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debug adhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debug adhoc.xcconfig"; sourceTree = ""; }; 44BF435285B94E5B95F90994 /* ExpensifyNewKansas-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNewKansas-Medium.otf"; path = "../assets/fonts/native/ExpensifyNewKansas-Medium.otf"; sourceTree = ""; }; 47D5DF3C6779D41BE70CD031 /* Pods-NewExpensify.releaseproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releaseproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releaseproduction.xcconfig"; sourceTree = ""; }; + 4D20D83B0E39BA6D21761E72 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-NewExpensify/ExpoModulesProvider.swift"; sourceTree = ""; }; 4E8BF7B08BA3181991BFCF4B /* Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig"; sourceTree = ""; }; 52796131E6554494B2DDB056 /* ExpensifyNeue-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNeue-Bold.otf"; path = "../assets/fonts/native/ExpensifyNeue-Bold.otf"; sourceTree = ""; }; 57DBBEDB9692E096D4BA0141 /* Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig"; sourceTree = ""; }; @@ -90,6 +93,7 @@ 8D3B36BF88E773E3C1A383FA /* Pods-NewExpensify.debug staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debug staging.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debug staging.xcconfig"; sourceTree = ""; }; 96552D489D9F09B6A5ABD81B /* Pods-NewExpensify-NewExpensifyTests.release production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.release production.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.release production.xcconfig"; sourceTree = ""; }; AEFE6CD54912D427D19133C7 /* libPods-NewExpensify.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NewExpensify.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + BCD444BEDDB0AF1745B39049 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-NewExpensify-NewExpensifyTests/ExpoModulesProvider.swift"; sourceTree = ""; }; BD6E1BA27D6ABE0AC9D70586 /* Pods-NewExpensify-NewExpensifyTests.release development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.release development.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.release development.xcconfig"; sourceTree = ""; }; BD8828A882E2D6B51362AAC3 /* Pods-NewExpensify.releaseadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releaseadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releaseadhoc.xcconfig"; sourceTree = ""; }; BF6A4C5167244B9FB8E4D4E3 /* ExpensifyNeue-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNeue-Italic.otf"; path = "../assets/fonts/native/ExpensifyNeue-Italic.otf"; sourceTree = ""; }; @@ -177,6 +181,23 @@ name = Frameworks; sourceTree = ""; }; + 3E1305958E607AC9E2CFA934 /* NewExpensify */ = { + isa = PBXGroup; + children = ( + 4D20D83B0E39BA6D21761E72 /* ExpoModulesProvider.swift */, + ); + name = NewExpensify; + sourceTree = ""; + }; + 4FE6CFCE5D64D3182AE71756 /* ExpoModulesProviders */ = { + isa = PBXGroup; + children = ( + 3E1305958E607AC9E2CFA934 /* NewExpensify */, + 9E03879A06387ACCA90A6C6A /* NewExpensifyTests */, + ); + name = ExpoModulesProviders; + sourceTree = ""; + }; 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( @@ -202,6 +223,7 @@ 2D16E6871FA4F8E400B85C8A /* Frameworks */, EC29677F0A49C2946A495A33 /* Pods */, A9EA265D209D4558995C9BD4 /* Resources */, + 4FE6CFCE5D64D3182AE71756 /* ExpoModulesProviders */, ); indentWidth = 2; sourceTree = ""; @@ -217,6 +239,14 @@ name = Products; sourceTree = ""; }; + 9E03879A06387ACCA90A6C6A /* NewExpensifyTests */ = { + isa = PBXGroup; + children = ( + BCD444BEDDB0AF1745B39049 /* ExpoModulesProvider.swift */, + ); + name = NewExpensifyTests; + sourceTree = ""; + }; A9EA265D209D4558995C9BD4 /* Resources */ = { isa = PBXGroup; children = ( @@ -275,6 +305,7 @@ buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "NewExpensifyTests" */; buildPhases = ( EA9511689FED50580B0F3DE7 /* [CP] Check Pods Manifest.lock */, + 04B99F6AA578E2A877802F05 /* [Expo] Configure project */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, @@ -297,6 +328,7 @@ buildPhases = ( 7E666D03089C35260C905B4A /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, + 5CF45ABA52C0BB0D7B9D139A /* [Expo] Configure project */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, @@ -399,7 +431,26 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export NODE_BINARY=node\nexport EXTRA_PACKAGER_ARGS=\"--sourcemap-output $(pwd)/../main.jsbundle.map\"\n\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; + shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios relative | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli')\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n"; + }; + 04B99F6AA578E2A877802F05 /* [Expo] Configure project */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "[Expo] Configure project"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-NewExpensify-NewExpensifyTests/expo-configure-project.sh\"\n"; }; 3792B4E76B24FC8F78B7FEB6 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; @@ -469,6 +520,25 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-resources.sh\"\n"; showEnvVarsInLog = 0; }; + 5CF45ABA52C0BB0D7B9D139A /* [Expo] Configure project */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + name = "[Expo] Configure project"; + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-NewExpensify/expo-configure-project.sh\"\n"; + }; 5E34288ECB69FCFA24851234 /* [CP-User] [RNFB] Core Configuration */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -624,7 +694,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n"; + shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\nexport RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > `$NODE_BINARY --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\"`\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open `$NODE_BINARY --print \"require('path').dirname(require.resolve('expo/package.json')) + '/scripts/launchPackager.command'\"` || echo \"Can't start packager automatically\"\n fi\nfi\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -637,6 +707,7 @@ 0F5E5351263B73FD004CA14F /* EnvironmentChecker.m in Sources */, 0CDA8E35287DD650004ECBEC /* AppDelegate.mm in Sources */, 7041848626A8E47D00E09F4D /* RCTStartupTimer.m in Sources */, + 7F5E81F06BCCF61AD02CEA06 /* ExpoModulesProvider.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -651,6 +722,7 @@ DD79042B2792E76D004484B4 /* RCTBootSplash.m in Sources */, 0CDA8E34287DD650004ECBEC /* AppDelegate.mm in Sources */, 13B07FC11A68108700A75B9A /* main.m in Sources */, + DDCB2E57F334C143AC462B43 /* ExpoModulesProvider.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -678,12 +750,17 @@ ); INFOPLIST_FILE = NewExpensifyTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", "$(inherited)", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; @@ -701,12 +778,17 @@ DEVELOPMENT_TEAM = 368M544MTT; INFOPLIST_FILE = NewExpensifyTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", "$(inherited)", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; @@ -728,13 +810,17 @@ ENABLE_BITCODE = NO; INFOPLIST_FILE = "$(SRCROOT)/NewExpensify/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); MARKETING_VERSION = 1.0.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = com.expensify.chat.dev; PRODUCT_NAME = "New Expensify Dev"; PROVISIONING_PROFILE_SPECIFIER = expensify_chat_dev; @@ -759,13 +845,17 @@ DEVELOPMENT_TEAM = 368M544MTT; INFOPLIST_FILE = NewExpensify/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); MARKETING_VERSION = 1.0.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.expensify.chat.dev; PRODUCT_NAME = "New Expensify Dev"; PROVISIONING_PROFILE_SPECIFIER = expensify_chat_dev; @@ -824,7 +914,10 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = ( "$(SDKROOT)/usr/lib/swift", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", @@ -882,7 +975,10 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = ( "$(SDKROOT)/usr/lib/swift", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", @@ -948,7 +1044,10 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = ( "$(SDKROOT)/usr/lib/swift", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", @@ -979,13 +1078,17 @@ ENABLE_BITCODE = NO; INFOPLIST_FILE = "$(SRCROOT)/NewExpensify/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); MARKETING_VERSION = 1.0.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = com.chat.expensify.chat; PRODUCT_NAME = "New Expensify"; PROVISIONING_PROFILE_SPECIFIER = chat_expensify_appstore; @@ -1009,12 +1112,17 @@ ); INFOPLIST_FILE = NewExpensifyTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", "$(inherited)", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; @@ -1070,7 +1178,10 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = ( "$(SDKROOT)/usr/lib/swift", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", @@ -1101,13 +1212,17 @@ ENABLE_BITCODE = NO; INFOPLIST_FILE = "$(SRCROOT)/NewExpensify/Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); MARKETING_VERSION = 1.0.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = com.expensify.chat.adhoc; PRODUCT_NAME = "New Expensify AdHoc"; PROVISIONING_PROFILE_SPECIFIER = chat_expensify_appstore; @@ -1131,12 +1246,17 @@ ); INFOPLIST_FILE = NewExpensifyTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", "$(inherited)", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; @@ -1185,7 +1305,10 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = ( "$(SDKROOT)/usr/lib/swift", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", @@ -1216,13 +1339,17 @@ DEVELOPMENT_TEAM = 368M544MTT; INFOPLIST_FILE = NewExpensify/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); MARKETING_VERSION = 1.0.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.chat.expensify.chat; PRODUCT_NAME = "New Expensify"; PROVISIONING_PROFILE_SPECIFIER = chat_expensify_appstore; @@ -1243,12 +1370,17 @@ DEVELOPMENT_TEAM = 368M544MTT; INFOPLIST_FILE = NewExpensifyTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", "$(inherited)", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; @@ -1297,7 +1429,10 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 16.1; - LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + ); LIBRARY_SEARCH_PATHS = ( "$(SDKROOT)/usr/lib/swift", "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"", @@ -1328,13 +1463,17 @@ DEVELOPMENT_TEAM = 368M544MTT; INFOPLIST_FILE = NewExpensify/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 13.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); MARKETING_VERSION = 1.0.0; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", "-lc++", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = com.expensify.chat.adhoc; PRODUCT_NAME = "New Expensify AdHoc"; PROVISIONING_PROFILE_SPECIFIER = chat_expensify_appstore; @@ -1355,12 +1494,17 @@ DEVELOPMENT_TEAM = 368M544MTT; INFOPLIST_FILE = NewExpensifyTests/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 11.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); OTHER_LDFLAGS = ( "-ObjC", "-lc++", "$(inherited)", ); + OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; diff --git a/ios/NewExpensify/AppDelegate.h b/ios/NewExpensify/AppDelegate.h index 5d2808256ca0..a7ebb518adca 100644 --- a/ios/NewExpensify/AppDelegate.h +++ b/ios/NewExpensify/AppDelegate.h @@ -1,6 +1,7 @@ #import +#import #import -@interface AppDelegate : RCTAppDelegate +@interface AppDelegate : EXAppDelegateWrapper @end diff --git a/ios/Podfile b/ios/Podfile index b30510572448..0e5bb28c13a8 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,3 +1,4 @@ +require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking") # Set the type of Mapbox SDK to use # This value is used by $RNMapboxMaps $RNMapboxMapsImpl = 'mapbox' @@ -51,6 +52,14 @@ pre_install do |installer| end target 'NewExpensify' do + use_expo_modules! + post_integrate do |installer| + begin + expo_patch_react_imports!(installer) + rescue => e + Pod::UI.warn e + end + end permissions_path = '../node_modules/react-native-permissions/ios' project 'NewExpensify', diff --git a/ios/Podfile.lock b/ios/Podfile.lock index ba53d939e46c..7c600ad42316 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -31,6 +31,16 @@ PODS: - React-Core - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) + - EXApplication (5.3.1): + - ExpoModulesCore + - Expo (49.0.13): + - ExpoModulesCore + - ExpoModulesCore (1.5.11): + - RCT-Folly (= 2021.07.22.00) + - React-Core + - React-NativeModulesApple + - React-RCTAppDelegate + - ReactCommon/turbomodule/core - FBLazyVector (0.72.4) - FBReactNativeSpec (0.72.4): - RCT-Folly (= 2021.07.22.00) @@ -837,6 +847,9 @@ DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - BVLinearGradient (from `../node_modules/react-native-linear-gradient`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - EXApplication (from `../node_modules/expo-application/ios`) + - Expo (from `../node_modules/expo`) + - ExpoModulesCore (from `../node_modules/expo-modules-core`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - Flipper (= 0.182.0) @@ -1002,6 +1015,12 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-linear-gradient" DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + EXApplication: + :path: "../node_modules/expo-application/ios" + Expo: + :path: "../node_modules/expo" + ExpoModulesCore: + :path: "../node_modules/expo-modules-core" FBLazyVector: :path: "../node_modules/react-native/Libraries/FBLazyVector" FBReactNativeSpec: @@ -1182,6 +1201,9 @@ SPEC CHECKSUMS: BVLinearGradient: 421743791a59d259aec53f4c58793aad031da2ca CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 + EXApplication: 042aa2e3f05258a16962ea1a9914bf288db9c9a1 + Expo: e7d2116b947e2e6fdeb09ee4f2754f819426d1b6 + ExpoModulesCore: 51cb2e7ab4c8da14be3f40b66d54c1781002e99d FBLazyVector: 5d4a3b7f411219a45a6d952f77d2c0a6c9989da5 FBReactNativeSpec: 3fc2d478e1c4b08276f9dd9128f80ec6d5d85c1f Firebase: 629510f1a9ddb235f3a7c5c8ceb23ba887f0f814 @@ -1309,6 +1331,6 @@ SPEC CHECKSUMS: Yoga: 3efc43e0d48686ce2e8c60f99d4e6bd349aff981 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: 2daf34c870819a933f3fefe426801d54b2ff2a14 +PODFILE CHECKSUM: e4e6295aeb3a92eb6e4239cb5cccb25af970c237 COCOAPODS: 1.12.1 diff --git a/metro.config.js b/metro.config.js index bf2ff904df70..30f609f8a223 100644 --- a/metro.config.js +++ b/metro.config.js @@ -1,4 +1,5 @@ -const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); +const { getDefaultConfig } = require('expo/metro-config'); +const { mergeConfig } = require('@react-native/metro-config'); const defaultAssetExts = require('metro-config/src/defaults/defaults').assetExts; const defaultSourceExts = require('metro-config/src/defaults/defaults').sourceExts; const _ = require('underscore'); diff --git a/package.json b/package.json index 3b88d603ba52..f317d761b9bb 100644 --- a/package.json +++ b/package.json @@ -94,6 +94,7 @@ "dom-serializer": "^0.2.2", "domhandler": "^4.3.0", "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#1609f1848cc0c2528064519c3ea48b4953a708ee", + "expo": "^49.0.0", "fbjs": "^3.0.2", "htmlparser2": "^7.2.0", "idb-keyval": "^6.2.1", @@ -277,6 +278,17 @@ "overrides": { "react-native": "$react-native" }, + "expo": { + "autolinking": { + "exclude": [ + "expo-constants", + "expo-file-system", + "expo-font", + "@react-native-google-signin/google-signin", + "expo-keep-awake" + ] + } + }, "electronmon": { "patterns": [ "!node_modules", From c279f8196c196ff69e2565058ed2ae43a533733c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Czernek?= Date: Fri, 29 Sep 2023 16:22:10 +0200 Subject: [PATCH 002/701] Update package-lock.json after adding expo-modules. --- ios/Podfile.lock | 4 +- package-lock.json | 50121 ++++++++++++++++++++++++-------------------- 2 files changed, 27955 insertions(+), 22170 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 7c600ad42316..5c952aae431c 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -736,7 +736,7 @@ PODS: - React-perflogger (= 0.72.4) - RNAppleAuthentication (2.2.2): - React-Core - - RNCAsyncStorage (1.17.11): + - RNCAsyncStorage (1.19.3): - React-Core - RNCClipboard (1.5.1): - React-Core @@ -1302,7 +1302,7 @@ SPEC CHECKSUMS: React-utils: b79f2411931f9d3ea5781404dcbb2fa8a837e13a ReactCommon: 4b2bdcb50a3543e1c2b2849ad44533686610826d RNAppleAuthentication: 0571c08da8c327ae2afc0261b48b4a515b0286a6 - RNCAsyncStorage: 8616bd5a58af409453ea4e1b246521bb76578d60 + RNCAsyncStorage: c913ede1fa163a71cea118ed4670bbaaa4b511bb RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495 RNCPicker: 0b65be85fe7954fbb2062ef079e3d1cde252d888 RNDateTimePicker: 7658208086d86d09e1627b5c34ba0cf237c60140 diff --git a/package-lock.json b/package-lock.json index 42755b09f8b6..0643e20c3eec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,6 +51,7 @@ "dom-serializer": "^0.2.2", "domhandler": "^4.3.0", "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#1609f1848cc0c2528064519c3ea48b4953a708ee", + "expo": "^49.0.0", "fbjs": "^3.0.2", "htmlparser2": "^7.2.0", "idb-keyval": "^6.2.1", @@ -870,7 +871,6 @@ }, "node_modules/@babel/plugin-proposal-decorators": { "version": "7.19.1", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.19.0", @@ -902,7 +902,6 @@ }, "node_modules/@babel/plugin-proposal-export-namespace-from": { "version": "7.18.9", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.9", @@ -1084,7 +1083,6 @@ }, "node_modules/@babel/plugin-syntax-decorators": { "version": "7.19.0", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.19.0" @@ -3528,6 +3526,526 @@ "react-dom": "^17.0.2 || ^18.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/cli": { + "version": "0.10.13", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.10.13.tgz", + "integrity": "sha512-8ciyz+yIDih6zCNMWK0IyEv411W7vej/TaWIFGarogPVbFokXrUKr0aKoQG1RU1SLlY4eUpHakbIzqog+rhJdQ==", + "dependencies": { + "@babel/runtime": "^7.20.0", + "@expo/code-signing-certificates": "0.0.5", + "@expo/config": "~8.1.0", + "@expo/config-plugins": "~7.2.0", + "@expo/dev-server": "0.5.5", + "@expo/devcert": "^1.0.0", + "@expo/env": "0.0.5", + "@expo/json-file": "^8.2.37", + "@expo/metro-config": "~0.10.0", + "@expo/osascript": "^2.0.31", + "@expo/package-manager": "~1.1.0", + "@expo/plist": "^0.0.20", + "@expo/prebuild-config": "6.2.6", + "@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", + "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", + "require-from-string": "^2.0.2", + "requireg": "^0.2.2", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "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", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1" + }, + "bin": { + "expo-internal": "build/bin/cli" + } + }, + "node_modules/@expo/cli/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/cli/node_modules/@expo/config-plugins": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz", + "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==", + "dependencies": { + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "~8.2.37", + "@expo/plist": "^0.0.20", + "@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.5.3", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/cli/node_modules/@expo/config-types": { + "version": "49.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz", + "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==" + }, + "node_modules/@expo/cli/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/cli/node_modules/@expo/plist": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", + "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", + "dependencies": { + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "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/arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==" + }, + "node_modules/@expo/cli/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/@expo/cli/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/@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/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/@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/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/@expo/cli/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/@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/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/@expo/cli/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/@expo/cli/node_modules/log-symbols/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/@expo/cli/node_modules/log-symbols/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/@expo/cli/node_modules/log-symbols/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/@expo/cli/node_modules/log-symbols/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/@expo/cli/node_modules/log-symbols/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/@expo/cli/node_modules/log-symbols/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/@expo/cli/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/@expo/cli/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/@expo/cli/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/@expo/cli/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/@expo/cli/node_modules/ora/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/@expo/cli/node_modules/ora/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/@expo/cli/node_modules/ora/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/@expo/cli/node_modules/ora/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/@expo/cli/node_modules/ora/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/@expo/cli/node_modules/ora/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/@expo/cli/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/@expo/cli/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/@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/cli/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/@expo/cli/node_modules/xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@expo/cli/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/@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": "8.1.2", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.1.2.tgz", + "integrity": "sha512-4e7hzPj50mQIlsrzOH6XZ36O094mPfPTIDIH4yv49bWNMc7GFLTofB/lcT+QyxiLaJuC0Wlk9yOLB8DIqmtwug==", + "dependencies": { + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~7.2.0", + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "^8.2.37", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.5.3", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" + } + }, "node_modules/@expo/config-plugins": { "version": "4.1.5", "license": "MIT", @@ -3611,450 +4129,457 @@ "version": "45.0.0", "license": "MIT" }, - "node_modules/@expo/json-file": { - "version": "8.2.36", - "license": "MIT", + "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/code-frame": "~7.10.4", - "json5": "^1.0.1", - "write-file-atomic": "^2.3.0" + "@babel/highlight": "^7.10.4" } }, - "node_modules/@expo/json-file/node_modules/@babel/code-frame": { - "version": "7.10.4", - "license": "MIT", + "node_modules/@expo/config/node_modules/@expo/config-plugins": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz", + "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==", "dependencies": { - "@babel/highlight": "^7.10.4" + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "~8.2.37", + "@expo/plist": "^0.0.20", + "@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.5.3", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.6.0" } }, - "node_modules/@expo/json-file/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==", + "node_modules/@expo/config/node_modules/@expo/config-types": { + "version": "49.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz", + "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==" + }, + "node_modules/@expo/config/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": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" } }, - "node_modules/@expo/plist": { - "version": "0.0.18", - "license": "MIT", + "node_modules/@expo/config/node_modules/@expo/plist": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", + "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", "dependencies": { - "@xmldom/xmldom": "~0.7.0", + "@xmldom/xmldom": "~0.7.7", "base64-js": "^1.2.3", "xmlbuilder": "^14.0.0" } }, - "node_modules/@expo/sdk-runtime-versions": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/@floating-ui/core": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz", - "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==", - "dev": true, + "node_modules/@expo/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": { - "@floating-ui/utils": "^0.1.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@floating-ui/dom": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.1.tgz", - "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==", - "dev": true, + "node_modules/@expo/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": { - "@floating-ui/core": "^1.4.1", - "@floating-ui/utils": "^0.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@floating-ui/react-dom": { + "node_modules/@expo/config/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.1.tgz", - "integrity": "sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA==", - "dev": true, + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "@floating-ui/dom": "^1.3.0" + "color-name": "~1.1.4" }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@floating-ui/utils": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz", - "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==", - "dev": true - }, - "node_modules/@formatjs/ecma402-abstract": { - "version": "1.15.0", - "license": "MIT", - "dependencies": { - "@formatjs/intl-localematcher": "0.2.32", - "tslib": "^2.4.0" - } + "node_modules/@expo/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/@formatjs/intl-datetimeformat": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@formatjs/intl-datetimeformat/-/intl-datetimeformat-6.10.0.tgz", - "integrity": "sha512-5tJWZxOyP5D4PDrqv27h0LWAPHhQM9BHR0pDBTZOKWFEZNrS2IgREbyalSGwQLtN1tZaDrt3YeNfNLbZk1wSUw==", - "dependencies": { - "@formatjs/ecma402-abstract": "1.17.0", - "@formatjs/intl-localematcher": "0.4.0", - "tslib": "^2.4.0" + "node_modules/@expo/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/@formatjs/intl-datetimeformat/node_modules/@formatjs/ecma402-abstract": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.17.0.tgz", - "integrity": "sha512-6ueQTeJZtwKjmh23bdkq/DMqH4l4bmfvtQH98blOSbiXv/OUiyijSW6jU22IT8BNM1ujCaEvJfTtyCYVH38EMQ==", + "node_modules/@expo/config/node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dependencies": { - "@formatjs/intl-localematcher": "0.4.0", - "tslib": "^2.4.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@formatjs/intl-datetimeformat/node_modules/@formatjs/intl-localematcher": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.4.0.tgz", - "integrity": "sha512-bRTd+rKomvfdS4QDlVJ6TA/Jx1F2h/TBVO5LjvhQ7QPPHp19oPNMIum7W2CMEReq/zPxpmCeB31F9+5gl/qtvw==", + "node_modules/@expo/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": { - "tslib": "^2.4.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@formatjs/intl-enumerator": { - "version": "1.3.0", - "license": "MIT", + "node_modules/@expo/config/node_modules/xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", "dependencies": { - "tslib": "^2.4.0" + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" } }, - "node_modules/@formatjs/intl-getcanonicallocales": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "tslib": "^2.4.0" + "node_modules/@expo/config/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/@formatjs/intl-listformat": { - "version": "7.2.2", - "license": "MIT", + "node_modules/@expo/dev-server": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.5.5.tgz", + "integrity": "sha512-t0fT8xH1exwYsH5hh7bAt85VF+gXxg24qrbny2rR/iKoPTWFCd2JNQV8pvfLg51hvrywQ3YCBuT3lU1w7aZxFA==", "dependencies": { - "@formatjs/ecma402-abstract": "1.15.0", - "@formatjs/intl-localematcher": "0.2.32", - "tslib": "^2.4.0" + "@expo/bunyan": "4.0.0", + "@expo/metro-config": "~0.10.0", + "@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", + "serialize-error": "6.0.0", + "temp-dir": "^2.0.0" } }, - "node_modules/@formatjs/intl-locale": { - "version": "3.3.0", - "license": "MIT", + "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": { - "@formatjs/ecma402-abstract": "1.15.0", - "@formatjs/intl-enumerator": "1.3.0", - "@formatjs/intl-getcanonicallocales": "2.2.0", - "tslib": "^2.4.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@formatjs/intl-localematcher": { - "version": "0.2.32", - "license": "MIT", + "node_modules/@expo/dev-server/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": { - "tslib": "^2.4.0" + "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/@formatjs/intl-numberformat": { - "version": "8.5.0", - "license": "MIT", - "dependencies": { - "@formatjs/ecma402-abstract": "1.15.0", - "@formatjs/intl-localematcher": "0.2.32", - "tslib": "^2.4.0" + "node_modules/@expo/dev-server/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/@formatjs/intl-pluralrules": { - "version": "5.2.2", - "license": "MIT", + "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": { - "@formatjs/ecma402-abstract": "1.15.0", - "@formatjs/intl-localematcher": "0.2.32", - "tslib": "^2.4.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@gorhom/portal": { - "version": "1.0.14", - "license": "MIT", + "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": { - "nanoid": "^3.3.1" + "color-name": "~1.1.4" }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "engines": { + "node": ">=7.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/@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/@hapi/topo": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", - "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "node_modules/@expo/dev-server/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "@hapi/hoek": "^9.0.0" + "ms": "2.0.0" } }, - "node_modules/@html-ng/bounding-client-rect-observer": { - "version": "0.1.3", - "license": "Apache-2.0" - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "dev": true, - "license": "Apache-2.0", + "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": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=10" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@invertase/react-native-apple-authentication": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@invertase/react-native-apple-authentication/-/react-native-apple-authentication-2.2.2.tgz", - "integrity": "sha512-uNZcUn9WbAQP5zSOFXI1+kEUokLwZG9imUulFdt5t22CU2ozGq6zyPm+BAVVg8D5eUUXduX/dJFhbuOpJxiEhQ==" - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "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": ">=12" + "node": ">=8" } }, - "node_modules/@isaacs/cliui/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" + "node_modules/@expo/dev-server/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" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/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": ">=0.10.0" } }, - "node_modules/@isaacs/cliui/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/@expo/dev-server/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/@isaacs/cliui/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, + "node_modules/@expo/dev-server/node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=12" + "node": ">=0.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, + "node_modules/@expo/dev-server/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": { - "ansi-regex": "^6.0.1" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">= 0.8" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, + "node_modules/@expo/dev-server/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": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "type-fest": "^0.12.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "license": "ISC", + "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": { - "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" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "license": "MIT", + "node_modules/@expo/dev-server/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": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "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": ">=8" + "node": ">= 10.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "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/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "license": "MIT", + "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": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ms": "^2.1.1" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "license": "MIT", + "node_modules/@expo/devcert/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": { - "p-limit": "^2.2.0" + "minimist": "^1.2.6" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "license": "MIT", - "engines": { - "node": ">=8" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/@jest/console": { - "version": "29.4.1", - "license": "MIT", + "node_modules/@expo/devcert/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "dependencies": { - "@jest/types": "^29.4.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^29.4.1", - "jest-util": "^29.4.1", - "slash": "^3.0.0" + "glob": "^7.1.3" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@expo/devcert/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/@expo/devcert/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dependencies": { - "@jest/schemas": "^29.6.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" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.6.0" } }, - "node_modules/@jest/console/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/@expo/env": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.0.5.tgz", + "integrity": "sha512-UXuKAqyXfhMQC3gP0OyjXmFX08Z1fkVWiGBN7bYzfoX8LHatjeHrDtI6w5nDvd8XPxPvmqaZoEDw1lW3+dz3oQ==", "dependencies": { - "@types/yargs-parser": "*" + "chalk": "^4.0.0", + "debug": "^4.3.4", + "dotenv": "~16.0.3", + "dotenv-expand": "~10.0.0", + "getenv": "^1.0.0" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { + "node_modules/@expo/env/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -4065,9 +4590,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/console/node_modules/chalk": { + "node_modules/@expo/env/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "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" @@ -4079,9 +4605,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/console/node_modules/color-convert": { + "node_modules/@expo/env/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "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" }, @@ -4089,99 +4616,68 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/console/node_modules/color-name": { + "node_modules/@expo/env/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", + "node_modules/@expo/env/node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/@expo/env/node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/@jest/core": { - "version": "29.4.1", - "license": "MIT", - "dependencies": { - "@jest/console": "^29.4.1", - "@jest/reporters": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@jest/transform": "^29.4.1", - "@jest/types": "^29.4.1", - "@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.4.0", - "jest-config": "^29.4.1", - "jest-haste-map": "^29.4.1", - "jest-message-util": "^29.4.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.4.1", - "jest-resolve-dependencies": "^29.4.1", - "jest-runner": "^29.4.1", - "jest-runtime": "^29.4.1", - "jest-snapshot": "^29.4.1", - "jest-util": "^29.4.1", - "jest-validate": "^29.4.1", - "jest-watcher": "^29.4.1", - "micromatch": "^4.0.4", - "pretty-format": "^29.4.1", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, + "node_modules/@expo/env/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": "^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": ">=8" } }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@expo/env/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": { - "@jest/schemas": "^29.6.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" + "has-flag": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/core/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "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": { - "@types/yargs-parser": "*" + "@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/@jest/core/node_modules/ansi-styles": { + "node_modules/@expo/image-utils/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -4192,9 +4688,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/core/node_modules/chalk": { + "node_modules/@expo/image-utils/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "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" @@ -4206,9 +4703,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/core/node_modules/color-convert": { + "node_modules/@expo/image-utils/node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "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" }, @@ -4216,165 +4714,176 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/core/node_modules/color-name": { + "node_modules/@expo/image-utils/node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", + "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": ">=8" + "node": ">=4" } }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", + "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": { - "has-flag": "^4.0.0" + "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/@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" + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "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": { - "@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" + "has-flag": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" + "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/@jest/create-cache-key-function/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==", + "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": { - "color-convert": "^2.0.1" + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/create-cache-key-function/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" - }, + "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": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6" } }, - "node_modules/@jest/create-cache-key-function/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==", + "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": { - "color-name": "~1.1.4" + "crypto-random-string": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=4" } }, - "node_modules/@jest/create-cache-key-function/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/create-cache-key-function/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==", + "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": ">=8" + "node": ">= 10.0.0" } }, - "node_modules/@jest/create-cache-key-function/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==", + "node_modules/@expo/json-file": { + "version": "8.2.36", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@babel/code-frame": "~7.10.4", + "json5": "^1.0.1", + "write-file-atomic": "^2.3.0" } }, - "node_modules/@jest/environment": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz", - "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==", + "node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.6.2", - "@jest/types": "^29.6.1", - "@types/node": "*", - "jest-mock": "^29.6.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@babel/highlight": "^7.10.4" } }, - "node_modules/@jest/environment/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@expo/json-file/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": { - "@jest/schemas": "^29.6.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" + "minimist": "^1.2.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/@jest/environment/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/@expo/metro-config": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.10.7.tgz", + "integrity": "sha512-uACymEiyX0447hI4unt+2cemLQkTZXKvTev936NhtsgVnql45EP0V0pzmo/0H0WlHaAGXgvOBZJl8wFqcJ3CbQ==", "dependencies": { - "@types/yargs-parser": "*" + "@expo/config": "~8.1.0", + "@expo/env": "0.0.5", + "@expo/json-file": "~8.2.37", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "getenv": "^1.0.0", + "jsc-safe-url": "^0.2.4", + "lightningcss": "~1.19.0", + "postcss": "~8.4.21", + "resolve-from": "^5.0.0", + "sucrase": "^3.20.0" } }, - "node_modules/@jest/environment/node_modules/ansi-styles": { + "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.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/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==", @@ -4388,7 +4897,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/environment/node_modules/chalk": { + "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==", @@ -4403,7 +4912,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/environment/node_modules/color-convert": { + "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==", @@ -4414,12 +4923,12 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/environment/node_modules/color-name": { + "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/@jest/environment/node_modules/has-flag": { + "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==", @@ -4427,7 +4936,39 @@ "node": ">=8" } }, - "node_modules/@jest/environment/node_modules/supports-color": { + "node_modules/@expo/metro-config/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/@expo/metro-config/node_modules/postcss": { + "version": "8.4.30", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", + "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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==", @@ -4438,70 +4979,63 @@ "node": ">=8" } }, - "node_modules/@jest/expect": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.2.tgz", - "integrity": "sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==", + "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": { - "expect": "^29.6.2", - "jest-snapshot": "^29.6.2" + "@expo/spawn-async": "^1.5.0", + "exec-async": "^2.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/@jest/expect-utils": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.2.tgz", - "integrity": "sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==", + "node_modules/@expo/package-manager": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.1.2.tgz", + "integrity": "sha512-JI9XzrxB0QVXysyuJ996FPCJGDCYRkbUvgG4QmMTTMFA1T+mv8YzazC3T9C1pHQUAAveVCre1+Pqv0nZXN24Xg==", "dependencies": { - "jest-get-type": "^29.4.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@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", + "js-yaml": "^3.13.1", + "micromatch": "^4.0.2", + "npm-package-arg": "^7.0.0", + "split": "^1.0.1", + "sudo-prompt": "9.1.1" } }, - "node_modules/@jest/fake-timers": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz", - "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==", + "node_modules/@expo/package-manager/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": { - "@jest/types": "^29.6.1", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.6.2", - "jest-mock": "^29.6.2", - "jest-util": "^29.6.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@babel/highlight": "^7.10.4" } }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@expo/package-manager/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": { - "@jest/schemas": "^29.6.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" + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" } }, - "node_modules/@jest/fake-timers/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" + "node_modules/@expo/package-manager/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/@jest/fake-timers/node_modules/ansi-styles": { + "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==", @@ -4515,7 +5049,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/fake-timers/node_modules/chalk": { + "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==", @@ -4530,7 +5064,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/fake-timers/node_modules/color-convert": { + "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==", @@ -4541,12 +5075,12 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/color-name": { + "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/@jest/fake-timers/node_modules/has-flag": { + "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==", @@ -4554,7 +5088,12 @@ "node": ">=8" } }, - "node_modules/@jest/fake-timers/node_modules/supports-color": { + "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==", @@ -4565,45 +5104,91 @@ "node": ">=8" } }, - "node_modules/@jest/globals": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", - "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "node_modules/@expo/plist": { + "version": "0.0.18", + "license": "MIT", "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" + "@xmldom/xmldom": "~0.7.0", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" } }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@expo/prebuild-config": { + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.2.6.tgz", + "integrity": "sha512-uFVvDAm9dPg9p1qpnr4CVnpo2hmkZIL5FQz+VlIdXXJpe7ySh/qTGHtKWY/lWUshQkAJ0nwbKGPztGWdABns/Q==", "dependencies": { - "@jest/schemas": "^29.6.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" + "@expo/config": "~8.1.0", + "@expo/config-plugins": "~7.2.0", + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/image-utils": "0.3.22", + "@expo/json-file": "^8.2.37", + "debug": "^4.3.1", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "7.5.3", + "xml2js": "0.6.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "peerDependencies": { + "expo-modules-autolinking": ">=0.8.1" } }, - "node_modules/@jest/globals/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "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": { - "@types/yargs-parser": "*" + "@babel/highlight": "^7.10.4" } }, - "node_modules/@jest/globals/node_modules/ansi-styles": { + "node_modules/@expo/prebuild-config/node_modules/@expo/config-plugins": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz", + "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==", + "dependencies": { + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "~8.2.37", + "@expo/plist": "^0.0.20", + "@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.5.3", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "node_modules/@expo/prebuild-config/node_modules/@expo/config-types": { + "version": "49.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz", + "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==" + }, + "node_modules/@expo/prebuild-config/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/prebuild-config/node_modules/@expo/plist": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", + "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", + "dependencies": { + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "node_modules/@expo/prebuild-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==", @@ -4617,7 +5202,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/globals/node_modules/chalk": { + "node_modules/@expo/prebuild-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==", @@ -4632,7 +5217,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/globals/node_modules/color-convert": { + "node_modules/@expo/prebuild-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==", @@ -4643,12 +5228,12 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/globals/node_modules/color-name": { + "node_modules/@expo/prebuild-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/@jest/globals/node_modules/has-flag": { + "node_modules/@expo/prebuild-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==", @@ -4656,7 +5241,21 @@ "node": ">=8" } }, - "node_modules/@jest/globals/node_modules/supports-color": { + "node_modules/@expo/prebuild-config/node_modules/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@expo/prebuild-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==", @@ -4667,337 +5266,152 @@ "node": ">=8" } }, - "node_modules/@jest/reporters": { - "version": "29.4.1", - "license": "MIT", + "node_modules/@expo/prebuild-config/node_modules/xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@jest/transform": "^29.4.1", - "@jest/types": "^29.4.1", - "@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.4.1", - "jest-util": "^29.4.1", - "jest-worker": "^29.4.1", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" + "sax": ">=0.6.0", + "xmlbuilder": "~11.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": ">=4.0.0" } }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dependencies": { - "@jest/schemas": "^29.6.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/reporters/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/@expo/prebuild-config/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": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4.0" } }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", + "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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@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": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=12" } }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "node_modules/@expo/rudder-sdk-node/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/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", + "node_modules/@expo/sdk-runtime-versions": { + "version": "1.0.0", "license": "MIT" }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/reporters/node_modules/jest-worker": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", - "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", - "dependencies": { - "@types/node": "*", - "jest-util": "^29.6.3", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "29.2.0", - "license": "MIT", - "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.4.1", - "license": "MIT", - "dependencies": { - "@jest/console": "^29.4.1", - "@jest/types": "^29.4.1", - "@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-result/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dependencies": { - "@jest/schemas": "^29.6.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/test-result/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@jest/test-result/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "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": { - "color-convert": "^2.0.1" + "cross-spawn": "^6.0.5" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/@jest/test-result/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", + "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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "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": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4.8" } }, - "node_modules/@jest/test-result/node_modules/color-convert": { + "node_modules/@expo/spawn-async/node_modules/path-key": { "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "engines": { - "node": ">=7.0.0" + "node": ">=4" } }, - "node_modules/@jest/test-result/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/@jest/test-result/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/@expo/spawn-async/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" } }, - "node_modules/@jest/test-result/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", + "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": { - "has-flag": "^4.0.0" + "shebang-regex": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "29.4.1", - "license": "MIT", - "dependencies": { - "@jest/test-result": "^29.4.1", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.1", - "slash": "^3.0.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": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/@jest/transform": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.2.tgz", - "integrity": "sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==", + "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": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.1", - "@jridgewell/trace-mapping": "^0.3.18", - "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.6.2", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.6.2", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "isexe": "^2.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "which": "bin/which" } }, - "node_modules/@jest/transform/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "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": { - "@jest/schemas": "^29.6.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" + "@babel/code-frame": "7.10.4", + "chalk": "^4.1.0", + "find-up": "^5.0.0", + "js-yaml": "^4.1.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "excpretty": "build/cli.js" } }, - "node_modules/@jest/transform/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "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": { - "@types/yargs-parser": "*" + "@babel/highlight": "^7.10.4" } }, - "node_modules/@jest/transform/node_modules/ansi-styles": { + "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==", @@ -5011,7 +5425,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/transform/node_modules/chalk": { + "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==", @@ -5026,7 +5445,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/transform/node_modules/color-convert": { + "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==", @@ -5037,17 +5456,12 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/transform/node_modules/color-name": { + "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/@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==" - }, - "node_modules/@jest/transform/node_modules/has-flag": { + "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==", @@ -5055,7 +5469,18 @@ "node": ">=8" } }, - "node_modules/@jest/transform/node_modules/supports-color": { + "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/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==", @@ -5066,1708 +5491,1360 @@ "node": ">=8" } }, - "node_modules/@jest/transform/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==", + "node_modules/@floating-ui/core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz", + "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==", + "dev": true, "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "@floating-ui/utils": "^0.1.1" } }, - "node_modules/@jest/types": { - "version": "26.6.2", - "license": "MIT", + "node_modules/@floating-ui/dom": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.1.tgz", + "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==", + "dev": true, "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" + "@floating-ui/core": "^1.4.1", + "@floating-ui/utils": "^0.1.1" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/@floating-ui/react-dom": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.1.tgz", + "integrity": "sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@floating-ui/dom": "^1.3.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" } }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@floating-ui/utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz", + "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==", + "dev": true + }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "1.15.0", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@formatjs/intl-localematcher": "0.2.32", + "tslib": "^2.4.0" } }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", + "node_modules/@formatjs/intl-datetimeformat": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-datetimeformat/-/intl-datetimeformat-6.10.0.tgz", + "integrity": "sha512-5tJWZxOyP5D4PDrqv27h0LWAPHhQM9BHR0pDBTZOKWFEZNrS2IgREbyalSGwQLtN1tZaDrt3YeNfNLbZk1wSUw==", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@formatjs/ecma402-abstract": "1.17.0", + "@formatjs/intl-localematcher": "0.4.0", + "tslib": "^2.4.0" } }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" + "node_modules/@formatjs/intl-datetimeformat/node_modules/@formatjs/ecma402-abstract": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.17.0.tgz", + "integrity": "sha512-6ueQTeJZtwKjmh23bdkq/DMqH4l4bmfvtQH98blOSbiXv/OUiyijSW6jU22IT8BNM1ujCaEvJfTtyCYVH38EMQ==", + "dependencies": { + "@formatjs/intl-localematcher": "0.4.0", + "tslib": "^2.4.0" + } }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/@formatjs/intl-datetimeformat/node_modules/@formatjs/intl-localematcher": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.4.0.tgz", + "integrity": "sha512-bRTd+rKomvfdS4QDlVJ6TA/Jx1F2h/TBVO5LjvhQ7QPPHp19oPNMIum7W2CMEReq/zPxpmCeB31F9+5gl/qtvw==", + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@formatjs/intl-enumerator": { + "version": "1.3.0", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "tslib": "^2.4.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", + "node_modules/@formatjs/intl-getcanonicallocales": { + "version": "2.2.0", "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - }, - "engines": { - "node": ">=6.0.0" + "tslib": "^2.4.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", + "node_modules/@formatjs/intl-listformat": { + "version": "7.2.2", "license": "MIT", - "engines": { - "node": ">=6.0.0" + "dependencies": { + "@formatjs/ecma402-abstract": "1.15.0", + "@formatjs/intl-localematcher": "0.2.32", + "tslib": "^2.4.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", + "node_modules/@formatjs/intl-locale": { + "version": "3.3.0", "license": "MIT", - "engines": { - "node": ">=6.0.0" + "dependencies": { + "@formatjs/ecma402-abstract": "1.15.0", + "@formatjs/intl-enumerator": "1.3.0", + "@formatjs/intl-getcanonicallocales": "2.2.0", + "tslib": "^2.4.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "node_modules/@formatjs/intl-localematcher": { + "version": "0.2.32", + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "tslib": "^2.4.0" } }, - "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@formatjs/intl-numberformat": { + "version": "8.5.0", + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "@formatjs/ecma402-abstract": "1.15.0", + "@formatjs/intl-localematcher": "0.2.32", + "tslib": "^2.4.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "node_modules/@formatjs/intl-pluralrules": { + "version": "5.2.2", + "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@formatjs/ecma402-abstract": "1.15.0", + "@formatjs/intl-localematcher": "0.2.32", + "tslib": "^2.4.0" } }, - "node_modules/@jsamr/counter-style": { - "version": "2.0.2", + "node_modules/@gar/promisify": { + "version": "1.1.3", "license": "MIT" }, - "node_modules/@jsamr/react-native-li": { - "version": "2.3.1", + "node_modules/@gorhom/portal": { + "version": "1.0.14", "license": "MIT", - "peerDependencies": { - "@jsamr/counter-style": "^1.0.0 || ^2.0.0", + "dependencies": { + "nanoid": "^3.3.1" + }, + "peerDependencies": { "react": "*", "react-native": "*" } }, - "node_modules/@juggle/resize-observer": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", - "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", - "dev": true - }, - "node_modules/@kie/act-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@kie/act-js/-/act-js-2.3.0.tgz", - "integrity": "sha512-Q9k0b05uA46jXKWmVfoGDW+0xsCcE7QPiHi8IH7h41P36DujHKBj4k28RCeIEx3IwUCxYHKwubN8DH4Vzc9XcA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@kie/mock-github": "^2.0.0", - "adm-zip": "^0.5.10", - "ajv": "^8.12.0", - "bin-links": "^4.0.1", - "express": "^4.18.1", - "follow-redirects": "^1.15.2", - "tar": "^6.1.13", - "yaml": "^2.1.3" - }, - "bin": { - "act-js": "bin/act" + "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/@kie/act-js/node_modules/@kie/mock-github": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-2.0.0.tgz", - "integrity": "sha512-od6UyICJYKMnz9HgEWCQAFT/JsCpKkLp+JQH8fV23tf+ZmmQI1dK3C20k6aO5uJhAHA0yOcFtbKFVF4+8i3DTg==", - "dev": true, + "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": { - "@octokit/openapi-types-ghec": "^18.0.0", - "ajv": "^8.11.0", - "express": "^4.18.1", - "fast-glob": "^3.2.12", - "fs-extra": "^10.1.0", - "nock": "^13.2.7", - "simple-git": "^3.8.0", - "totalist": "^3.0.0" + "@hapi/hoek": "^9.0.0" } }, - "node_modules/@kie/act-js/node_modules/@octokit/openapi-types-ghec": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types-ghec/-/openapi-types-ghec-18.0.0.tgz", - "integrity": "sha512-xY5FTR/DW2gUJdC5GyzkqrfMHhr3u3hg+dUG6bA5FvuuODw6A7+0JTTSS1ndLQEKGmFxP7chf1BKkhvhnqxCew==", - "dev": true + "node_modules/@html-ng/bounding-client-rect-observer": { + "version": "0.1.3", + "license": "Apache-2.0" }, - "node_modules/@kie/act-js/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", "dev": true, + "license": "Apache-2.0", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=12" + "node": ">=10.10.0" } }, - "node_modules/@kie/act-js/node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", "dev": true, - "engines": { - "node": ">=6" - } + "license": "BSD-3-Clause" }, - "node_modules/@kie/mock-github": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-1.1.0.tgz", - "integrity": "sha512-fD+utlOiyZSOutOcXL0G9jfjbtvOO44PLUyTfgfkrm1+575R/dbvU6AcJfjc1DtHeRv7FC7f4ebyU+a1wgL6CA==", - "dev": true, - "dependencies": { - "@octokit/openapi-types-ghec": "^14.0.0", - "ajv": "^8.11.0", - "express": "^4.18.1", - "fast-glob": "^3.2.12", - "fs-extra": "^10.1.0", - "nock": "^13.2.7", - "simple-git": "^3.8.0", - "totalist": "^3.0.0" - } + "node_modules/@invertase/react-native-apple-authentication": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@invertase/react-native-apple-authentication/-/react-native-apple-authentication-2.2.2.tgz", + "integrity": "sha512-uNZcUn9WbAQP5zSOFXI1+kEUokLwZG9imUulFdt5t22CU2ozGq6zyPm+BAVVg8D5eUUXduX/dJFhbuOpJxiEhQ==" }, - "node_modules/@kie/mock-github/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { "node": ">=12" } }, - "node_modules/@kie/mock-github/node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "node_modules/@isaacs/cliui/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": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "node_modules/@isaacs/cliui/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, - "dependencies": { - "debug": "^4.1.1" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "node_modules/@isaacs/cliui/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/@leichtgewicht/ip-codec": { - "version": "2.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@lwc/eslint-plugin-lwc": { - "version": "0.11.0", + "node_modules/@isaacs/cliui/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, - "license": "MIT", "dependencies": { - "minimatch": "^3.0.4" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=12" }, - "peerDependencies": { - "babel-eslint": "^10", - "eslint": "^6 || ^7" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@malept/cross-spawn-promise": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", - "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/malept" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" - } - ], "dependencies": { - "cross-spawn": "^7.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">= 10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@malept/flatpak-bundler": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", - "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^9.0.0", - "lodash": "^4.17.15", - "tmp-promise": "^3.0.2" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">= 10.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@mapbox/geojson-rewind": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz", - "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "license": "ISC", "dependencies": { - "get-stream": "^6.0.1", - "minimist": "^1.2.6" + "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" }, - "bin": { - "geojson-rewind": "geojson-rewind" + "engines": { + "node": ">=8" } }, - "node_modules/@mapbox/jsonlint-lines-primitives": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", - "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/@mapbox/mapbox-gl-supported": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.1.tgz", - "integrity": "sha512-HP6XvfNIzfoMVfyGjBckjiAOQK9WfX0ywdLubuPMPv+Vqf5fj0uCbgBQYpiqcWZT6cbyyRnTSXDheT1ugvF6UQ==" - }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", - "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "license": "MIT", "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" + "engines": { + "node": ">=8" } }, - "node_modules/@mapbox/node-pre-gyp/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, - "optional": true, - "peer": true, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "p-locate": "^4.1.0" }, "engines": { "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "license": "MIT", "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/@mapbox/point-geometry": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", - "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==" - }, - "node_modules/@mapbox/tiny-sdf": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz", - "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==" + "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@mapbox/unitbezier": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", - "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/@mapbox/vector-tile": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", - "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "node_modules/@jest/console": { + "version": "29.4.1", + "license": "MIT", "dependencies": { - "@mapbox/point-geometry": "~0.1.0" + "@jest/types": "^29.4.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.4.1", + "jest-util": "^29.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@mapbox/whoots-js": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", - "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==", + "node_modules/@jest/console/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.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": ">=6.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@maplibre/maplibre-gl-style-spec": { - "version": "19.3.0", - "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-19.3.0.tgz", - "integrity": "sha512-ZbhX9CTV+Z7vHwkRIasDOwTSzr76e8Q6a55RMsAibjyX6+P0ZNL1qAKNzOjjBDP3+aEfNMl7hHo5knuY6pTAUQ==", + "node_modules/@jest/console/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "@mapbox/jsonlint-lines-primitives": "~2.0.2", - "@mapbox/unitbezier": "^0.0.1", - "json-stringify-pretty-compact": "^3.0.0", - "minimist": "^1.2.8", - "rw": "^1.3.3", - "sort-object": "^3.0.3" - }, - "bin": { - "gl-style-format": "dist/gl-style-format.mjs", - "gl-style-migrate": "dist/gl-style-migrate.mjs", - "gl-style-validate": "dist/gl-style-validate.mjs" + "@types/yargs-parser": "*" } }, - "node_modules/@mdx-js/mdx": { - "version": "1.6.22", - "dev": true, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "@babel/core": "7.12.9", - "@babel/plugin-syntax-jsx": "7.12.1", - "@babel/plugin-syntax-object-rest-spread": "7.8.3", - "@mdx-js/util": "1.6.22", - "babel-plugin-apply-mdx-type-prop": "1.6.22", - "babel-plugin-extract-import-names": "1.6.22", - "camelcase-css": "2.0.1", - "detab": "2.0.4", - "hast-util-raw": "6.0.1", - "lodash.uniq": "4.5.0", - "mdast-util-to-hast": "10.0.1", - "remark-footnotes": "2.0.0", - "remark-mdx": "1.6.22", - "remark-parse": "8.0.3", - "remark-squeeze-paragraphs": "4.0.0", - "style-to-object": "0.3.0", - "unified": "9.2.0", - "unist-builder": "2.0.3", - "unist-util-visit": "2.0.3" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@mdx-js/mdx/node_modules/@babel/core": { - "version": "7.12.9", - "dev": true, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.5", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.5", - "@babel/parser": "^7.12.7", - "@babel/template": "^7.12.7", - "@babel/traverse": "^7.12.9", - "@babel/types": "^7.12.7", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { - "version": "7.12.1", - "dev": true, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "color-name": "~1.1.4" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@mdx-js/mdx/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" }, - "node_modules/@mdx-js/mdx/node_modules/source-map": { - "version": "0.5.7", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/@mdx-js/react": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", - "integrity": "sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==", - "dev": true, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "@types/mdx": "^2.0.0", - "@types/react": ">=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "react": ">=16" + "engines": { + "node": ">=8" } }, - "node_modules/@mdx-js/util": { - "version": "1.6.22", - "dev": true, + "node_modules/@jest/core": { + "version": "29.4.1", "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "dependencies": { + "@jest/console": "^29.4.1", + "@jest/reporters": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", + "@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.4.0", + "jest-config": "^29.4.1", + "jest-haste-map": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-regex-util": "^29.2.0", + "jest-resolve": "^29.4.1", + "jest-resolve-dependencies": "^29.4.1", + "jest-runner": "^29.4.1", + "jest-runtime": "^29.4.1", + "jest-snapshot": "^29.4.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", + "jest-watcher": "^29.4.1", + "micromatch": "^4.0.4", + "pretty-format": "^29.4.1", + "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/@mediapipe/face_detection": { - "version": "0.4.1646425229", - "license": "Apache-2.0" + "node_modules/@jest/core/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.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/@mediapipe/face_mesh": { - "version": "0.4.1633559619", - "license": "Apache-2.0" + "node_modules/@jest/core/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" + } }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "dev": true, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@mrmlnc/readdir-enhanced/node_modules/glob-to-regexp": { - "version": "0.3.0", - "dev": true, - "license": "BSD" - }, - "node_modules/@native-html/css-processor": { - "version": "1.11.0", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", "dependencies": { - "css-to-react-native": "^3.0.0", - "csstype": "^3.0.8" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "@types/react": "*", - "@types/react-native": "*" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "dev": true, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 8" + "node": ">=7.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "dev": true, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "dev": true, - "license": "ISC", + "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": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" + "@jest/types": "^29.5.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "dev": true, - "license": "MIT", + "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", + "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "@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": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@octokit/auth-token": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", - "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", - "dev": true, + "node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/create-cache-key-function/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": ">= 14" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@octokit/core": { - "version": "4.0.4", - "dev": true, - "license": "MIT", + "node_modules/@jest/create-cache-key-function/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": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", - "dev": true, + "node_modules/@jest/create-cache-key-function/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": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 14" + "node": ">=7.0.0" } }, - "node_modules/@octokit/endpoint/node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", - "dev": true + "node_modules/@jest/create-cache-key-function/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/@octokit/endpoint/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "dev": true, - "dependencies": { - "@octokit/openapi-types": "^18.0.0" + "node_modules/@jest/create-cache-key-function/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/@octokit/graphql": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", - "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", - "dev": true, + "node_modules/@jest/create-cache-key-function/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": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "universal-user-agent": "^6.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 14" + "node": ">=8" } }, - "node_modules/@octokit/graphql/node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", - "dev": true - }, - "node_modules/@octokit/graphql/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "dev": true, + "node_modules/@jest/environment": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.6.2.tgz", + "integrity": "sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q==", "dependencies": { - "@octokit/openapi-types": "^18.0.0" + "@jest/fake-timers": "^29.6.2", + "@jest/types": "^29.6.1", + "@types/node": "*", + "jest-mock": "^29.6.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/openapi-types-ghec": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types-ghec/-/openapi-types-ghec-14.0.0.tgz", - "integrity": "sha512-xhd9oEvn2aroGn+sk09Ptx/76Y7aKU0EIgHukHPCU1+rGJreO36baEEk6k8ZPblieHNM39FcykJQmtDrETm0KA==", - "dev": true - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "3.1.0", - "dev": true, - "license": "MIT", + "node_modules/@jest/environment/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "@octokit/types": "^6.41.0" + "@jest/schemas": "^29.6.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" - }, - "peerDependencies": { - "@octokit/core": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "dev": true, - "license": "MIT", + "node_modules/@jest/environment/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" - }, - "peerDependencies": { - "@octokit/core": ">=3" + "@types/yargs-parser": "*" } }, - "node_modules/@octokit/plugin-throttling": { - "version": "4.1.0", - "dev": true, - "license": "MIT", + "node_modules/@jest/environment/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": { - "@octokit/types": "^6.0.1", - "bottleneck": "^2.15.3" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 14" + "node": ">=8" }, - "peerDependencies": { - "@octokit/core": "^4.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "dev": true, + "node_modules/@jest/environment/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": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", - "dev": true, + "node_modules/@jest/environment/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": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 14" + "node": ">=7.0.0" } }, - "node_modules/@octokit/request-error/node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", - "dev": true + "node_modules/@jest/environment/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/@octokit/request-error/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "dev": true, - "dependencies": { - "@octokit/openapi-types": "^18.0.0" + "node_modules/@jest/environment/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/@octokit/request/node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", - "dev": true - }, - "node_modules/@octokit/request/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", - "dev": true, + "node_modules/@jest/environment/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": { - "@octokit/openapi-types": "^18.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@octokit/types": { - "version": "6.41.0", - "dev": true, - "license": "MIT", + "node_modules/@jest/expect": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg==", "dependencies": { - "@octokit/openapi-types": "^12.11.0" + "expect": "^29.6.2", + "jest-snapshot": "^29.6.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@oguzhnatly/react-native-image-manipulator": { - "version": "1.0.5", - "resolved": "git+ssh://git@github.com/Expensify/react-native-image-manipulator.git#5cdae3d4455b03a04c57f50be3863e2fe6c92c52", - "integrity": "sha512-C9Br1BQqm6io6lvYHptlLcOHbzlaqxp9tS35P8Qj3pdiiYRTzU3KPvZ61rQ+ZnZ4FOQ6MwPsKsmB8+6WHkAY6Q==", - "license": "MIT" - }, - "node_modules/@onfido/active-video-capture": { - "version": "0.27.12", - "resolved": "https://registry.npmjs.org/@onfido/active-video-capture/-/active-video-capture-0.27.12.tgz", - "integrity": "sha512-VPxakhQL9/PndBUb3nCmPq0xWOYGWffai/Tf4K492BJNQ2cf7VyxC5Ncj1yLSGofKyrNpy4r7e9IFch5jwU+Ig==", + "node_modules/@jest/expect-utils": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.2.tgz", + "integrity": "sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg==", "dependencies": { - "@mediapipe/face_detection": "^0.4.1646425229", - "@mediapipe/face_mesh": "^0.4.1633559619", - "@onfido/castor": "^2.2.2", - "@onfido/castor-icons": "^2.12.0", - "@tensorflow-models/face-detection": "^1.0.1", - "@tensorflow-models/face-landmarks-detection": "^1.0.2", - "@tensorflow/tfjs-backend-wasm": "^3.20.0", - "@tensorflow/tfjs-backend-webgl": "^3.20.0", - "@tensorflow/tfjs-converter": "^3.20.0", - "@tensorflow/tfjs-core": "^3.20.0", - "preact": "10.11.3", - "react-webcam": "^7.1.1" + "jest-get-type": "^29.4.3" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@onfido/active-video-capture/node_modules/@tensorflow-models/face-landmarks-detection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tensorflow-models/face-landmarks-detection/-/face-landmarks-detection-1.0.2.tgz", - "integrity": "sha512-e10xKlBssv2nYg8hV93rNg7ne8NIJVT9Y1d/bpUCcBpPLJpykLw2DQ3nfPnoBpqhKDykFtKDGQVmeXvqc7H+KA==", + "node_modules/@jest/fake-timers": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.2.tgz", + "integrity": "sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA==", "dependencies": { - "rimraf": "^3.0.2" + "@jest/types": "^29.6.1", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.6.2", + "jest-mock": "^29.6.2", + "jest-util": "^29.6.2" }, - "peerDependencies": { - "@mediapipe/face_mesh": "~0.4.0", - "@tensorflow-models/face-detection": "~1.0.0", - "@tensorflow/tfjs-backend-webgl": "^3.12.0", - "@tensorflow/tfjs-converter": "^3.12.0", - "@tensorflow/tfjs-core": "^3.12.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@onfido/active-video-capture/node_modules/@tensorflow/tfjs-backend-cpu": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-3.21.0.tgz", - "integrity": "sha512-88S21UAdzyK0CsLUrH17GPTD+26E85OP9CqmLZslaWjWUmBkeTQ5Zqyp6iK+gELnLxPx6q7JsNEeFuPv4254lQ==", + "node_modules/@jest/fake-timers/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "@types/seedrandom": "^2.4.28", - "seedrandom": "^3.0.5" + "@jest/schemas": "^29.6.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": { - "yarn": ">= 1.3.2" - }, - "peerDependencies": { - "@tensorflow/tfjs-core": "3.21.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@onfido/active-video-capture/node_modules/@tensorflow/tfjs-backend-wasm": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-wasm/-/tfjs-backend-wasm-3.21.0.tgz", - "integrity": "sha512-TVkJWrqukdxvIaQn9jZvtXR+7fmT7sti6NQH5OKVcBmFYIW7I3RiRRE66inVrHjEEvIVTUuW9yo9Ialn31EFIw==", + "node_modules/@jest/fake-timers/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "@tensorflow/tfjs-backend-cpu": "3.21.0", - "@types/emscripten": "~0.0.34" - }, - "peerDependencies": { - "@tensorflow/tfjs-core": "3.21.0" + "@types/yargs-parser": "*" } }, - "node_modules/@onfido/active-video-capture/node_modules/@tensorflow/tfjs-backend-webgl": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-3.21.0.tgz", - "integrity": "sha512-N4zitIAT9IX8B8oe489qM3f3VcESxGZIZvHmVP8varOQakTvTX859aaPo1s8hK1qCy4BjSGbweooZe4U8D4kTQ==", + "node_modules/@jest/fake-timers/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": { - "@tensorflow/tfjs-backend-cpu": "3.21.0", - "@types/offscreencanvas": "~2019.3.0", - "@types/seedrandom": "^2.4.28", - "@types/webgl-ext": "0.0.30", - "@types/webgl2": "0.0.6", - "seedrandom": "^3.0.5" + "color-convert": "^2.0.1" }, "engines": { - "yarn": ">= 1.3.2" + "node": ">=8" }, - "peerDependencies": { - "@tensorflow/tfjs-core": "3.21.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@onfido/active-video-capture/node_modules/@tensorflow/tfjs-converter": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-3.21.0.tgz", - "integrity": "sha512-12Y4zVDq3yW+wSjSDpSv4HnpL2sDZrNiGSg8XNiDE4HQBdjdA+a+Q3sZF/8NV9y2yoBhL5L7V4mMLDdbZBd9/Q==", - "peerDependencies": { - "@tensorflow/tfjs-core": "3.21.0" + "node_modules/@jest/fake-timers/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/@onfido/active-video-capture/node_modules/@tensorflow/tfjs-core": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-3.21.0.tgz", - "integrity": "sha512-YSfsswOqWfd+M4bXIhT3hwtAb+IV8+ODwIxwdFR/7jTAPZP1wMVnSlpKnXHAN64HFOiP+Tm3HmKusEZ0+09A0w==", + "node_modules/@jest/fake-timers/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": { - "@types/long": "^4.0.1", - "@types/offscreencanvas": "~2019.3.0", - "@types/seedrandom": "^2.4.28", - "@types/webgl-ext": "0.0.30", - "@webgpu/types": "0.1.16", - "long": "4.0.0", - "node-fetch": "~2.6.1", - "seedrandom": "^3.0.5" + "color-name": "~1.1.4" }, "engines": { - "yarn": ">= 1.3.2" + "node": ">=7.0.0" } }, - "node_modules/@onfido/active-video-capture/node_modules/@webgpu/types": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.16.tgz", - "integrity": "sha512-9E61voMP4+Rze02jlTXud++Htpjyyk8vw5Hyw9FGRrmhHQg2GqbuOfwf5Klrb8vTxc2XWI3EfO7RUHMpxTj26A==" + "node_modules/@jest/fake-timers/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/@onfido/castor": { - "version": "2.2.5", - "license": "Apache-2.0", + "node_modules/@jest/fake-timers/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/fake-timers/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": { - "@onfido/castor-tokens": "^1.0.0-beta.6", - "csstype": "^3.1.1" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "@onfido/castor-icons": ">=1.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/@onfido/castor-icons": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/@onfido/castor-icons/-/castor-icons-2.19.0.tgz", - "integrity": "sha512-LUQDQztjvElC8xu7fINbmmxsS92S/aVNPJyY9AlNlHPTO/Xino71iK+gE8Zbptgcm8++pkqKb+FrZUd83khqHw==", - "peerDependencies": { - "react": ">=17 || ^16.14 || ^15.7 || ^0.14.10" + "node_modules/@jest/globals": { + "version": "29.5.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", + "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "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/@onfido/castor-tokens": { - "version": "1.0.0-beta.6", - "license": "Apache-2.0" - }, - "node_modules/@onfido/opencv": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@onfido/opencv/-/opencv-2.1.1.tgz", - "integrity": "sha512-Bwo0YsZrrdm+p5hpNFZ7yrqNVWJxOUbQW9aWDEUtkDWUL+nX2RHIR6F4lBGVmbqnG24anadS/+nEvy80SwD3tQ==", + "node_modules/@jest/globals/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "mirada": "^0.0.15" + "@jest/schemas": "^29.6.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/@onfido/react-native-sdk": { - "version": "7.4.0", - "license": "MIT", - "peerDependencies": { - "react": ">=17.0.0", - "react-native": ">=0.68.2 <1.0.x" + "node_modules/@jest/globals/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, + "node_modules/@jest/globals/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": ">=14" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz", - "integrity": "sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==", - "dev": true, + "node_modules/@jest/globals/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-html-community": "^0.0.8", - "common-path-prefix": "^3.0.0", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "find-up": "^5.0.0", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^3.0.0", - "source-map": "^0.7.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 10.13" - }, - "peerDependencies": { - "@types/webpack": "4.x || 5.x", - "react-refresh": ">=0.10.0 <1.0.0", - "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <4.0.0", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" + "node": ">=10" }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - }, - "sockjs-client": { - "optional": true - }, - "type-fest": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - }, - "webpack-hot-middleware": { - "optional": true - }, - "webpack-plugin-serve": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, + "node_modules/@jest/globals/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": ">= 8" + "node": ">=7.0.0" } }, - "node_modules/@polka/url": { - "version": "1.0.0-next.21", - "dev": true, - "license": "MIT" + "node_modules/@jest/globals/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/@radix-ui/number": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", - "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10" + "node_modules/@jest/globals/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/@radix-ui/primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", - "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", - "dev": true, + "node_modules/@jest/globals/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": { - "@babel/runtime": "^7.13.10" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", - "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", - "dev": true, + "node_modules/@jest/reporters": { + "version": "29.4.1", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", + "@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.4.1", + "jest-util": "^29.4.1", + "jest-worker": "^29.4.1", + "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": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { + "node-notifier": { "optional": true } } }, - "node_modules/@radix-ui/react-collection": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", - "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", - "dev": true, + "node_modules/@jest/reporters/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "@jest/schemas": "^29.6.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" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", - "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", - "dev": true, + "node_modules/@jest/reporters/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@types/yargs-parser": "*" } }, - "node_modules/@radix-ui/react-context": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", - "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", - "dev": true, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@radix-ui/react-direction": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", - "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", - "dev": true, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz", - "integrity": "sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==", - "dev": true, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-escape-keydown": "1.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "color-name": "~1.1.4" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", - "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", - "dev": true, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", + "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "@types/node": "*", + "jest-util": "^29.6.3", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz", - "integrity": "sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-id": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", - "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", - "dev": true, + "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@radix-ui/react-popper": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.2.tgz", - "integrity": "sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==", - "dev": true, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-rect": "1.0.1", - "@radix-ui/react-use-size": "1.0.1", - "@radix-ui/rect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "has-flag": "^4.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/@radix-ui/react-portal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.3.tgz", - "integrity": "sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==", - "dev": true, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "@sinclair/typebox": "^0.27.8" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@radix-ui/react-primitive": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", - "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", - "dev": true, + "node_modules/@jest/source-map": { + "version": "29.2.0", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "@jridgewell/trace-mapping": "^0.3.15", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@radix-ui/react-select": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-1.2.2.tgz", - "integrity": "sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==", - "dev": true, + "node_modules/@jest/test-result": { + "version": "29.4.1", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/number": "1.0.1", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.4", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.3", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.2", - "@radix-ui/react-portal": "1.0.3", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-previous": "1.0.1", - "@radix-ui/react-visually-hidden": "1.0.3", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "@jest/console": "^29.4.1", + "@jest/types": "^29.4.1", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@radix-ui/react-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", - "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", - "dev": true, + "node_modules/@jest/test-result/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "@jest/schemas": "^29.6.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" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", - "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", - "dev": true, + "node_modules/@jest/test-result/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "@types/yargs-parser": "*" } }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", - "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", - "dev": true, + "node_modules/@jest/test-result/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", - "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", - "dev": true, + "node_modules/@jest/test-result/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", - "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", - "dev": true, + "node_modules/@jest/test-result/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "color-name": "~1.1.4" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", - "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } + "node_modules/@jest/test-result/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", - "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/rect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node_modules/@jest/test-result/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", - "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", - "dev": true, + "node_modules/@jest/test-result/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "has-flag": "^4.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", - "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", - "dev": true, + "node_modules/@jest/test-sequencer": { + "version": "29.4.1", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "@jest/test-result": "^29.4.1", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.4.1", + "slash": "^3.0.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/rect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", - "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.13.10" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@react-native-async-storage/async-storage": { - "version": "1.17.11", - "license": "MIT", + "node_modules/@jest/transform": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.6.2.tgz", + "integrity": "sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg==", "dependencies": { - "merge-options": "^3.0.4" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.1", + "@jridgewell/trace-mapping": "^0.3.18", + "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.6.2", + "jest-regex-util": "^29.4.3", + "jest-util": "^29.6.2", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, - "peerDependencies": { - "react-native": "^0.0.0-0 || 0.60 - 0.71 || 1000.0.0" - } - }, - "node_modules/@react-native-camera-roll/camera-roll": { - "version": "5.4.0", - "license": "MIT", - "peerDependencies": { - "react-native": ">=0.59" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@react-native-community/cli": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-11.3.6.tgz", - "integrity": "sha512-bdwOIYTBVQ9VK34dsf6t3u6vOUU5lfdhKaAxiAVArjsr7Je88Bgs4sAbsOYsNK3tkE8G77U6wLpekknXcanlww==", + "node_modules/@jest/transform/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "@react-native-community/cli-clean": "11.3.6", - "@react-native-community/cli-config": "11.3.6", - "@react-native-community/cli-debugger-ui": "11.3.6", - "@react-native-community/cli-doctor": "11.3.6", - "@react-native-community/cli-hermes": "11.3.6", - "@react-native-community/cli-plugin-metro": "11.3.6", - "@react-native-community/cli-server-api": "11.3.6", - "@react-native-community/cli-tools": "11.3.6", - "@react-native-community/cli-types": "11.3.6", - "chalk": "^4.1.2", - "commander": "^9.4.1", - "execa": "^5.0.0", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0", - "graceful-fs": "^4.1.3", - "prompts": "^2.4.0", - "semver": "^7.5.2" - }, - "bin": { - "react-native": "build/bin.js" + "@jest/schemas": "^29.6.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": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@react-native-community/cli-clean": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-11.3.6.tgz", - "integrity": "sha512-jOOaeG5ebSXTHweq1NznVJVAFKtTFWL4lWgUXl845bCGX7t1lL8xQNWHKwT8Oh1pGR2CI3cKmRjY4hBg+pEI9g==", + "node_modules/@jest/transform/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "prompts": "^2.4.0" + "@types/yargs-parser": "*" } }, - "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": { + "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==", @@ -6781,7 +6858,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@react-native-community/cli-clean/node_modules/chalk": { + "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==", @@ -6796,7 +6873,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@react-native-community/cli-clean/node_modules/color-convert": { + "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==", @@ -6807,12 +6884,17 @@ "node": ">=7.0.0" } }, - "node_modules/@react-native-community/cli-clean/node_modules/color-name": { + "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==" }, - "node_modules/@react-native-community/cli-clean/node_modules/has-flag": { + "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==" + }, + "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==", @@ -6820,7 +6902,7 @@ "node": ">=8" } }, - "node_modules/@react-native-community/cli-clean/node_modules/supports-color": { + "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==", @@ -6831,23 +6913,35 @@ "node": ">=8" } }, - "node_modules/@react-native-community/cli-config": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-11.3.6.tgz", - "integrity": "sha512-edy7fwllSFLan/6BG6/rznOBCLPrjmJAE10FzkEqNLHowi0bckiAPg1+1jlgQ2qqAxV5kuk+c9eajVfQvPLYDA==", + "node_modules/@jest/transform/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==", "dependencies": { - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "cosmiconfig": "^5.1.0", - "deepmerge": "^4.3.0", - "glob": "^7.1.3", - "joi": "^17.2.1" + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@react-native-community/cli-config/node_modules/ansi-styles": { + "node_modules/@jest/types": { + "version": "26.6.2", + "license": "MIT", + "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/@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==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -6858,10 +6952,9 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@react-native-community/cli-config/node_modules/chalk": { + "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==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6873,10 +6966,9 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@react-native-community/cli-config/node_modules/color-convert": { + "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==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6884,2481 +6976,2219 @@ "node": ">=7.0.0" } }, - "node_modules/@react-native-community/cli-config/node_modules/color-name": { + "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/@react-native-community/cli-config/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" - } + "license": "MIT" }, - "node_modules/@react-native-community/cli-config/node_modules/has-flag": { + "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==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@react-native-community/cli-config/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==", + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/@react-native-community/cli-config/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==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/@react-native-community/cli-config/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==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/@react-native-community/cli-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==", + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dependencies": { - "has-flag": "^4.0.0" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@react-native-community/cli-debugger-ui": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.6.tgz", - "integrity": "sha512-jhMOSN/iOlid9jn/A2/uf7HbC3u7+lGktpeGSLnHNw21iahFBzcpuO71ekEdlmTZ4zC/WyxBXw9j2ka33T358w==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dependencies": { - "serve-static": "^1.13.1" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, - "node_modules/@react-native-community/cli-doctor": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-11.3.6.tgz", - "integrity": "sha512-UT/Tt6omVPi1j6JEX+CObc85eVFghSZwy4GR9JFMsO7gNg2Tvcu1RGWlUkrbmWMAMHw127LUu6TGK66Ugu1NLA==", - "dependencies": { - "@react-native-community/cli-config": "11.3.6", - "@react-native-community/cli-platform-android": "11.3.6", - "@react-native-community/cli-platform-ios": "11.3.6", - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "command-exists": "^1.2.8", - "envinfo": "^7.7.2", - "execa": "^5.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": "^7.5.2", - "strip-ansi": "^5.2.0", - "sudo-prompt": "^9.0.0", - "wcwidth": "^1.0.1", - "yaml": "^2.2.1" + "node_modules/@jsamr/counter-style": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/@jsamr/react-native-li": { + "version": "2.3.1", + "license": "MIT", + "peerDependencies": { + "@jsamr/counter-style": "^1.0.0 || ^2.0.0", + "react": "*", + "react-native": "*" } }, - "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==", + "node_modules/@juggle/resize-observer": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", + "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", + "dev": true + }, + "node_modules/@kie/act-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@kie/act-js/-/act-js-2.3.0.tgz", + "integrity": "sha512-Q9k0b05uA46jXKWmVfoGDW+0xsCcE7QPiHi8IH7h41P36DujHKBj4k28RCeIEx3IwUCxYHKwubN8DH4Vzc9XcA==", + "dev": true, + "hasInstallScript": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@kie/mock-github": "^2.0.0", + "adm-zip": "^0.5.10", + "ajv": "^8.12.0", + "bin-links": "^4.0.1", + "express": "^4.18.1", + "follow-redirects": "^1.15.2", + "tar": "^6.1.13", + "yaml": "^2.1.3" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "bin": { + "act-js": "bin/act" } }, - "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==", + "node_modules/@kie/act-js/node_modules/@kie/mock-github": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-2.0.0.tgz", + "integrity": "sha512-od6UyICJYKMnz9HgEWCQAFT/JsCpKkLp+JQH8fV23tf+ZmmQI1dK3C20k6aO5uJhAHA0yOcFtbKFVF4+8i3DTg==", + "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" + "@octokit/openapi-types-ghec": "^18.0.0", + "ajv": "^8.11.0", + "express": "^4.18.1", + "fast-glob": "^3.2.12", + "fs-extra": "^10.1.0", + "nock": "^13.2.7", + "simple-git": "^3.8.0", + "totalist": "^3.0.0" } }, - "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==", + "node_modules/@kie/act-js/node_modules/@octokit/openapi-types-ghec": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types-ghec/-/openapi-types-ghec-18.0.0.tgz", + "integrity": "sha512-xY5FTR/DW2gUJdC5GyzkqrfMHhr3u3hg+dUG6bA5FvuuODw6A7+0JTTSS1ndLQEKGmFxP7chf1BKkhvhnqxCew==", + "dev": true + }, + "node_modules/@kie/act-js/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=12" } }, - "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==", + "node_modules/@kie/act-js/node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/@react-native-community/cli-doctor/node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + "node_modules/@kie/mock-github": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-1.1.0.tgz", + "integrity": "sha512-fD+utlOiyZSOutOcXL0G9jfjbtvOO44PLUyTfgfkrm1+575R/dbvU6AcJfjc1DtHeRv7FC7f4ebyU+a1wgL6CA==", + "dev": true, + "dependencies": { + "@octokit/openapi-types-ghec": "^14.0.0", + "ajv": "^8.11.0", + "express": "^4.18.1", + "fast-glob": "^3.2.12", + "fs-extra": "^10.1.0", + "nock": "^13.2.7", + "simple-git": "^3.8.0", + "totalist": "^3.0.0" + } }, - "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==", + "node_modules/@kie/mock-github/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "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" - }, + "node_modules/@kie/mock-github/node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/@react-native-community/cli-hermes": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-11.3.6.tgz", - "integrity": "sha512-O55YAYGZ3XynpUdePPVvNuUPGPY0IJdctLAOHme73OvS80gNwfntHDXfmY70TGHWIfkK2zBhA0B+2v8s5aTyTA==", + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, "dependencies": { - "@react-native-community/cli-platform-android": "11.3.6", - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "hermes-profile-transformer": "^0.0.6", - "ip": "^1.1.5" + "debug": "^4.1.1" } }, - "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==", + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@lwc/eslint-plugin-lwc": { + "version": "0.11.0", + "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "minimatch": "^3.0.4" }, "engines": { - "node": ">=8" + "node": ">=10.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "babel-eslint": "^10", + "eslint": "^6 || ^7" } }, - "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==", + "node_modules/@malept/cross-spawn-promise": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/malept" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" + } + ], "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "cross-spawn": "^7.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 10" } }, - "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==", + "node_modules/@malept/flatpak-bundler": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@malept/flatpak-bundler/-/flatpak-bundler-0.4.0.tgz", + "integrity": "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "debug": "^4.1.1", + "fs-extra": "^9.0.0", + "lodash": "^4.17.15", + "tmp-promise": "^3.0.2" }, "engines": { - "node": ">=7.0.0" + "node": ">= 10.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/@mapbox/geojson-rewind": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz", + "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==", + "dependencies": { + "get-stream": "^6.0.1", + "minimist": "^1.2.6" + }, + "bin": { + "geojson-rewind": "geojson-rewind" + } }, - "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==", + "node_modules/@mapbox/jsonlint-lines-primitives": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", + "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/@react-native-community/cli-hermes/node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + "node_modules/@mapbox/mapbox-gl-supported": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-2.0.1.tgz", + "integrity": "sha512-HP6XvfNIzfoMVfyGjBckjiAOQK9WfX0ywdLubuPMPv+Vqf5fj0uCbgBQYpiqcWZT6cbyyRnTSXDheT1ugvF6UQ==" }, - "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==", + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.10.tgz", + "integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli-platform-android": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.6.tgz", - "integrity": "sha512-ZARrpLv5tn3rmhZc//IuDM1LSAdYnjUmjrp58RynlvjLDI4ZEjBAGCQmgysRgXAsK7ekMrfkZgemUczfn9td2A==", - "dependencies": { - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "glob": "^7.1.3", - "logkitty": "^0.7.1" + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" } }, - "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==", + "node_modules/@mapbox/node-pre-gyp/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, + "optional": true, + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "semver": "^6.0.0" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/@mapbox/node-pre-gyp/node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "abbrev": "1" }, - "engines": { - "node": ">=10" + "bin": { + "nopt": "bin/nopt.js" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=6" } }, - "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/@mapbox/point-geometry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==" }, - "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/@mapbox/tiny-sdf": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz", + "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==" }, - "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/@mapbox/unitbezier": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" }, - "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==", + "node_modules/@mapbox/vector-tile": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", "dependencies": { - "has-flag": "^4.0.0" - }, + "@mapbox/point-geometry": "~0.1.0" + } + }, + "node_modules/@mapbox/whoots-js": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", + "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==", "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@react-native-community/cli-platform-ios": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.6.tgz", - "integrity": "sha512-tZ9VbXWiRW+F+fbZzpLMZlj93g3Q96HpuMsS6DRhrTiG+vMQ3o6oPWSEEmMGOvJSYU7+y68Dc9ms2liC7VD6cw==", + "node_modules/@maplibre/maplibre-gl-style-spec": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-19.3.0.tgz", + "integrity": "sha512-ZbhX9CTV+Z7vHwkRIasDOwTSzr76e8Q6a55RMsAibjyX6+P0ZNL1qAKNzOjjBDP3+aEfNMl7hHo5knuY6pTAUQ==", "dependencies": { - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "fast-xml-parser": "^4.0.12", - "glob": "^7.1.3", - "ora": "^5.4.1" + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/unitbezier": "^0.0.1", + "json-stringify-pretty-compact": "^3.0.0", + "minimist": "^1.2.8", + "rw": "^1.3.3", + "sort-object": "^3.0.3" + }, + "bin": { + "gl-style-format": "dist/gl-style-format.mjs", + "gl-style-migrate": "dist/gl-style-migrate.mjs", + "gl-style-validate": "dist/gl-style-validate.mjs" } }, - "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==", + "node_modules/@mdx-js/mdx": { + "version": "1.6.22", + "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@babel/core": "7.12.9", + "@babel/plugin-syntax-jsx": "7.12.1", + "@babel/plugin-syntax-object-rest-spread": "7.8.3", + "@mdx-js/util": "1.6.22", + "babel-plugin-apply-mdx-type-prop": "1.6.22", + "babel-plugin-extract-import-names": "1.6.22", + "camelcase-css": "2.0.1", + "detab": "2.0.4", + "hast-util-raw": "6.0.1", + "lodash.uniq": "4.5.0", + "mdast-util-to-hast": "10.0.1", + "remark-footnotes": "2.0.0", + "remark-mdx": "1.6.22", + "remark-parse": "8.0.3", + "remark-squeeze-paragraphs": "4.0.0", + "style-to-object": "0.3.0", + "unified": "9.2.0", + "unist-builder": "2.0.3", + "unist-util-visit": "2.0.3" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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==", + "node_modules/@mdx-js/mdx/node_modules/@babel/core": { + "version": "7.12.9", + "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" }, "engines": { - "node": ">=10" + "node": ">=6.9.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "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==", + "node_modules/@mdx-js/mdx/node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "@babel/core": "^7.0.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/@mdx-js/mdx/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } }, - "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==", + "node_modules/@mdx-js/mdx/node_modules/source-map": { + "version": "0.5.7", + "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "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==", + "node_modules/@mdx-js/react": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", + "integrity": "sha512-zQH//gdOmuu7nt2oJR29vFhDv88oGPmVw6BggmrHeMI+xgEkp1B2dX9/bMBSYtK0dyLX/aOmesKS09g222K1/g==", + "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@types/mdx": "^2.0.0", + "@types/react": ">=16" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "react": ">=16" } }, - "node_modules/@react-native-community/cli-plugin-metro": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.6.tgz", - "integrity": "sha512-D97racrPX3069ibyabJNKw9aJpVcaZrkYiEzsEnx50uauQtPDoQ1ELb/5c6CtMhAEGKoZ0B5MS23BbsSZcLs2g==", - "dependencies": { - "@react-native-community/cli-server-api": "11.3.6", - "@react-native-community/cli-tools": "11.3.6", - "chalk": "^4.1.2", - "execa": "^5.0.0", - "metro": "0.76.7", - "metro-config": "0.76.7", - "metro-core": "0.76.7", - "metro-react-native-babel-transformer": "0.76.7", - "metro-resolver": "0.76.7", - "metro-runtime": "0.76.7", - "readline": "^1.3.0" + "node_modules/@mdx-js/util": { + "version": "1.6.22", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@react-native-community/cli-plugin-metro/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==", + "node_modules/@mediapipe/face_detection": { + "version": "0.4.1646425229", + "license": "Apache-2.0" + }, + "node_modules/@mediapipe/face_mesh": { + "version": "0.4.1633559619", + "license": "Apache-2.0" + }, + "node_modules/@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "dev": true, + "license": "MIT", "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" + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=4" } }, - "node_modules/@react-native-community/cli-plugin-metro/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/@mrmlnc/readdir-enhanced/node_modules/glob-to-regexp": { + "version": "0.3.0", + "dev": true, + "license": "BSD" }, - "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==", + "node_modules/@native-html/css-processor": { + "version": "1.11.0", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "css-to-react-native": "^3.0.0", + "csstype": "^3.0.8" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@types/react": "*", + "@types/react-native": "*" } }, - "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==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 8" } }, - "node_modules/@react-native-community/cli-plugin-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/@react-native-community/cli-plugin-metro/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==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 8" } }, - "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==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 8" } }, - "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/@npmcli/fs": { + "version": "1.1.1", + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "license": "MIT", "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/@react-native-community/cli-plugin-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/@octokit/auth-token": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", + "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", + "dev": true, + "engines": { + "node": ">= 14" } }, - "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==", + "node_modules/@octokit/core": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^3.0.0", + "@octokit/graphql": "^5.0.0", + "@octokit/request": "^6.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^6.0.3", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/@react-native-community/cli-plugin-metro/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==", + "node_modules/@octokit/endpoint": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", + "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", + "dev": true, "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">=4" + "node": ">= 14" } }, - "node_modules/@react-native-community/cli-plugin-metro/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/@octokit/endpoint/node_modules/@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true + }, + "node_modules/@octokit/endpoint/node_modules/@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^18.0.0" } }, - "node_modules/@react-native-community/cli-plugin-metro/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==", + "node_modules/@octokit/graphql": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", + "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", + "dev": true, "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" + "@octokit/request": "^6.0.0", + "@octokit/types": "^9.0.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 14" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/jest-util/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/@octokit/graphql/node_modules/@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true }, - "node_modules/@react-native-community/cli-plugin-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==", + "node_modules/@octokit/graphql/node_modules/@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dev": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" + "@octokit/openapi-types": "^18.0.0" } }, - "node_modules/@react-native-community/cli-plugin-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==", + "node_modules/@octokit/openapi-types": { + "version": "12.11.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/openapi-types-ghec": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types-ghec/-/openapi-types-ghec-14.0.0.tgz", + "integrity": "sha512-xhd9oEvn2aroGn+sk09Ptx/76Y7aKU0EIgHukHPCU1+rGJreO36baEEk6k8ZPblieHNM39FcykJQmtDrETm0KA==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "3.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@octokit/types": "^6.41.0" }, "engines": { - "node": ">=10" + "node": ">= 14" }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "peerDependencies": { + "@octokit/core": ">=4" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.7.tgz", - "integrity": "sha512-67ZGwDeumEPnrHI+pEDSKH2cx+C81Gx8Mn5qOtmGUPm/Up9Y4I1H2dJZ5n17MWzejNo0XAvPh0QL0CrlJEODVQ==", + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "5.16.2", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/parser": "^7.20.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.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", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.12.0", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^27.2.0", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.76.7", - "metro-cache": "0.76.7", - "metro-cache-key": "0.76.7", - "metro-config": "0.76.7", - "metro-core": "0.76.7", - "metro-file-map": "0.76.7", - "metro-inspector-proxy": "0.76.7", - "metro-minify-terser": "0.76.7", - "metro-minify-uglify": "0.76.7", - "metro-react-native-babel-preset": "0.76.7", - "metro-resolver": "0.76.7", - "metro-runtime": "0.76.7", - "metro-source-map": "0.76.7", - "metro-symbolicate": "0.76.7", - "metro-transform-plugins": "0.76.7", - "metro-transform-worker": "0.76.7", - "mime-types": "^2.1.27", - "node-fetch": "^2.2.0", - "nullthrows": "^1.1.1", - "rimraf": "^3.0.2", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "strip-ansi": "^6.0.0", - "throat": "^5.0.0", - "ws": "^7.5.1", - "yargs": "^17.6.2" - }, - "bin": { - "metro": "src/cli.js" + "@octokit/types": "^6.39.0", + "deprecation": "^2.3.1" }, - "engines": { - "node": ">=16" + "peerDependencies": { + "@octokit/core": ">=3" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-babel-transformer": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.7.tgz", - "integrity": "sha512-bgr2OFn0J4r0qoZcHrwEvccF7g9k3wdgTOgk6gmGHrtlZ1Jn3oCpklW/DfZ9PzHfjY2mQammKTc19g/EFGyOJw==", + "node_modules/@octokit/plugin-throttling": { + "version": "4.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.20.0", - "hermes-parser": "0.12.0", - "nullthrows": "^1.1.1" + "@octokit/types": "^6.0.1", + "bottleneck": "^2.15.3" }, "engines": { - "node": ">=16" - } - }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-cache": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.7.tgz", - "integrity": "sha512-nWBMztrs5RuSxZRI7hgFgob5PhYDmxICh9FF8anm9/ito0u0vpPvRxt7sRu8fyeD2AHdXqE7kX32rWY0LiXgeg==", - "dependencies": { - "metro-core": "0.76.7", - "rimraf": "^3.0.2" + "node": ">= 14" }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-cache-key": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.7.tgz", - "integrity": "sha512-0pecoIzwsD/Whn/Qfa+SDMX2YyasV0ndbcgUFx7w1Ct2sLHClujdhQ4ik6mvQmsaOcnGkIyN0zcceMDjC2+BFQ==", - "engines": { - "node": ">=16" + "peerDependencies": { + "@octokit/core": "^4.0.0" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-config": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.7.tgz", - "integrity": "sha512-CFDyNb9bqxZemiChC/gNdXZ7OQkIwmXzkrEXivcXGbgzlt/b2juCv555GWJHyZSlorwnwJfY3uzAFu4A9iRVfg==", + "node_modules/@octokit/request": { + "version": "6.2.8", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", + "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", + "dev": true, "dependencies": { - "connect": "^3.6.5", - "cosmiconfig": "^5.0.5", - "jest-validate": "^29.2.1", - "metro": "0.76.7", - "metro-cache": "0.76.7", - "metro-core": "0.76.7", - "metro-runtime": "0.76.7" + "@octokit/endpoint": "^7.0.0", + "@octokit/request-error": "^3.0.0", + "@octokit/types": "^9.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.7", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">=16" + "node": ">= 14" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-core": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.7.tgz", - "integrity": "sha512-0b8KfrwPmwCMW+1V7ZQPkTy2tsEKZjYG9Pu1PTsu463Z9fxX7WaR0fcHFshv+J1CnQSUTwIGGjbNvj1teKe+pw==", + "node_modules/@octokit/request-error": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", + "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", + "dev": true, "dependencies": { - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.76.7" + "@octokit/types": "^9.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" }, "engines": { - "node": ">=16" + "node": ">= 14" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-file-map": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.7.tgz", - "integrity": "sha512-s+zEkTcJ4mOJTgEE2ht4jIo1DZfeWreQR3tpT3gDV/Y/0UQ8aJBTv62dE775z0GLsWZApiblAYZsj7ZE8P06nw==", + "node_modules/@octokit/request-error/node_modules/@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true + }, + "node_modules/@octokit/request-error/node_modules/@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dev": true, "dependencies": { - "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-util": "^27.2.0", - "jest-worker": "^27.2.0", - "micromatch": "^4.0.4", - "node-abort-controller": "^3.1.1", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" - }, - "engines": { - "node": ">=16" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "@octokit/openapi-types": "^18.0.0" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-inspector-proxy": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.7.tgz", - "integrity": "sha512-rNZ/6edTl/1qUekAhAbaFjczMphM50/UjtxiKulo6vqvgn/Mjd9hVqDvVYfAMZXqPvlusD88n38UjVYPkruLSg==", + "node_modules/@octokit/request/node_modules/@octokit/openapi-types": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", + "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "dev": true + }, + "node_modules/@octokit/request/node_modules/@octokit/types": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", + "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "dev": true, "dependencies": { - "connect": "^3.6.5", - "debug": "^2.2.0", - "node-fetch": "^2.2.0", - "ws": "^7.5.1", - "yargs": "^17.6.2" - }, - "bin": { - "metro-inspector-proxy": "src/cli.js" - }, - "engines": { - "node": ">=16" + "@octokit/openapi-types": "^18.0.0" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-minify-terser": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.7.tgz", - "integrity": "sha512-FQiZGhIxCzhDwK4LxyPMLlq0Tsmla10X7BfNGlYFK0A5IsaVKNJbETyTzhpIwc+YFRT4GkFFwgo0V2N5vxO5HA==", + "node_modules/@octokit/types": { + "version": "6.41.0", + "dev": true, + "license": "MIT", "dependencies": { - "terser": "^5.15.0" - }, - "engines": { - "node": ">=16" + "@octokit/openapi-types": "^12.11.0" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-minify-uglify": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.7.tgz", - "integrity": "sha512-FuXIU3j2uNcSvQtPrAJjYWHruPiQ+EpE++J9Z+VznQKEHcIxMMoQZAfIF2IpZSrZYfLOjVFyGMvj41jQMxV1Vw==", + "node_modules/@oguzhnatly/react-native-image-manipulator": { + "version": "1.0.5", + "resolved": "git+ssh://git@github.com/Expensify/react-native-image-manipulator.git#5cdae3d4455b03a04c57f50be3863e2fe6c92c52", + "integrity": "sha512-C9Br1BQqm6io6lvYHptlLcOHbzlaqxp9tS35P8Qj3pdiiYRTzU3KPvZ61rQ+ZnZ4FOQ6MwPsKsmB8+6WHkAY6Q==", + "license": "MIT" + }, + "node_modules/@onfido/active-video-capture": { + "version": "0.27.12", + "resolved": "https://registry.npmjs.org/@onfido/active-video-capture/-/active-video-capture-0.27.12.tgz", + "integrity": "sha512-VPxakhQL9/PndBUb3nCmPq0xWOYGWffai/Tf4K492BJNQ2cf7VyxC5Ncj1yLSGofKyrNpy4r7e9IFch5jwU+Ig==", "dependencies": { - "uglify-es": "^3.1.9" + "@mediapipe/face_detection": "^0.4.1646425229", + "@mediapipe/face_mesh": "^0.4.1633559619", + "@onfido/castor": "^2.2.2", + "@onfido/castor-icons": "^2.12.0", + "@tensorflow-models/face-detection": "^1.0.1", + "@tensorflow-models/face-landmarks-detection": "^1.0.2", + "@tensorflow/tfjs-backend-wasm": "^3.20.0", + "@tensorflow/tfjs-backend-webgl": "^3.20.0", + "@tensorflow/tfjs-converter": "^3.20.0", + "@tensorflow/tfjs-core": "^3.20.0", + "preact": "10.11.3", + "react-webcam": "^7.1.1" }, "engines": { "node": ">=16" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-react-native-babel-preset": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.7.tgz", - "integrity": "sha512-R25wq+VOSorAK3hc07NW0SmN8z9S/IR0Us0oGAsBcMZnsgkbOxu77Mduqf+f4is/wnWHc5+9bfiqdLnaMngiVw==", + "node_modules/@onfido/active-video-capture/node_modules/@tensorflow-models/face-landmarks-detection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tensorflow-models/face-landmarks-detection/-/face-landmarks-detection-1.0.2.tgz", + "integrity": "sha512-e10xKlBssv2nYg8hV93rNg7ne8NIJVT9Y1d/bpUCcBpPLJpykLw2DQ3nfPnoBpqhKDykFtKDGQVmeXvqc7H+KA==", "dependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-proposal-async-generator-functions": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.20.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.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.20.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.20.0", - "@babel/plugin-transform-flow-strip-types": "^7.20.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": ">=16" + "rimraf": "^3.0.2" }, "peerDependencies": { - "@babel/core": "*" + "@mediapipe/face_mesh": "~0.4.0", + "@tensorflow-models/face-detection": "~1.0.0", + "@tensorflow/tfjs-backend-webgl": "^3.12.0", + "@tensorflow/tfjs-converter": "^3.12.0", + "@tensorflow/tfjs-core": "^3.12.0" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-react-native-babel-transformer": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.7.tgz", - "integrity": "sha512-W6lW3J7y/05ph3c2p3KKJNhH0IdyxdOCbQ5it7aM2MAl0SM4wgKjaV6EYv9b3rHklpV6K3qMH37UKVcjMooWiA==", + "node_modules/@onfido/active-video-capture/node_modules/@tensorflow/tfjs-backend-cpu": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-3.21.0.tgz", + "integrity": "sha512-88S21UAdzyK0CsLUrH17GPTD+26E85OP9CqmLZslaWjWUmBkeTQ5Zqyp6iK+gELnLxPx6q7JsNEeFuPv4254lQ==", "dependencies": { - "@babel/core": "^7.20.0", - "babel-preset-fbjs": "^3.4.0", - "hermes-parser": "0.12.0", - "metro-react-native-babel-preset": "0.76.7", - "nullthrows": "^1.1.1" + "@types/seedrandom": "^2.4.28", + "seedrandom": "^3.0.5" }, "engines": { - "node": ">=16" + "yarn": ">= 1.3.2" }, "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-resolver": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.7.tgz", - "integrity": "sha512-pC0Wgq29HHIHrwz23xxiNgylhI8Rq1V01kQaJ9Kz11zWrIdlrH0ZdnJ7GC6qA0ErROG+cXmJ0rJb8/SW1Zp2IA==", - "engines": { - "node": ">=16" + "@tensorflow/tfjs-core": "3.21.0" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-runtime": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.7.tgz", - "integrity": "sha512-MuWHubQHymUWBpZLwuKZQgA/qbb35WnDAKPo83rk7JRLIFPvzXSvFaC18voPuzJBt1V98lKQIonh6MiC9gd8Ug==", + "node_modules/@onfido/active-video-capture/node_modules/@tensorflow/tfjs-backend-wasm": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-wasm/-/tfjs-backend-wasm-3.21.0.tgz", + "integrity": "sha512-TVkJWrqukdxvIaQn9jZvtXR+7fmT7sti6NQH5OKVcBmFYIW7I3RiRRE66inVrHjEEvIVTUuW9yo9Ialn31EFIw==", "dependencies": { - "@babel/runtime": "^7.0.0", - "react-refresh": "^0.4.0" + "@tensorflow/tfjs-backend-cpu": "3.21.0", + "@types/emscripten": "~0.0.34" }, - "engines": { - "node": ">=16" + "peerDependencies": { + "@tensorflow/tfjs-core": "3.21.0" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-source-map": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.7.tgz", - "integrity": "sha512-Prhx7PeRV1LuogT0Kn5VjCuFu9fVD68eefntdWabrksmNY6mXK8pRqzvNJOhTojh6nek+RxBzZeD6MIOOyXS6w==", + "node_modules/@onfido/active-video-capture/node_modules/@tensorflow/tfjs-backend-webgl": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-3.21.0.tgz", + "integrity": "sha512-N4zitIAT9IX8B8oe489qM3f3VcESxGZIZvHmVP8varOQakTvTX859aaPo1s8hK1qCy4BjSGbweooZe4U8D4kTQ==", "dependencies": { - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0", - "invariant": "^2.2.4", - "metro-symbolicate": "0.76.7", - "nullthrows": "^1.1.1", - "ob1": "0.76.7", - "source-map": "^0.5.6", - "vlq": "^1.0.0" + "@tensorflow/tfjs-backend-cpu": "3.21.0", + "@types/offscreencanvas": "~2019.3.0", + "@types/seedrandom": "^2.4.28", + "@types/webgl-ext": "0.0.30", + "@types/webgl2": "0.0.6", + "seedrandom": "^3.0.5" }, "engines": { - "node": ">=16" - } - }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-symbolicate": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.7.tgz", - "integrity": "sha512-p0zWEME5qLSL1bJb93iq+zt5fz3sfVn9xFYzca1TJIpY5MommEaS64Va87lp56O0sfEIvh4307Oaf/ZzRjuLiQ==", - "dependencies": { - "invariant": "^2.2.4", - "metro-source-map": "0.76.7", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "through2": "^2.0.1", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" + "yarn": ">= 1.3.2" }, - "engines": { - "node": ">=16" + "peerDependencies": { + "@tensorflow/tfjs-core": "3.21.0" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-transform-plugins": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.7.tgz", - "integrity": "sha512-iSmnjVApbdivjuzb88Orb0JHvcEt5veVyFAzxiS5h0QB+zV79w6JCSqZlHCrbNOkOKBED//LqtKbFVakxllnNg==", - "dependencies": { - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.20.0", - "nullthrows": "^1.1.1" - }, - "engines": { - "node": ">=16" + "node_modules/@onfido/active-video-capture/node_modules/@tensorflow/tfjs-converter": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-3.21.0.tgz", + "integrity": "sha512-12Y4zVDq3yW+wSjSDpSv4HnpL2sDZrNiGSg8XNiDE4HQBdjdA+a+Q3sZF/8NV9y2yoBhL5L7V4mMLDdbZBd9/Q==", + "peerDependencies": { + "@tensorflow/tfjs-core": "3.21.0" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-transform-worker": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.7.tgz", - "integrity": "sha512-cGvELqFMVk9XTC15CMVzrCzcO6sO1lURfcbgjuuPdzaWuD11eEyocvkTX0DPiRjsvgAmicz4XYxVzgYl3MykDw==", + "node_modules/@onfido/active-video-capture/node_modules/@tensorflow/tfjs-core": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-3.21.0.tgz", + "integrity": "sha512-YSfsswOqWfd+M4bXIhT3hwtAb+IV8+ODwIxwdFR/7jTAPZP1wMVnSlpKnXHAN64HFOiP+Tm3HmKusEZ0+09A0w==", "dependencies": { - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", - "babel-preset-fbjs": "^3.4.0", - "metro": "0.76.7", - "metro-babel-transformer": "0.76.7", - "metro-cache": "0.76.7", - "metro-cache-key": "0.76.7", - "metro-source-map": "0.76.7", - "metro-transform-plugins": "0.76.7", - "nullthrows": "^1.1.1" + "@types/long": "^4.0.1", + "@types/offscreencanvas": "~2019.3.0", + "@types/seedrandom": "^2.4.28", + "@types/webgl-ext": "0.0.30", + "@webgpu/types": "0.1.16", + "long": "4.0.0", + "node-fetch": "~2.6.1", + "seedrandom": "^3.0.5" }, "engines": { - "node": ">=16" + "yarn": ">= 1.3.2" } }, - "node_modules/@react-native-community/cli-plugin-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/@react-native-community/cli-plugin-metro/node_modules/ob1": { - "version": "0.76.7", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.7.tgz", - "integrity": "sha512-BQdRtxxoUNfSoZxqeBGOyuT9nEYSn18xZHwGMb0mMVpn2NBcYbnyKY4BK2LIHRgw33CBGlUmE+KMaNvyTpLLtQ==", - "engines": { - "node": ">=16" - } + "node_modules/@onfido/active-video-capture/node_modules/@webgpu/types": { + "version": "0.1.16", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.16.tgz", + "integrity": "sha512-9E61voMP4+Rze02jlTXud++Htpjyyk8vw5Hyw9FGRrmhHQg2GqbuOfwf5Klrb8vTxc2XWI3EfO7RUHMpxTj26A==" }, - "node_modules/@react-native-community/cli-plugin-metro/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==", + "node_modules/@onfido/castor": { + "version": "2.2.5", + "license": "Apache-2.0", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "@onfido/castor-tokens": "^1.0.0-beta.6", + "csstype": "^3.1.1" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "@onfido/castor-icons": ">=1.0.0" } }, - "node_modules/@react-native-community/cli-plugin-metro/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/@onfido/castor-icons": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/@onfido/castor-icons/-/castor-icons-2.19.0.tgz", + "integrity": "sha512-LUQDQztjvElC8xu7fINbmmxsS92S/aVNPJyY9AlNlHPTO/Xino71iK+gE8Zbptgcm8++pkqKb+FrZUd83khqHw==", + "peerDependencies": { + "react": ">=17 || ^16.14 || ^15.7 || ^0.14.10" } }, - "node_modules/@react-native-community/cli-plugin-metro/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/@onfido/castor-tokens": { + "version": "1.0.0-beta.6", + "license": "Apache-2.0" }, - "node_modules/@react-native-community/cli-plugin-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/@onfido/opencv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@onfido/opencv/-/opencv-2.1.1.tgz", + "integrity": "sha512-Bwo0YsZrrdm+p5hpNFZ7yrqNVWJxOUbQW9aWDEUtkDWUL+nX2RHIR6F4lBGVmbqnG24anadS/+nEvy80SwD3tQ==", + "dependencies": { + "mirada": "^0.0.15" } }, - "node_modules/@react-native-community/cli-plugin-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/@onfido/react-native-sdk": { + "version": "7.4.0", + "license": "MIT", + "peerDependencies": { + "react": ">=17.0.0", + "react-native": ">=0.68.2 <1.0.x" } }, - "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" - }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, "engines": { - "node": ">=8" + "node": ">=14" } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz", + "integrity": "sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==", + "dev": true, + "dependencies": { + "ansi-html-community": "^0.0.8", + "common-path-prefix": "^3.0.0", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "find-up": "^5.0.0", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^3.0.0", + "source-map": "^0.7.3" + }, "engines": { - "node": ">=8.3.0" + "node": ">= 10.13" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <4.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" }, "peerDependenciesMeta": { - "bufferutil": { + "@types/webpack": { "optional": true }, - "utf-8-validate": { + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { "optional": true } } }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/@react-native-community/cli-plugin-metro/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "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" - }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, "engines": { - "node": ">=12" + "node": ">= 8" } }, - "node_modules/@react-native-community/cli-plugin-metro/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==", - "engines": { - "node": ">=12" - } + "node_modules/@polka/url": { + "version": "1.0.0-next.21", + "dev": true, + "license": "MIT" }, - "node_modules/@react-native-community/cli-server-api": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-11.3.6.tgz", - "integrity": "sha512-8GUKodPnURGtJ9JKg8yOHIRtWepPciI3ssXVw5jik7+dZ43yN8P5BqCoDaq8e1H1yRer27iiOfT7XVnwk8Dueg==", + "node_modules/@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dev": true, "dependencies": { - "@react-native-community/cli-debugger-ui": "11.3.6", - "@react-native-community/cli-tools": "11.3.6", - "compression": "^1.7.1", - "connect": "^3.6.5", - "errorhandler": "^1.5.1", - "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/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" + "@babel/runtime": "^7.13.10" } }, - "node_modules/@react-native-community/cli-server-api/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==", + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@babel/runtime": "^7.13.10" } }, - "node_modules/@react-native-community/cli-server-api/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==", + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@react-native-community/cli-server-api/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-server-api/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" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" }, - "engines": { - "node": ">= 10" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@react-native-community/cli-server-api/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/@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" + "node_modules/@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" }, "peerDependenciesMeta": { - "bufferutil": { + "@types/react": { "optional": true }, - "utf-8-validate": { + "@types/react-dom": { "optional": true } } }, - "node_modules/@react-native-community/cli-tools": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-11.3.6.tgz", - "integrity": "sha512-JpmUTcDwAGiTzLsfMlIAYpCMSJ9w2Qlf7PU7mZIRyEu61UzEawyw83DkqfbzDPBuRwRnaeN44JX2CP/yTO3ThQ==", + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dev": true, "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": "^7.5.2", - "shell-quote": "^1.7.3" + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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==", + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@babel/runtime": "^7.13.10" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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==", + "node_modules/@radix-ui/react-direction": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", + "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/runtime": "^7.13.10" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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==", + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.4.tgz", + "integrity": "sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" }, - "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/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" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "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==", + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "dev": true, "dependencies": { - "is-wsl": "^1.1.0" + "@babel/runtime": "^7.13.10" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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==", + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.3.tgz", + "integrity": "sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==", + "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@react-native-community/cli-types": { - "version": "11.3.6", - "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-11.3.6.tgz", - "integrity": "sha512-6DxjrMKx5x68N/tCJYVYRKAtlRHbtUVBZrnAvkxbRWFD9v4vhNgsPM0RQm8i2vRugeksnao5mbnRGpS6c0awCw==", + "node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dev": true, "dependencies": { - "joi": "^17.2.1" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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==", + "node_modules/@radix-ui/react-popper": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.2.tgz", + "integrity": "sha512-1CnGGfFi/bbqtJZZ0P/NQY20xdG3E0LALJaLUEoKwPLwl6PPPfbeiCqMVQnhoFRAxjJj4RpBRJzDmUgsex2tSg==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "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==", + "node_modules/@radix-ui/react-portal": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.3.tgz", + "integrity": "sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==", + "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "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==", + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" }, - "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" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@react-native-community/cli/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/@react-native-community/cli/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==", + "node_modules/@radix-ui/react-select": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-1.2.2.tgz", + "integrity": "sha512-zI7McXr8fNaSrUY9mZe4x/HC0jTLY9fWNhO1oLWYMQGDXuV4UCivIGTxwioSzO0ZCYX9iSLyWmAh/1TOmX3Cnw==", + "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-dismissable-layer": "1.0.4", + "@radix-ui/react-focus-guards": "1.0.1", + "@radix-ui/react-focus-scope": "1.0.3", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-popper": "1.1.2", + "@radix-ui/react-portal": "1.0.3", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "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/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" + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@react-native-community/cli/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==", + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@react-native-community/cli/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==", + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dev": true, "dependencies": { - "p-try": "^2.0.0" + "@babel/runtime": "^7.13.10" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@react-native-community/cli/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==", + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli/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" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "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==", + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@react-native-community/cli/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/@react-native-community/clipboard": { - "version": "1.5.1", - "license": "MIT", "peerDependencies": { - "react": ">=16.0", - "react-native": ">=0.57.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@react-native-community/datetimepicker": { - "version": "3.5.2", - "license": "MIT", + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dev": true, "dependencies": { - "invariant": "^2.2.4" + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@react-native-community/eslint-config": { - "version": "3.0.0", + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", "dev": true, - "license": "MIT", "dependencies": { - "@react-native-community/eslint-plugin": "^1.1.0", - "@typescript-eslint/eslint-plugin": "^4.22.1", - "@typescript-eslint/parser": "^4.22.1", - "babel-eslint": "^10.1.0", - "eslint-config-prettier": "^6.10.1", - "eslint-plugin-eslint-comments": "^3.1.2", - "eslint-plugin-flowtype": "2.50.3", - "eslint-plugin-jest": "22.4.1", - "eslint-plugin-prettier": "3.1.2", - "eslint-plugin-react": "^7.20.0", - "eslint-plugin-react-hooks": "^4.0.7", - "eslint-plugin-react-native": "^3.10.0", - "prettier": "^2.0.2" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "eslint": ">=7" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", + "node_modules/@radix-ui/react-use-rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" }, "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" }, "peerDependenciesMeta": { - "typescript": { + "@types/react": { "optional": true } } }, - "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" }, "peerDependenciesMeta": { - "typescript": { + "@types/react": { "optional": true } } }, - "node_modules/@react-native-community/eslint-config/node_modules/eslint-config-prettier": { - "version": "6.15.0", + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", "dev": true, - "license": "MIT", "dependencies": { - "get-stdin": "^6.0.0" - }, - "bin": { - "eslint-config-prettier-check": "bin/cli.js" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" }, "peerDependencies": { - "eslint": ">=3.14.1" + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, - "node_modules/@react-native-community/eslint-config/node_modules/eslint-plugin-jest": { - "version": "22.4.1", + "node_modules/@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@react-native-async-storage/async-storage": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.19.3.tgz", + "integrity": "sha512-CwGfoHCWdPOTPS+2fW6YRE1fFBpT9++ahLEroX5hkgwyoQ+TkmjOaUxixdEIoVua9Pz5EF2pGOIJzqOTMWfBlA==", + "dependencies": { + "merge-options": "^3.0.4" }, "peerDependencies": { - "eslint": ">=5" + "react-native": "^0.0.0-0 || 0.60 - 0.72 || 1000.0.0" } }, - "node_modules/@react-native-community/eslint-plugin": { - "version": "1.2.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@react-native-community/netinfo": { - "version": "9.3.10", + "node_modules/@react-native-camera-roll/camera-roll": { + "version": "5.4.0", "license": "MIT", "peerDependencies": { "react-native": ">=0.59" } }, - "node_modules/@react-native-firebase/analytics": { - "version": "12.9.3", - "license": "Apache-2.0", - "peerDependencies": { - "@react-native-firebase/app": "12.9.3" + "node_modules/@react-native-community/cli": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-11.3.6.tgz", + "integrity": "sha512-bdwOIYTBVQ9VK34dsf6t3u6vOUU5lfdhKaAxiAVArjsr7Je88Bgs4sAbsOYsNK3tkE8G77U6wLpekknXcanlww==", + "dependencies": { + "@react-native-community/cli-clean": "11.3.6", + "@react-native-community/cli-config": "11.3.6", + "@react-native-community/cli-debugger-ui": "11.3.6", + "@react-native-community/cli-doctor": "11.3.6", + "@react-native-community/cli-hermes": "11.3.6", + "@react-native-community/cli-plugin-metro": "11.3.6", + "@react-native-community/cli-server-api": "11.3.6", + "@react-native-community/cli-tools": "11.3.6", + "@react-native-community/cli-types": "11.3.6", + "chalk": "^4.1.2", + "commander": "^9.4.1", + "execa": "^5.0.0", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0", + "graceful-fs": "^4.1.3", + "prompts": "^2.4.0", + "semver": "^7.5.2" + }, + "bin": { + "react-native": "build/bin.js" + }, + "engines": { + "node": ">=16" } }, - "node_modules/@react-native-firebase/app": { - "version": "12.9.3", - "license": "Apache-2.0", + "node_modules/@react-native-community/cli-clean": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-11.3.6.tgz", + "integrity": "sha512-jOOaeG5ebSXTHweq1NznVJVAFKtTFWL4lWgUXl845bCGX7t1lL8xQNWHKwT8Oh1pGR2CI3cKmRjY4hBg+pEI9g==", "dependencies": { - "@expo/config-plugins": "^4.0.3", - "opencollective-postinstall": "^2.0.1", - "superstruct": "^0.6.2" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" + "@react-native-community/cli-tools": "11.3.6", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "prompts": "^2.4.0" } }, - "node_modules/@react-native-firebase/crashlytics": { - "version": "12.9.3", - "license": "Apache-2.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": { - "@expo/config-plugins": "^4.0.3", - "stacktrace-js": "^2.0.0" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "@react-native-firebase/app": "12.9.3" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@react-native-firebase/perf": { - "version": "12.9.3", - "license": "Apache-2.0", + "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": { - "@expo/config-plugins": "^4.0.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "@react-native-firebase/app": "12.9.3" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@react-native-google-signin/google-signin": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@react-native-google-signin/google-signin/-/google-signin-10.0.1.tgz", - "integrity": "sha512-oZoU2lfKyn0s0GqqdFsi4v2FSENrxQYQU9DD/RSkxDdkIQ49Wwo6p5LKlgXY04GwZEVdYMuvZN3G89gQW0ig2g==", - "peerDependencies": { - "expo": ">=47.0.0", - "react": "*", - "react-native": "*" + "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" }, - "peerDependenciesMeta": { - "expo": { - "optional": true - } + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@react-native-picker/picker": { - "version": "2.4.4", - "license": "MIT", - "peerDependencies": { - "react": ">=16", - "react-native": ">=0.57" - } + "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/assets-registry": { - "version": "0.72.0", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.72.0.tgz", - "integrity": "sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ==" + "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/codegen": { - "version": "0.72.6", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.72.6.tgz", - "integrity": "sha512-idTVI1es/oopN0jJT/0jB6nKdvTUKE3757zA5+NPXZTeB46CIRbmmos4XBiAec8ufu9/DigLPbHTYAaMNZJ6Ig==", + "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": { - "@babel/parser": "^7.20.0", - "flow-parser": "^0.206.0", - "jscodeshift": "^0.14.0", - "nullthrows": "^1.1.1" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" + "engines": { + "node": ">=8" } }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.72.11", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.72.11.tgz", - "integrity": "sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw==" - }, - "node_modules/@react-native/js-polyfills": { - "version": "0.72.1", - "license": "MIT" - }, - "node_modules/@react-native/metro-config": { - "version": "0.72.11", - "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.72.11.tgz", - "integrity": "sha512-661EyQnDdVelyc0qP/ew7kKkGAh6N6KlkuPLC2SQ8sxaXskVU6fSuNlpLW4bUTBUDFKG8gEOU2hp6rzk4wQnGQ==", - "dev": true, + "node_modules/@react-native-community/cli-config": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-11.3.6.tgz", + "integrity": "sha512-edy7fwllSFLan/6BG6/rznOBCLPrjmJAE10FzkEqNLHowi0bckiAPg1+1jlgQ2qqAxV5kuk+c9eajVfQvPLYDA==", "dependencies": { - "@react-native/js-polyfills": "^0.72.1", - "metro-config": "0.76.8", - "metro-react-native-babel-transformer": "0.76.8", - "metro-runtime": "0.76.8" + "@react-native-community/cli-tools": "11.3.6", + "chalk": "^4.1.2", + "cosmiconfig": "^5.1.0", + "deepmerge": "^4.3.0", + "glob": "^7.1.3", + "joi": "^17.2.1" } }, - "node_modules/@react-native/normalize-color": { - "version": "2.1.0", - "license": "MIT" - }, - "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/virtualized-lists": { - "version": "0.72.8", - "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz", - "integrity": "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==", + "node_modules/@react-native-community/cli-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": { - "invariant": "^2.2.4", - "nullthrows": "^1.1.1" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "react-native": "*" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/@react-native-community/cli-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": { - "@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" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "react": "*" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@react-navigation/devtools": { - "version": "6.0.10", - "dev": true, - "license": "MIT", + "node_modules/@react-native-community/cli-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": { - "deep-equal": "^2.0.5", - "nanoid": "^3.1.23", - "stacktrace-parser": "^0.1.10" + "color-name": "~1.1.4" }, - "peerDependencies": { - "react": "*" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@react-navigation/material-top-tabs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/@react-navigation/material-top-tabs/-/material-top-tabs-6.6.3.tgz", - "integrity": "sha512-7rbBUUvVSKD8jV/a7iV2BTSQ83G7W8grGSwBNojdeXdeZpsUa+wmmKnPtBFhdPv7DDQp7nzAYRx6RCOPtjZSCw==", + "node_modules/@react-native-community/cli-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/@react-native-community/cli-config/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "dependencies": { - "color": "^4.2.3", - "warn-once": "^0.1.0" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" }, - "peerDependencies": { - "@react-navigation/native": "^6.0.0", - "react": "*", - "react-native": "*", - "react-native-pager-view": ">= 4.0.0", - "react-native-tab-view": ">= 3.0.0" + "engines": { + "node": ">=4" } }, - "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-native-community/cli-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/@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==", + "node_modules/@react-native-community/cli-config/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": { - "nanoid": "^3.1.23" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "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==", + "node_modules/@react-native-community/cli-config/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": { - "@react-navigation/elements": "^1.3.17", - "color": "^4.2.3", - "warn-once": "^0.1.0" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, - "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" + "engines": { + "node": ">=4" } }, - "node_modules/@react-navigation/stack/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-native-community/cli-config/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/@react-ng/bounds-observer": { - "version": "0.2.1", - "license": "Apache-2.0", + "node_modules/@react-native-community/cli-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": { - "@html-ng/bounding-client-rect-observer": "^0.1.3", - "@types/react": "^18.0.31", - "@types/react-dom": "^18.0.11", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@react-ng/bounds-observer/node_modules/react-dom": { - "version": "18.2.0", - "license": "MIT", + "node_modules/@react-native-community/cli-debugger-ui": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.6.tgz", + "integrity": "sha512-jhMOSN/iOlid9jn/A2/uf7HbC3u7+lGktpeGSLnHNw21iahFBzcpuO71ekEdlmTZ4zC/WyxBXw9j2ka33T358w==", "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" - }, - "peerDependencies": { - "react": "^18.2.0" + "serve-static": "^1.13.1" } }, - "node_modules/@react-ng/bounds-observer/node_modules/scheduler": { - "version": "0.23.0", - "license": "MIT", + "node_modules/@react-native-community/cli-doctor": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-11.3.6.tgz", + "integrity": "sha512-UT/Tt6omVPi1j6JEX+CObc85eVFghSZwy4GR9JFMsO7gNg2Tvcu1RGWlUkrbmWMAMHw127LUu6TGK66Ugu1NLA==", "dependencies": { - "loose-envify": "^1.1.0" + "@react-native-community/cli-config": "11.3.6", + "@react-native-community/cli-platform-android": "11.3.6", + "@react-native-community/cli-platform-ios": "11.3.6", + "@react-native-community/cli-tools": "11.3.6", + "chalk": "^4.1.2", + "command-exists": "^1.2.8", + "envinfo": "^7.7.2", + "execa": "^5.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": "^7.5.2", + "strip-ansi": "^5.2.0", + "sudo-prompt": "^9.0.0", + "wcwidth": "^1.0.1", + "yaml": "^2.2.1" } }, - "node_modules/@rnmapbox/maps": { - "version": "10.0.11", - "resolved": "https://registry.npmjs.org/@rnmapbox/maps/-/maps-10.0.11.tgz", - "integrity": "sha512-CqaAOEV2nYjZzAwSd7RceGIVVIyDO0G/Vqdvgen20LDuejX9N9Yqw7BrMH8MgIH3FNFxtjwyXiw6aVtybpke0w==", + "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": { - "@turf/along": "6.5.0", - "@turf/distance": "6.5.0", - "@turf/helpers": "6.5.0", - "@turf/length": "6.5.0", - "@turf/nearest-point-on-line": "6.5.0", - "@types/geojson": "^7946.0.7", - "debounce": "^1.2.0" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "expo": ">=47.0.0", - "mapbox-gl": "^2.9.0", - "react": ">=16.6.1", - "react-native": ">=0.59.9" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "expo": { - "optional": true - }, - "mapbox-gl": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@sentry/browser": { - "version": "7.11.1", - "license": "BSD-3-Clause", + "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": { - "@sentry/core": "7.11.1", - "@sentry/types": "7.11.1", - "@sentry/utils": "7.11.1", - "tslib": "^1.9.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@sentry/browser/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" - }, - "node_modules/@sentry/core": { - "version": "7.11.1", - "license": "BSD-3-Clause", + "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": { - "@sentry/hub": "7.11.1", - "@sentry/types": "7.11.1", - "@sentry/utils": "7.11.1", - "tslib": "^1.9.3" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/@sentry/core/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" + "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/@sentry/hub": { - "version": "7.11.1", - "license": "BSD-3-Clause", - "dependencies": { - "@sentry/types": "7.11.1", - "@sentry/utils": "7.11.1", - "tslib": "^1.9.3" - }, + "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/@sentry/hub/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" + "node_modules/@react-native-community/cli-doctor/node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" }, - "node_modules/@sentry/types": { - "version": "7.11.1", - "license": "BSD-3-Clause", + "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": ">=8" + "node": ">=6" } }, - "node_modules/@sentry/utils": { - "version": "7.11.1", - "license": "BSD-3-Clause", + "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": { - "@sentry/types": "7.11.1", - "tslib": "^1.9.3" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/@sentry/utils/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" - }, - "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==", + "node_modules/@react-native-community/cli-hermes": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-11.3.6.tgz", + "integrity": "sha512-O55YAYGZ3XynpUdePPVvNuUPGPY0IJdctLAOHme73OvS80gNwfntHDXfmY70TGHWIfkK2zBhA0B+2v8s5aTyTA==", "dependencies": { - "@hapi/hoek": "^9.0.0" + "@react-native-community/cli-platform-android": "11.3.6", + "@react-native-community/cli-tools": "11.3.6", + "chalk": "^4.1.2", + "hermes-profile-transformer": "^0.0.6", + "ip": "^1.1.5" } }, - "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.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + "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/@sindresorhus/is": { - "version": "4.6.0", - "dev": true, - "license": "MIT", + "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/sindresorhus/is?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@sinonjs/commons": { - "version": "2.0.0", - "license": "BSD-3-Clause", + "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": { - "type-detect": "4.0.8" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.0.2", - "license": "BSD-3-Clause", + "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/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==" + }, + "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": { - "@sinonjs/commons": "^2.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "license": "MIT" + "node_modules/@react-native-community/cli-platform-android": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.6.tgz", + "integrity": "sha512-ZARrpLv5tn3rmhZc//IuDM1LSAdYnjUmjrp58RynlvjLDI4ZEjBAGCQmgysRgXAsK7ekMrfkZgemUczfn9td2A==", + "dependencies": { + "@react-native-community/cli-tools": "11.3.6", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "glob": "^7.1.3", + "logkitty": "^0.7.1" + } }, - "node_modules/@storybook/addon-a11y": { - "version": "6.5.10", - "dev": true, - "license": "MIT", + "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": { - "@storybook/addons": "6.5.10", - "@storybook/api": "6.5.10", - "@storybook/channels": "6.5.10", - "@storybook/client-logger": "6.5.10", - "@storybook/components": "6.5.10", - "@storybook/core-events": "6.5.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.10", - "axe-core": "^4.2.0", - "core-js": "^3.8.2", - "global": "^4.4.0", - "lodash": "^4.17.21", - "react-sizeme": "^3.0.1", - "regenerator-runtime": "^0.13.7", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "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" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/addon-actions": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.2.1.tgz", - "integrity": "sha512-YUiKksgRIUm80eZacj/x14BEYCQY5iel1/Wo6mrTP7bVQrUNiCmnINSrup0DObg7lmIaq00h3ow7gKeYJ+x6zw==", - "dev": true, + "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": { - "@storybook/client-logger": "7.2.1", - "@storybook/components": "7.2.1", - "@storybook/core-events": "7.2.1", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.2.1", - "@storybook/preview-api": "7.2.1", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "polished": "^4.2.2", - "prop-types": "^15.7.2", - "react-inspector": "^6.0.0", - "telejson": "^7.0.3", - "ts-dedent": "^2.0.0", - "uuid": "^9.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "color-name": "~1.1.4" }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/client-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", - "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "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/@storybook/addon-actions/node_modules/@storybook/components": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", - "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", - "dev": true, + "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": { - "@radix-ui/react-select": "^1.2.2", - "@storybook/client-logger": "7.2.1", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/icons": "^1.1.0", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "memoizerific": "^1.11.3", - "use-resize-observer": "^9.1.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/core-events": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", - "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", - "dev": true, + "node_modules/@react-native-community/cli-platform-ios": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.6.tgz", + "integrity": "sha512-tZ9VbXWiRW+F+fbZzpLMZlj93g3Q96HpuMsS6DRhrTiG+vMQ3o6oPWSEEmMGOvJSYU7+y68Dc9ms2liC7VD6cw==", "dependencies": { - "type-fest": "^2.19.0" + "@react-native-community/cli-tools": "11.3.6", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "fast-xml-parser": "^4.0.12", + "glob": "^7.1.3", + "ora": "^5.4.1" } }, - "node_modules/@storybook/addon-actions/node_modules/@storybook/theming": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", - "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", - "dev": true, + "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": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.2.1", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/addon-actions/node_modules/telejson": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", - "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", - "dev": true, - "dependencies": { - "memoizerific": "^1.11.3" - } - }, - "node_modules/@storybook/addon-actions/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, "engines": { - "node": ">=12.20" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/addon-actions/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/addon-backgrounds": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.2.1.tgz", - "integrity": "sha512-F+/eERFnCIjDaOkCbCS0erre1AbjsHoM0IdLu2sGIBwuroFwKYy/ijadSsJ1zk4eBqZFxdyN4CuMN6EsK1Xm+Q==", - "dev": true, + "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": { - "@storybook/client-logger": "7.2.1", - "@storybook/components": "7.2.1", - "@storybook/core-events": "7.2.1", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.2.1", - "@storybook/preview-api": "7.2.1", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "memoizerific": "^1.11.3", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/client-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", - "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/components": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", - "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", - "dev": true, + "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": { - "@radix-ui/react-select": "^1.2.2", - "@storybook/client-logger": "7.2.1", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/icons": "^1.1.0", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "memoizerific": "^1.11.3", - "use-resize-observer": "^9.1.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "color-name": "~1.1.4" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/core-events": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", - "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", - "dev": true, - "dependencies": { - "type-fest": "^2.19.0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/theming": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", - "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.2.1", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.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/@storybook/addon-backgrounds/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, + "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": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/addon-controls": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.2.1.tgz", - "integrity": "sha512-ioILEP4wZo6n8ifr1b+o8xCdMVLWyhHqNWoQoBRixxWwpzR4/fHaKo7wBGSkOOWubkhen6wUMUuiJbDdoGyR7g==", - "dev": true, - "dependencies": { - "@storybook/blocks": "7.2.1", - "@storybook/client-logger": "7.2.1", - "@storybook/components": "7.2.1", - "@storybook/core-common": "7.2.1", - "@storybook/core-events": "7.2.1", - "@storybook/manager-api": "7.2.1", - "@storybook/node-logger": "7.2.1", - "@storybook/preview-api": "7.2.1", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "lodash": "^4.17.21", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@storybook/addon-controls/node_modules/@storybook/client-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", - "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", - "dev": true, + "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": { - "@storybook/global": "^5.0.0" + "has-flag": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/addon-controls/node_modules/@storybook/components": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", - "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.6.tgz", + "integrity": "sha512-D97racrPX3069ibyabJNKw9aJpVcaZrkYiEzsEnx50uauQtPDoQ1ELb/5c6CtMhAEGKoZ0B5MS23BbsSZcLs2g==", "dependencies": { - "@radix-ui/react-select": "^1.2.2", - "@storybook/client-logger": "7.2.1", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/icons": "^1.1.0", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "memoizerific": "^1.11.3", - "use-resize-observer": "^9.1.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@react-native-community/cli-server-api": "11.3.6", + "@react-native-community/cli-tools": "11.3.6", + "chalk": "^4.1.2", + "execa": "^5.0.0", + "metro": "0.76.7", + "metro-config": "0.76.7", + "metro-core": "0.76.7", + "metro-react-native-babel-transformer": "0.76.7", + "metro-resolver": "0.76.7", + "metro-runtime": "0.76.7", + "readline": "^1.3.0" } }, - "node_modules/@storybook/addon-controls/node_modules/@storybook/core-common": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.2.1.tgz", - "integrity": "sha512-g1MQ04lgL16Ct89tPj6RSw72yd+a+ZJ4ceH3Ev+SmnU8efBLPmr6+G5Bx7+rY1W2c6NdpFgtSidjgOGqQ8gppw==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/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": { - "@storybook/node-logger": "7.2.1", - "@storybook/types": "7.2.1", - "@types/find-cache-dir": "^3.2.1", - "@types/node": "^16.0.0", - "@types/node-fetch": "^2.6.4", - "@types/pretty-hrtime": "^1.0.0", - "chalk": "^4.1.0", - "esbuild": "^0.18.0", - "esbuild-register": "^3.4.0", - "file-system-cache": "2.3.0", - "find-cache-dir": "^3.0.0", - "find-up": "^5.0.0", - "fs-extra": "^11.1.0", - "glob": "^10.0.0", - "handlebars": "^4.7.7", - "lazy-universal-dotenv": "^4.0.0", - "node-fetch": "^2.0.0", - "picomatch": "^2.3.0", - "pkg-dir": "^5.0.0", - "pretty-hrtime": "^1.0.3", - "resolve-from": "^5.0.0", - "ts-dedent": "^2.0.0" + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-controls/node_modules/@storybook/core-events": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", - "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-controls/node_modules/@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", - "dev": true, - "dependencies": { - "type-fest": "^2.19.0" - } - }, - "node_modules/@storybook/addon-controls/node_modules/@storybook/node-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.2.1.tgz", - "integrity": "sha512-Ywjqi8iAc26RYbZfmpzvzdKbaQZaD1T/IRNfVGReM/jTXnX0VSdsa6P/pfurbyHcQw//D3TSdqRHOMtbp0nIJg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@storybook/addon-controls/node_modules/@storybook/theming": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", - "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/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": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.2.1", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/yargs-parser": "*" } }, - "node_modules/@storybook/addon-controls/node_modules/@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", - "dev": true - }, - "node_modules/@storybook/addon-controls/node_modules/ansi-styles": { + "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==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -9369,20 +9199,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/addon-controls/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@storybook/addon-controls/node_modules/chalk": { + "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==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -9394,11 +9214,28 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/addon-controls/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, + "node_modules/@react-native-community/cli-plugin-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/@react-native-community/cli-plugin-metro/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==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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" }, @@ -9406,585 +9243,704 @@ "node": ">=7.0.0" } }, - "node_modules/@storybook/addon-controls/node_modules/color-name": { + "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==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@storybook/addon-controls/node_modules/dotenv-expand": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/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": ">=12" + "node": ">=4" } }, - "node_modules/@storybook/addon-controls/node_modules/file-system-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", - "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-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": { - "fs-extra": "11.1.1", - "ramda": "0.29.0" + "ms": "2.0.0" } }, - "node_modules/@storybook/addon-controls/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, + "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/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" }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "engines": { + "node": ">=4" } }, - "node_modules/@storybook/addon-controls/node_modules/find-cache-dir/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==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/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/@react-native-community/cli-plugin-metro/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": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@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/@react-native-community/cli-plugin-metro/node_modules/jest-util/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/@storybook/addon-controls/node_modules/find-cache-dir/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, + "node_modules/@react-native-community/cli-plugin-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": { - "find-up": "^4.0.0" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=8" + "node": ">= 10.13.0" } }, - "node_modules/@storybook/addon-controls/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-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": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@storybook/addon-controls/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.7.tgz", + "integrity": "sha512-67ZGwDeumEPnrHI+pEDSKH2cx+C81Gx8Mn5qOtmGUPm/Up9Y4I1H2dJZ5n17MWzejNo0XAvPh0QL0CrlJEODVQ==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.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", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.12.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^27.2.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.76.7", + "metro-cache": "0.76.7", + "metro-cache-key": "0.76.7", + "metro-config": "0.76.7", + "metro-core": "0.76.7", + "metro-file-map": "0.76.7", + "metro-inspector-proxy": "0.76.7", + "metro-minify-terser": "0.76.7", + "metro-minify-uglify": "0.76.7", + "metro-react-native-babel-preset": "0.76.7", + "metro-resolver": "0.76.7", + "metro-runtime": "0.76.7", + "metro-source-map": "0.76.7", + "metro-symbolicate": "0.76.7", + "metro-transform-plugins": "0.76.7", + "metro-transform-worker": "0.76.7", + "mime-types": "^2.1.27", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "rimraf": "^3.0.2", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "throat": "^5.0.0", + "ws": "^7.5.1", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" }, "engines": { - "node": ">=14.14" + "node": ">=16" } }, - "node_modules/@storybook/addon-controls/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-babel-transformer": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.7.tgz", + "integrity": "sha512-bgr2OFn0J4r0qoZcHrwEvccF7g9k3wdgTOgk6gmGHrtlZ1Jn3oCpklW/DfZ9PzHfjY2mQammKTc19g/EFGyOJw==", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" + "@babel/core": "^7.20.0", + "hermes-parser": "0.12.0", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-cache": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.7.tgz", + "integrity": "sha512-nWBMztrs5RuSxZRI7hgFgob5PhYDmxICh9FF8anm9/ito0u0vpPvRxt7sRu8fyeD2AHdXqE7kX32rWY0LiXgeg==", + "dependencies": { + "metro-core": "0.76.7", + "rimraf": "^3.0.2" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=16" } }, - "node_modules/@storybook/addon-controls/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, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-cache-key": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.7.tgz", + "integrity": "sha512-0pecoIzwsD/Whn/Qfa+SDMX2YyasV0ndbcgUFx7w1Ct2sLHClujdhQ4ik6mvQmsaOcnGkIyN0zcceMDjC2+BFQ==", "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/@storybook/addon-controls/node_modules/lazy-universal-dotenv": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz", - "integrity": "sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-config": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.7.tgz", + "integrity": "sha512-CFDyNb9bqxZemiChC/gNdXZ7OQkIwmXzkrEXivcXGbgzlt/b2juCv555GWJHyZSlorwnwJfY3uzAFu4A9iRVfg==", "dependencies": { - "app-root-dir": "^1.0.2", - "dotenv": "^16.0.0", - "dotenv-expand": "^10.0.0" + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "jest-validate": "^29.2.1", + "metro": "0.76.7", + "metro-cache": "0.76.7", + "metro-core": "0.76.7", + "metro-runtime": "0.76.7" }, "engines": { - "node": ">=14.0.0" + "node": ">=16" } }, - "node_modules/@storybook/addon-controls/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==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-core": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.7.tgz", + "integrity": "sha512-0b8KfrwPmwCMW+1V7ZQPkTy2tsEKZjYG9Pu1PTsu463Z9fxX7WaR0fcHFshv+J1CnQSUTwIGGjbNvj1teKe+pw==", "dependencies": { - "p-locate": "^4.1.0" + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.76.7" }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/@storybook/addon-controls/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, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-file-map": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.7.tgz", + "integrity": "sha512-s+zEkTcJ4mOJTgEE2ht4jIo1DZfeWreQR3tpT3gDV/Y/0UQ8aJBTv62dE775z0GLsWZApiblAYZsj7ZE8P06nw==", "dependencies": { - "semver": "^6.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-util": "^27.2.0", + "jest-worker": "^27.2.0", + "micromatch": "^4.0.4", + "node-abort-controller": "^3.1.1", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" }, "engines": { - "node": ">=8" + "node": ">=16" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/@storybook/addon-controls/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-inspector-proxy": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.7.tgz", + "integrity": "sha512-rNZ/6edTl/1qUekAhAbaFjczMphM50/UjtxiKulo6vqvgn/Mjd9hVqDvVYfAMZXqPvlusD88n38UjVYPkruLSg==", "dependencies": { - "brace-expansion": "^2.0.1" + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "ws": "^7.5.1", + "yargs": "^17.6.2" + }, + "bin": { + "metro-inspector-proxy": "src/cli.js" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16" + } + }, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-minify-terser": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.7.tgz", + "integrity": "sha512-FQiZGhIxCzhDwK4LxyPMLlq0Tsmla10X7BfNGlYFK0A5IsaVKNJbETyTzhpIwc+YFRT4GkFFwgo0V2N5vxO5HA==", + "dependencies": { + "terser": "^5.15.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=16" } }, - "node_modules/@storybook/addon-controls/node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-minify-uglify": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.7.tgz", + "integrity": "sha512-FuXIU3j2uNcSvQtPrAJjYWHruPiQ+EpE++J9Z+VznQKEHcIxMMoQZAfIF2IpZSrZYfLOjVFyGMvj41jQMxV1Vw==", + "dependencies": { + "uglify-es": "^3.1.9" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16" } }, - "node_modules/@storybook/addon-controls/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==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-react-native-babel-preset": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.7.tgz", + "integrity": "sha512-R25wq+VOSorAK3hc07NW0SmN8z9S/IR0Us0oGAsBcMZnsgkbOxu77Mduqf+f4is/wnWHc5+9bfiqdLnaMngiVw==", "dependencies": { - "p-try": "^2.0.0" + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.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.20.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.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.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": ">=6" + "node": ">=16" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/@storybook/addon-controls/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==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-react-native-babel-transformer": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.7.tgz", + "integrity": "sha512-W6lW3J7y/05ph3c2p3KKJNhH0IdyxdOCbQ5it7aM2MAl0SM4wgKjaV6EYv9b3rHklpV6K3qMH37UKVcjMooWiA==", "dependencies": { - "p-limit": "^2.2.0" + "@babel/core": "^7.20.0", + "babel-preset-fbjs": "^3.4.0", + "hermes-parser": "0.12.0", + "metro-react-native-babel-preset": "0.76.7", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">=16" + }, + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/@storybook/addon-controls/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, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-resolver": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.7.tgz", + "integrity": "sha512-pC0Wgq29HHIHrwz23xxiNgylhI8Rq1V01kQaJ9Kz11zWrIdlrH0ZdnJ7GC6qA0ErROG+cXmJ0rJb8/SW1Zp2IA==", "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/@storybook/addon-controls/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-runtime": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.7.tgz", + "integrity": "sha512-MuWHubQHymUWBpZLwuKZQgA/qbb35WnDAKPo83rk7JRLIFPvzXSvFaC18voPuzJBt1V98lKQIonh6MiC9gd8Ug==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "react-refresh": "^0.4.0" + }, + "engines": { + "node": ">=16" } }, - "node_modules/@storybook/addon-controls/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-source-map": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.7.tgz", + "integrity": "sha512-Prhx7PeRV1LuogT0Kn5VjCuFu9fVD68eefntdWabrksmNY6mXK8pRqzvNJOhTojh6nek+RxBzZeD6MIOOyXS6w==", + "dependencies": { + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.76.7", + "nullthrows": "^1.1.1", + "ob1": "0.76.7", + "source-map": "^0.5.6", + "vlq": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=16" } }, - "node_modules/@storybook/addon-controls/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, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-symbolicate": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.7.tgz", + "integrity": "sha512-p0zWEME5qLSL1bJb93iq+zt5fz3sfVn9xFYzca1TJIpY5MommEaS64Va87lp56O0sfEIvh4307Oaf/ZzRjuLiQ==", "dependencies": { - "has-flag": "^4.0.0" + "invariant": "^2.2.4", + "metro-source-map": "0.76.7", + "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" + "node": ">=16" } }, - "node_modules/@storybook/addon-controls/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "engines": { - "node": ">=12.20" + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-transform-plugins": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.7.tgz", + "integrity": "sha512-iSmnjVApbdivjuzb88Orb0JHvcEt5veVyFAzxiS5h0QB+zV79w6JCSqZlHCrbNOkOKBED//LqtKbFVakxllnNg==", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "nullthrows": "^1.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=16" } }, - "node_modules/@storybook/addon-docs": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.2.1.tgz", - "integrity": "sha512-QlUM22wK0cE9glMRt1auP3BccjafdRvcsAnaLvDIL12HRaUqMpH6vvNN3A3MXo6XuzbOmDwAov5mXdCenpz02A==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-transform-worker": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.7.tgz", + "integrity": "sha512-cGvELqFMVk9XTC15CMVzrCzcO6sO1lURfcbgjuuPdzaWuD11eEyocvkTX0DPiRjsvgAmicz4XYxVzgYl3MykDw==", "dependencies": { - "@jest/transform": "^29.3.1", - "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.2.1", - "@storybook/client-logger": "7.2.1", - "@storybook/components": "7.2.1", - "@storybook/csf-plugin": "7.2.1", - "@storybook/csf-tools": "7.2.1", - "@storybook/global": "^5.0.0", - "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.2.1", - "@storybook/postinstall": "7.2.1", - "@storybook/preview-api": "7.2.1", - "@storybook/react-dom-shim": "7.2.1", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "fs-extra": "^11.1.0", - "remark-external-links": "^8.0.0", - "remark-slug": "^6.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "babel-preset-fbjs": "^3.4.0", + "metro": "0.76.7", + "metro-babel-transformer": "0.76.7", + "metro-cache": "0.76.7", + "metro-cache-key": "0.76.7", + "metro-source-map": "0.76.7", + "metro-transform-plugins": "0.76.7", + "nullthrows": "^1.1.1" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "engines": { + "node": ">=16" } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/client-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", - "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "node_modules/@react-native-community/cli-plugin-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/@react-native-community/cli-plugin-metro/node_modules/ob1": { + "version": "0.76.7", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.7.tgz", + "integrity": "sha512-BQdRtxxoUNfSoZxqeBGOyuT9nEYSn18xZHwGMb0mMVpn2NBcYbnyKY4BK2LIHRgw33CBGlUmE+KMaNvyTpLLtQ==", + "engines": { + "node": ">=16" } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/components": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", - "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/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": { - "@radix-ui/react-select": "^1.2.2", - "@storybook/client-logger": "7.2.1", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/icons": "^1.1.0", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "memoizerific": "^1.11.3", - "use-resize-observer": "^9.1.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/@storybook/addon-docs/node_modules/@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", - "dev": true, - "dependencies": { - "type-fest": "^2.19.0" + "node_modules/@react-native-community/cli-plugin-metro/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/@storybook/addon-docs/node_modules/@storybook/csf-tools": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.2.1.tgz", - "integrity": "sha512-QqZOBd6lmhPoIBLutyYYJ3wBwEZF+fUjiL8vhw3lgq+Mrer14lmKrImKDSjd1PsqVbbGQEJZ4TAJHZc3vdQs0w==", - "dev": true, - "dependencies": { - "@babel/generator": "^7.22.9", - "@babel/parser": "^7.22.7", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "@storybook/csf": "^0.1.0", - "@storybook/types": "7.2.1", - "fs-extra": "^11.1.0", - "prettier": "^2.8.0", - "recast": "^0.23.1", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "node_modules/@react-native-community/cli-plugin-metro/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/@storybook/addon-docs/node_modules/@storybook/mdx2-csf": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz", - "integrity": "sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==", - "dev": true + "node_modules/@react-native-community/cli-plugin-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/@storybook/addon-docs/node_modules/@storybook/node-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.2.1.tgz", - "integrity": "sha512-Ywjqi8iAc26RYbZfmpzvzdKbaQZaD1T/IRNfVGReM/jTXnX0VSdsa6P/pfurbyHcQw//D3TSdqRHOMtbp0nIJg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "node_modules/@react-native-community/cli-plugin-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/@storybook/addon-docs/node_modules/@storybook/theming": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", - "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", - "dev": true, + "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": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.2.1", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" + "has-flag": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli-plugin-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": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@storybook/addon-docs/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==", - "dev": true, - "dependencies": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.0" + "node_modules/@react-native-community/cli-plugin-metro/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" } }, - "node_modules/@storybook/addon-docs/node_modules/ast-types": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", - "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", - "dev": true, + "node_modules/@react-native-community/cli-plugin-metro/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dependencies": { - "tslib": "^2.0.1" + "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": ">=4" + "node": ">=12" } }, - "node_modules/@storybook/addon-docs/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, + "node_modules/@react-native-community/cli-plugin-metro/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==", "engines": { - "node": ">=14.14" + "node": ">=12" } }, - "node_modules/@storybook/addon-docs/node_modules/recast": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", - "integrity": "sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==", - "dev": true, + "node_modules/@react-native-community/cli-server-api": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-11.3.6.tgz", + "integrity": "sha512-8GUKodPnURGtJ9JKg8yOHIRtWepPciI3ssXVw5jik7+dZ43yN8P5BqCoDaq8e1H1yRer27iiOfT7XVnwk8Dueg==", "dependencies": { - "assert": "^2.0.0", - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, + "@react-native-community/cli-debugger-ui": "11.3.6", + "@react-native-community/cli-tools": "11.3.6", + "compression": "^1.7.1", + "connect": "^3.6.5", + "errorhandler": "^1.5.1", + "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/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": ">= 4" + "node": ">=8" } }, - "node_modules/@storybook/addon-docs/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, + "node_modules/@react-native-community/cli-server-api/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": ">=12.20" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/addon-docs/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==", - "dev": true, + "node_modules/@react-native-community/cli-server-api/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": { - "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" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@storybook/addon-essentials": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.2.1.tgz", - "integrity": "sha512-+ICPYpuljKOoO1oTRfoax4n+3UD2/xAY8qQmAsRNN3xOBNJfdrsrCocrfY1j74xqoX+Zflvp5V481zq+MpP4XQ==", - "dev": true, + "node_modules/@react-native-community/cli-server-api/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-server-api/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": { - "@storybook/addon-actions": "7.2.1", - "@storybook/addon-backgrounds": "7.2.1", - "@storybook/addon-controls": "7.2.1", - "@storybook/addon-docs": "7.2.1", - "@storybook/addon-highlight": "7.2.1", - "@storybook/addon-measure": "7.2.1", - "@storybook/addon-outline": "7.2.1", - "@storybook/addon-toolbars": "7.2.1", - "@storybook/addon-viewport": "7.2.1", - "@storybook/core-common": "7.2.1", - "@storybook/manager-api": "7.2.1", - "@storybook/node-logger": "7.2.1", - "@storybook/preview-api": "7.2.1", - "ts-dedent": "^2.0.0" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">= 10" + } + }, + "node_modules/@react-native-community/cli-server-api/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/@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": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/core-common": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.2.1.tgz", - "integrity": "sha512-g1MQ04lgL16Ct89tPj6RSw72yd+a+ZJ4ceH3Ev+SmnU8efBLPmr6+G5Bx7+rY1W2c6NdpFgtSidjgOGqQ8gppw==", - "dev": true, + "node_modules/@react-native-community/cli-tools": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-11.3.6.tgz", + "integrity": "sha512-JpmUTcDwAGiTzLsfMlIAYpCMSJ9w2Qlf7PU7mZIRyEu61UzEawyw83DkqfbzDPBuRwRnaeN44JX2CP/yTO3ThQ==", "dependencies": { - "@storybook/node-logger": "7.2.1", - "@storybook/types": "7.2.1", - "@types/find-cache-dir": "^3.2.1", - "@types/node": "^16.0.0", - "@types/node-fetch": "^2.6.4", - "@types/pretty-hrtime": "^1.0.0", - "chalk": "^4.1.0", - "esbuild": "^0.18.0", - "esbuild-register": "^3.4.0", - "file-system-cache": "2.3.0", - "find-cache-dir": "^3.0.0", + "appdirsjs": "^1.2.4", + "chalk": "^4.1.2", "find-up": "^5.0.0", - "fs-extra": "^11.1.0", - "glob": "^10.0.0", - "handlebars": "^4.7.7", - "lazy-universal-dotenv": "^4.0.0", - "node-fetch": "^2.0.0", - "picomatch": "^2.3.0", - "pkg-dir": "^5.0.0", - "pretty-hrtime": "^1.0.3", - "resolve-from": "^5.0.0", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/@storybook/node-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.2.1.tgz", - "integrity": "sha512-Ywjqi8iAc26RYbZfmpzvzdKbaQZaD1T/IRNfVGReM/jTXnX0VSdsa6P/pfurbyHcQw//D3TSdqRHOMtbp0nIJg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "mime": "^2.4.1", + "node-fetch": "^2.6.0", + "open": "^6.2.0", + "ora": "^5.4.1", + "semver": "^7.5.2", + "shell-quote": "^1.7.3" } }, - "node_modules/@storybook/addon-essentials/node_modules/@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", - "dev": true - }, - "node_modules/@storybook/addon-essentials/node_modules/ansi-styles": { + "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==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -9995,20 +9951,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/addon-essentials/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/chalk": { + "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==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10020,11 +9966,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/addon-essentials/node_modules/color-convert": { + "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==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -10032,153 +9977,155 @@ "node": ">=7.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/color-name": { + "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==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@storybook/addon-essentials/node_modules/dotenv-expand": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", - "dev": true, + "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": ">=12" + "node": ">=8" } }, - "node_modules/@storybook/addon-essentials/node_modules/file-system-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", - "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", - "dev": true, - "dependencies": { - "fs-extra": "11.1.1", - "ramda": "0.29.0" + "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/@storybook/addon-essentials/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, + "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": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "is-wsl": "^1.1.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir/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==", - "dev": true, + "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": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir/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, + "node_modules/@react-native-community/cli-types": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-11.3.6.tgz", + "integrity": "sha512-6DxjrMKx5x68N/tCJYVYRKAtlRHbtUVBZrnAvkxbRWFD9v4vhNgsPM0RQm8i2vRugeksnao5mbnRGpS6c0awCw==", "dependencies": { - "find-up": "^4.0.0" + "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/@storybook/addon-essentials/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, + "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": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=14" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/addon-essentials/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, + "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": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=14.14" + "node": ">=7.0.0" } }, - "node_modules/@storybook/addon-essentials/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", - "dev": true, + "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/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": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=8" + } + }, + "node_modules/@react-native-community/cli/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" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=6 <7 || >=8" } }, - "node_modules/@storybook/addon-essentials/node_modules/has-flag": { + "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==", - "dev": true, "engines": { "node": ">=8" } }, - "node_modules/@storybook/addon-essentials/node_modules/lazy-universal-dotenv": { + "node_modules/@react-native-community/cli/node_modules/jsonfile": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz", - "integrity": "sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==", - "dev": true, - "dependencies": { - "app-root-dir": "^1.0.2", - "dotenv": "^16.0.0", - "dotenv-expand": "^10.0.0" - }, - "engines": { - "node": ">=14.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/@storybook/addon-essentials/node_modules/locate-path": { + "node_modules/@react-native-community/cli/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==", - "dev": true, "dependencies": { "p-locate": "^4.1.0" }, @@ -10186,50 +10133,10 @@ "node": ">=8" } }, - "node_modules/@storybook/addon-essentials/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/@storybook/addon-essentials/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/p-limit": { + "node_modules/@react-native-community/cli/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==", - "dev": true, "dependencies": { "p-try": "^2.0.0" }, @@ -10240,11 +10147,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/addon-essentials/node_modules/p-locate": { + "node_modules/@react-native-community/cli/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==", - "dev": true, "dependencies": { "p-limit": "^2.2.0" }, @@ -10252,41 +10158,18 @@ "node": ">=8" } }, - "node_modules/@storybook/addon-essentials/node_modules/path-exists": { + "node_modules/@react-native-community/cli/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/@storybook/addon-essentials/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@storybook/addon-essentials/node_modules/supports-color": { + "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==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -10294,288 +10177,587 @@ "node": ">=8" } }, - "node_modules/@storybook/addon-highlight": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.2.1.tgz", - "integrity": "sha512-6nNqpSMImn1mSGmEKF1o+C6o4lWJjduGYnCIO/ouXExaNLMrdcGKUEWrluABLOeDRPcNC9/EkuIEd8IsDnUX4A==", - "dev": true, + "node_modules/@react-native-community/cli/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/@react-native-community/clipboard": { + "version": "1.5.1", + "license": "MIT", + "peerDependencies": { + "react": ">=16.0", + "react-native": ">=0.57.0" + } + }, + "node_modules/@react-native-community/datetimepicker": { + "version": "3.5.2", + "license": "MIT", "dependencies": { - "@storybook/core-events": "7.2.1", - "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.2.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "invariant": "^2.2.4" } }, - "node_modules/@storybook/addon-highlight/node_modules/@storybook/core-events": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", - "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", + "node_modules/@react-native-community/eslint-config": { + "version": "3.0.0", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "license": "MIT", + "dependencies": { + "@react-native-community/eslint-plugin": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^4.22.1", + "@typescript-eslint/parser": "^4.22.1", + "babel-eslint": "^10.1.0", + "eslint-config-prettier": "^6.10.1", + "eslint-plugin-eslint-comments": "^3.1.2", + "eslint-plugin-flowtype": "2.50.3", + "eslint-plugin-jest": "22.4.1", + "eslint-plugin-prettier": "3.1.2", + "eslint-plugin-react": "^7.20.0", + "eslint-plugin-react-hooks": "^4.0.7", + "eslint-plugin-react-native": "^3.10.0", + "prettier": "^2.0.2" + }, + "peerDependencies": { + "eslint": ">=7" } }, - "node_modules/@storybook/addon-measure": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.2.1.tgz", - "integrity": "sha512-3Rq/B3Iurbo5dZvUN735GHK+9EDm0xw+liK0PdeYvl21/RkXTV+a4aBcWyyeWwwu1S7pdK1B/0WEc9d5Lot8sA==", + "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/eslint-plugin": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", + "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, "dependencies": { - "@storybook/client-logger": "7.2.1", - "@storybook/components": "7.2.1", - "@storybook/core-events": "7.2.1", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.2.1", - "@storybook/preview-api": "7.2.1", - "@storybook/types": "7.2.1", - "tiny-invariant": "^1.3.1" + "@typescript-eslint/experimental-utils": "4.33.0", + "@typescript-eslint/scope-manager": "4.33.0", + "debug": "^4.3.1", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.1.8", + "regexpp": "^3.1.0", + "semver": "^7.3.5", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@typescript-eslint/parser": "^4.0.0", + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" }, "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { + "typescript": { "optional": true } } }, - "node_modules/@storybook/addon-measure/node_modules/@storybook/client-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", - "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", + "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/parser": { + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", + "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, "dependencies": { - "@storybook/global": "^5.0.0" + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "debug": "^4.3.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/addon-measure/node_modules/@storybook/components": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", - "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", + "node_modules/@react-native-community/eslint-config/node_modules/eslint-config-prettier": { + "version": "6.15.0", "dev": true, + "license": "MIT", "dependencies": { - "@radix-ui/react-select": "^1.2.2", - "@storybook/client-logger": "7.2.1", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/icons": "^1.1.0", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "memoizerific": "^1.11.3", - "use-resize-observer": "^9.1.0", - "util-deprecate": "^1.0.2" + "get-stdin": "^6.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "bin": { + "eslint-config-prettier-check": "bin/cli.js" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "eslint": ">=3.14.1" } }, - "node_modules/@storybook/addon-measure/node_modules/@storybook/core-events": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", - "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", + "node_modules/@react-native-community/eslint-config/node_modules/eslint-plugin-jest": { + "version": "22.4.1", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/@storybook/addon-measure/node_modules/@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", + "node_modules/@react-native-community/eslint-plugin": { + "version": "1.2.0", "dev": true, - "dependencies": { - "type-fest": "^2.19.0" + "license": "MIT" + }, + "node_modules/@react-native-community/netinfo": { + "version": "9.3.10", + "license": "MIT", + "peerDependencies": { + "react-native": ">=0.59" } }, - "node_modules/@storybook/addon-measure/node_modules/@storybook/theming": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", - "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", - "dev": true, + "node_modules/@react-native-firebase/analytics": { + "version": "12.9.3", + "license": "Apache-2.0", + "peerDependencies": { + "@react-native-firebase/app": "12.9.3" + } + }, + "node_modules/@react-native-firebase/app": { + "version": "12.9.3", + "license": "Apache-2.0", "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.2.1", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "@expo/config-plugins": "^4.0.3", + "opencollective-postinstall": "^2.0.1", + "superstruct": "^0.6.2" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "*", + "react-native": "*" } }, - "node_modules/@storybook/addon-measure/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "engines": { - "node": ">=12.20" + "node_modules/@react-native-firebase/crashlytics": { + "version": "12.9.3", + "license": "Apache-2.0", + "dependencies": { + "@expo/config-plugins": "^4.0.3", + "stacktrace-js": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@react-native-firebase/app": "12.9.3" } }, - "node_modules/@storybook/addon-outline": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.2.1.tgz", - "integrity": "sha512-v2dYDhfSzV8Nsi1pmjcLEOHGJLlUnpnSXlQymb338YJEFKP2G5ylHzKAHG16MmzKeZZd3rthTB0246SFCyf0hg==", - "dev": true, + "node_modules/@react-native-firebase/perf": { + "version": "12.9.3", + "license": "Apache-2.0", "dependencies": { - "@storybook/client-logger": "7.2.1", - "@storybook/components": "7.2.1", - "@storybook/core-events": "7.2.1", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.2.1", - "@storybook/preview-api": "7.2.1", - "@storybook/types": "7.2.1", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "@expo/config-plugins": "^4.0.3" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@react-native-firebase/app": "12.9.3" + } + }, + "node_modules/@react-native-google-signin/google-signin": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@react-native-google-signin/google-signin/-/google-signin-10.0.1.tgz", + "integrity": "sha512-oZoU2lfKyn0s0GqqdFsi4v2FSENrxQYQU9DD/RSkxDdkIQ49Wwo6p5LKlgXY04GwZEVdYMuvZN3G89gQW0ig2g==", + "peerDependencies": { + "expo": ">=47.0.0", + "react": "*", + "react-native": "*" }, "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-dom": { + "expo": { "optional": true } } }, - "node_modules/@storybook/addon-outline/node_modules/@storybook/client-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", - "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "node_modules/@react-native-picker/picker": { + "version": "2.4.4", + "license": "MIT", + "peerDependencies": { + "react": ">=16", + "react-native": ">=0.57" } }, - "node_modules/@storybook/addon-outline/node_modules/@storybook/components": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", - "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", - "dev": true, - "dependencies": { - "@radix-ui/react-select": "^1.2.2", - "@storybook/client-logger": "7.2.1", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/icons": "^1.1.0", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "memoizerific": "^1.11.3", - "use-resize-observer": "^9.1.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "node_modules/@react-native/assets-registry": { + "version": "0.72.0", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.72.0.tgz", + "integrity": "sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ==" + }, + "node_modules/@react-native/codegen": { + "version": "0.72.6", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.72.6.tgz", + "integrity": "sha512-idTVI1es/oopN0jJT/0jB6nKdvTUKE3757zA5+NPXZTeB46CIRbmmos4XBiAec8ufu9/DigLPbHTYAaMNZJ6Ig==", + "dependencies": { + "@babel/parser": "^7.20.0", + "flow-parser": "^0.206.0", + "jscodeshift": "^0.14.0", + "nullthrows": "^1.1.1" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@babel/preset-env": "^7.1.6" } }, - "node_modules/@storybook/addon-outline/node_modules/@storybook/core-events": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", - "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", + "node_modules/@react-native/gradle-plugin": { + "version": "0.72.11", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.72.11.tgz", + "integrity": "sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw==" + }, + "node_modules/@react-native/js-polyfills": { + "version": "0.72.1", + "license": "MIT" + }, + "node_modules/@react-native/metro-config": { + "version": "0.72.11", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.72.11.tgz", + "integrity": "sha512-661EyQnDdVelyc0qP/ew7kKkGAh6N6KlkuPLC2SQ8sxaXskVU6fSuNlpLW4bUTBUDFKG8gEOU2hp6rzk4wQnGQ==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "dependencies": { + "@react-native/js-polyfills": "^0.72.1", + "metro-config": "0.76.8", + "metro-react-native-babel-transformer": "0.76.8", + "metro-runtime": "0.76.8" } }, - "node_modules/@storybook/addon-outline/node_modules/@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", - "dev": true, + "node_modules/@react-native/normalize-color": { + "version": "2.1.0", + "license": "MIT" + }, + "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/virtualized-lists": { + "version": "0.72.8", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz", + "integrity": "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==", "dependencies": { - "type-fest": "^2.19.0" + "invariant": "^2.2.4", + "nullthrows": "^1.1.1" + }, + "peerDependencies": { + "react-native": "*" } }, - "node_modules/@storybook/addon-outline/node_modules/@storybook/theming": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", - "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", + "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/devtools": { + "version": "6.0.10", "dev": true, + "license": "MIT", "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.2.1", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" + "deep-equal": "^2.0.5", + "nanoid": "^3.1.23", + "stacktrace-parser": "^0.1.10" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "peerDependencies": { + "react": "*" + } + }, + "node_modules/@react-navigation/material-top-tabs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/@react-navigation/material-top-tabs/-/material-top-tabs-6.6.3.tgz", + "integrity": "sha512-7rbBUUvVSKD8jV/a7iV2BTSQ83G7W8grGSwBNojdeXdeZpsUa+wmmKnPtBFhdPv7DDQp7nzAYRx6RCOPtjZSCw==", + "dependencies": { + "color": "^4.2.3", + "warn-once": "^0.1.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@react-navigation/native": "^6.0.0", + "react": "*", + "react-native": "*", + "react-native-pager-view": ">= 4.0.0", + "react-native-tab-view": ">= 3.0.0" } }, - "node_modules/@storybook/addon-outline/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "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/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/@react-navigation/stack/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-ng/bounds-observer": { + "version": "0.2.1", + "license": "Apache-2.0", + "dependencies": { + "@html-ng/bounding-client-rect-observer": "^0.1.3", + "@types/react": "^18.0.31", + "@types/react-dom": "^18.0.11", + "react": "^18.2.0", + "react-dom": "^18.2.0" + } + }, + "node_modules/@react-ng/bounds-observer/node_modules/react-dom": { + "version": "18.2.0", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/@react-ng/bounds-observer/node_modules/scheduler": { + "version": "0.23.0", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/@rnmapbox/maps": { + "version": "10.0.11", + "resolved": "https://registry.npmjs.org/@rnmapbox/maps/-/maps-10.0.11.tgz", + "integrity": "sha512-CqaAOEV2nYjZzAwSd7RceGIVVIyDO0G/Vqdvgen20LDuejX9N9Yqw7BrMH8MgIH3FNFxtjwyXiw6aVtybpke0w==", + "dependencies": { + "@turf/along": "6.5.0", + "@turf/distance": "6.5.0", + "@turf/helpers": "6.5.0", + "@turf/length": "6.5.0", + "@turf/nearest-point-on-line": "6.5.0", + "@types/geojson": "^7946.0.7", + "debounce": "^1.2.0" + }, + "peerDependencies": { + "expo": ">=47.0.0", + "mapbox-gl": "^2.9.0", + "react": ">=16.6.1", + "react-native": ">=0.59.9" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + }, + "mapbox-gl": { + "optional": true + } + } + }, + "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/@sentry/browser": { + "version": "7.11.1", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/core": "7.11.1", + "@sentry/types": "7.11.1", + "@sentry/utils": "7.11.1", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/browser/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/core": { + "version": "7.11.1", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "7.11.1", + "@sentry/types": "7.11.1", + "@sentry/utils": "7.11.1", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/core/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/hub": { + "version": "7.11.1", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "7.11.1", + "@sentry/utils": "7.11.1", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/types": { + "version": "7.11.1", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/utils": { + "version": "7.11.1", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "7.11.1", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/utils/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "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.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@storybook/addon-react-native-web": { - "version": "0.0.19--canary.37.cb55428.0", + "node_modules/@sinonjs/commons": { + "version": "2.0.0", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.0.2", + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^2.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "license": "MIT" + }, + "node_modules/@storybook/addon-a11y": { + "version": "6.5.10", "dev": true, "license": "MIT", + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/components": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/theming": "6.5.10", + "axe-core": "^4.2.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "react-sizeme": "^3.0.1", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, "peerDependencies": { - "@babel/preset-react": "*", - "@storybook/addons": "*", - "@storybook/api": "*", - "@storybook/components": "*", - "@storybook/core-events": "*", - "@storybook/theming": "*", - "babel-plugin-react-native-web": "*", - "metro-react-native-babel-preset": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" }, @@ -10588,17 +10770,28 @@ } } }, - "node_modules/@storybook/addon-toolbars": { + "node_modules/@storybook/addon-actions": { "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.2.1.tgz", - "integrity": "sha512-SEDj9f0EgifPK/Eyh703N1tbk7SZ7yAZOnNUK8T0mwdKrMa7jskvYuift8iSnJA2ldp1siqwe1Obq+Oielp9hQ==", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.2.1.tgz", + "integrity": "sha512-YUiKksgRIUm80eZacj/x14BEYCQY5iel1/Wo6mrTP7bVQrUNiCmnINSrup0DObg7lmIaq00h3ow7gKeYJ+x6zw==", "dev": true, "dependencies": { "@storybook/client-logger": "7.2.1", "@storybook/components": "7.2.1", + "@storybook/core-events": "7.2.1", + "@storybook/global": "^5.0.0", "@storybook/manager-api": "7.2.1", "@storybook/preview-api": "7.2.1", - "@storybook/theming": "7.2.1" + "@storybook/theming": "7.2.1", + "@storybook/types": "7.2.1", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "polished": "^4.2.2", + "prop-types": "^15.7.2", + "react-inspector": "^6.0.0", + "telejson": "^7.0.3", + "ts-dedent": "^2.0.0", + "uuid": "^9.0.0" }, "funding": { "type": "opencollective", @@ -10617,7 +10810,7 @@ } } }, - "node_modules/@storybook/addon-toolbars/node_modules/@storybook/client-logger": { + "node_modules/@storybook/addon-actions/node_modules/@storybook/client-logger": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", @@ -10630,7 +10823,7 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/addon-toolbars/node_modules/@storybook/components": { + "node_modules/@storybook/addon-actions/node_modules/@storybook/components": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", @@ -10656,7 +10849,17 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/addon-toolbars/node_modules/@storybook/csf": { + "node_modules/@storybook/addon-actions/node_modules/@storybook/core-events": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", + "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-actions/node_modules/@storybook/csf": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", @@ -10665,7 +10868,7 @@ "type-fest": "^2.19.0" } }, - "node_modules/@storybook/addon-toolbars/node_modules/@storybook/theming": { + "node_modules/@storybook/addon-actions/node_modules/@storybook/theming": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", @@ -10685,7 +10888,16 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/addon-toolbars/node_modules/type-fest": { + "node_modules/@storybook/addon-actions/node_modules/telejson": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", + "dev": true, + "dependencies": { + "memoizerific": "^1.11.3" + } + }, + "node_modules/@storybook/addon-actions/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", @@ -10697,10 +10909,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/addon-viewport": { + "node_modules/@storybook/addon-actions/node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@storybook/addon-backgrounds": { "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.2.1.tgz", - "integrity": "sha512-aHl3rCh4MNByfWVtjBzkwMtz0iHQHFhatWXVt7mQoTQFBbZHpeynKvLfKBprp+2whK9RoDHqBUjqGTZrECdpRA==", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.2.1.tgz", + "integrity": "sha512-F+/eERFnCIjDaOkCbCS0erre1AbjsHoM0IdLu2sGIBwuroFwKYy/ijadSsJ1zk4eBqZFxdyN4CuMN6EsK1Xm+Q==", "dev": true, "dependencies": { "@storybook/client-logger": "7.2.1", @@ -10710,8 +10931,9 @@ "@storybook/manager-api": "7.2.1", "@storybook/preview-api": "7.2.1", "@storybook/theming": "7.2.1", + "@storybook/types": "7.2.1", "memoizerific": "^1.11.3", - "prop-types": "^15.7.2" + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", @@ -10730,7 +10952,7 @@ } } }, - "node_modules/@storybook/addon-viewport/node_modules/@storybook/client-logger": { + "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/client-logger": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", @@ -10743,7 +10965,7 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/addon-viewport/node_modules/@storybook/components": { + "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/components": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", @@ -10769,7 +10991,7 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/addon-viewport/node_modules/@storybook/core-events": { + "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/core-events": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", @@ -10779,7 +11001,7 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/addon-viewport/node_modules/@storybook/csf": { + "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/csf": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", @@ -10788,7 +11010,7 @@ "type-fest": "^2.19.0" } }, - "node_modules/@storybook/addon-viewport/node_modules/@storybook/theming": { + "node_modules/@storybook/addon-backgrounds/node_modules/@storybook/theming": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", @@ -10808,7 +11030,7 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/addon-viewport/node_modules/type-fest": { + "node_modules/@storybook/addon-backgrounds/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", @@ -10820,23 +11042,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/addons": { - "version": "6.5.10", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", - "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", + "node_modules/@storybook/addon-controls": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.2.1.tgz", + "integrity": "sha512-ioILEP4wZo6n8ifr1b+o8xCdMVLWyhHqNWoQoBRixxWwpzR4/fHaKo7wBGSkOOWubkhen6wUMUuiJbDdoGyR7g==", "dev": true, "dependencies": { - "@storybook/api": "6.5.10", - "@storybook/channels": "6.5.10", - "@storybook/client-logger": "6.5.10", - "@storybook/core-events": "6.5.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.10", - "@storybook/theming": "6.5.10", - "@types/webpack-env": "^1.16.0", - "core-js": "^3.8.2", - "global": "^4.4.0", - "regenerator-runtime": "^0.13.7" + "@storybook/blocks": "7.2.1", + "@storybook/client-logger": "7.2.1", + "@storybook/components": "7.2.1", + "@storybook/core-common": "7.2.1", + "@storybook/core-events": "7.2.1", + "@storybook/manager-api": "7.2.1", + "@storybook/node-logger": "7.2.1", + "@storybook/preview-api": "7.2.1", + "@storybook/theming": "7.2.1", + "@storybook/types": "7.2.1", + "lodash": "^4.17.21", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", @@ -10845,98 +11068,17 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/api": { - "version": "6.5.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/channels": "6.5.10", - "@storybook/client-logger": "6.5.10", - "@storybook/core-events": "6.5.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/router": "6.5.10", - "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.10", - "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", - "global": "^4.4.0", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "regenerator-runtime": "^0.13.7", - "store2": "^2.12.0", - "telejson": "^6.0.8", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/blocks": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.2.1.tgz", - "integrity": "sha512-1fPsFC6n9R267KwxGHiL80OuIdMDRC9QuIW4sRF0tF/G/yvucbofySYRQl/Y8LjsMJq8D4NpG5xLsneSxMP5cg==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.2.1", - "@storybook/client-logger": "7.2.1", - "@storybook/components": "7.2.1", - "@storybook/core-events": "7.2.1", - "@storybook/csf": "^0.1.0", - "@storybook/docs-tools": "7.2.1", - "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.2.1", - "@storybook/preview-api": "7.2.1", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "@types/lodash": "^4.14.167", - "color-convert": "^2.0.1", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "markdown-to-jsx": "^7.1.8", - "memoizerific": "^1.11.3", - "polished": "^4.2.2", - "react-colorful": "^5.1.2", - "telejson": "^7.0.3", - "tocbot": "^4.20.1", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/blocks/node_modules/@storybook/channels": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.2.1.tgz", - "integrity": "sha512-3ZogzjwlFG+oarwnI7TTvWvHVOUtJbjrgZkM5QuLMlxNzIR1XuBY8f01yf4K8+VpdNy9DY+7Q/j6tBThfwYvpA==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.2.1", - "@storybook/core-events": "7.2.1", - "@storybook/global": "^5.0.0", - "qs": "^6.10.0", - "telejson": "^7.0.3", - "tiny-invariant": "^1.3.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@storybook/blocks/node_modules/@storybook/client-logger": { + "node_modules/@storybook/addon-controls/node_modules/@storybook/client-logger": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", @@ -10949,7 +11091,7 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/components": { + "node_modules/@storybook/addon-controls/node_modules/@storybook/components": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", @@ -10975,7 +11117,7 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/core-common": { + "node_modules/@storybook/addon-controls/node_modules/@storybook/core-common": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.2.1.tgz", "integrity": "sha512-g1MQ04lgL16Ct89tPj6RSw72yd+a+ZJ4ceH3Ev+SmnU8efBLPmr6+G5Bx7+rY1W2c6NdpFgtSidjgOGqQ8gppw==", @@ -11009,7 +11151,7 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/core-events": { + "node_modules/@storybook/addon-controls/node_modules/@storybook/core-events": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", @@ -11019,7 +11161,7 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/csf": { + "node_modules/@storybook/addon-controls/node_modules/@storybook/csf": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", @@ -11028,25 +11170,7 @@ "type-fest": "^2.19.0" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/docs-tools": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.2.1.tgz", - "integrity": "sha512-snRdkqdaxAwlalIEtuElySzC68Lo/0KfrGRR6xSDxWIhjAPNqsRLPHEXlZrJ43Tn/V2oxCRU8eb21pP5/58krw==", - "dev": true, - "dependencies": { - "@storybook/core-common": "7.2.1", - "@storybook/preview-api": "7.2.1", - "@storybook/types": "7.2.1", - "@types/doctrine": "^0.0.3", - "doctrine": "^3.0.0", - "lodash": "^4.17.21" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/blocks/node_modules/@storybook/node-logger": { + "node_modules/@storybook/addon-controls/node_modules/@storybook/node-logger": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.2.1.tgz", "integrity": "sha512-Ywjqi8iAc26RYbZfmpzvzdKbaQZaD1T/IRNfVGReM/jTXnX0VSdsa6P/pfurbyHcQw//D3TSdqRHOMtbp0nIJg==", @@ -11056,7 +11180,7 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/blocks/node_modules/@storybook/theming": { + "node_modules/@storybook/addon-controls/node_modules/@storybook/theming": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", @@ -11076,13 +11200,13 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/blocks/node_modules/@types/node": { + "node_modules/@storybook/addon-controls/node_modules/@types/node": { "version": "16.18.46", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", "dev": true }, - "node_modules/@storybook/blocks/node_modules/ansi-styles": { + "node_modules/@storybook/addon-controls/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==", @@ -11097,7 +11221,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/blocks/node_modules/brace-expansion": { + "node_modules/@storybook/addon-controls/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", @@ -11106,7 +11230,7 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@storybook/blocks/node_modules/chalk": { + "node_modules/@storybook/addon-controls/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -11122,7 +11246,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/blocks/node_modules/color-convert": { + "node_modules/@storybook/addon-controls/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==", @@ -11134,13 +11258,13 @@ "node": ">=7.0.0" } }, - "node_modules/@storybook/blocks/node_modules/color-name": { + "node_modules/@storybook/addon-controls/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/@storybook/blocks/node_modules/dotenv-expand": { + "node_modules/@storybook/addon-controls/node_modules/dotenv-expand": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", @@ -11149,7 +11273,7 @@ "node": ">=12" } }, - "node_modules/@storybook/blocks/node_modules/file-system-cache": { + "node_modules/@storybook/addon-controls/node_modules/file-system-cache": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", @@ -11159,7 +11283,7 @@ "ramda": "0.29.0" } }, - "node_modules/@storybook/blocks/node_modules/find-cache-dir": { + "node_modules/@storybook/addon-controls/node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", @@ -11176,7 +11300,7 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/blocks/node_modules/find-cache-dir/node_modules/find-up": { + "node_modules/@storybook/addon-controls/node_modules/find-cache-dir/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==", @@ -11189,7 +11313,7 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/find-cache-dir/node_modules/pkg-dir": { + "node_modules/@storybook/addon-controls/node_modules/find-cache-dir/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==", @@ -11201,7 +11325,7 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/foreground-child": { + "node_modules/@storybook/addon-controls/node_modules/foreground-child": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", @@ -11217,7 +11341,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/blocks/node_modules/fs-extra": { + "node_modules/@storybook/addon-controls/node_modules/fs-extra": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", @@ -11231,7 +11355,7 @@ "node": ">=14.14" } }, - "node_modules/@storybook/blocks/node_modules/glob": { + "node_modules/@storybook/addon-controls/node_modules/glob": { "version": "10.3.3", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", @@ -11253,7 +11377,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/blocks/node_modules/has-flag": { + "node_modules/@storybook/addon-controls/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==", @@ -11262,7 +11386,7 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/lazy-universal-dotenv": { + "node_modules/@storybook/addon-controls/node_modules/lazy-universal-dotenv": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz", "integrity": "sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==", @@ -11276,7 +11400,7 @@ "node": ">=14.0.0" } }, - "node_modules/@storybook/blocks/node_modules/locate-path": { + "node_modules/@storybook/addon-controls/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==", @@ -11288,7 +11412,7 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/make-dir": { + "node_modules/@storybook/addon-controls/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==", @@ -11303,7 +11427,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/blocks/node_modules/minimatch": { + "node_modules/@storybook/addon-controls/node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", @@ -11318,7 +11442,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/blocks/node_modules/minipass": { + "node_modules/@storybook/addon-controls/node_modules/minipass": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", @@ -11327,7 +11451,7 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/@storybook/blocks/node_modules/p-limit": { + "node_modules/@storybook/addon-controls/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==", @@ -11342,7 +11466,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/blocks/node_modules/p-locate": { + "node_modules/@storybook/addon-controls/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==", @@ -11354,7 +11478,7 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/path-exists": { + "node_modules/@storybook/addon-controls/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==", @@ -11363,7 +11487,7 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/semver": { + "node_modules/@storybook/addon-controls/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", @@ -11372,7 +11496,7 @@ "semver": "bin/semver.js" } }, - "node_modules/@storybook/blocks/node_modules/signal-exit": { + "node_modules/@storybook/addon-controls/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", @@ -11384,7 +11508,7 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/blocks/node_modules/supports-color": { + "node_modules/@storybook/addon-controls/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==", @@ -11396,16 +11520,7 @@ "node": ">=8" } }, - "node_modules/@storybook/blocks/node_modules/telejson": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", - "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", - "dev": true, - "dependencies": { - "memoizerific": "^1.11.3" - } - }, - "node_modules/@storybook/blocks/node_modules/type-fest": { + "node_modules/@storybook/addon-controls/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", @@ -11417,58 +11532,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-webpack4": { - "version": "6.5.10", + "node_modules/@storybook/addon-docs": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.2.1.tgz", + "integrity": "sha512-QlUM22wK0cE9glMRt1auP3BccjafdRvcsAnaLvDIL12HRaUqMpH6vvNN3A3MXo6XuzbOmDwAov5mXdCenpz02A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/core": "^7.12.10", - "@storybook/addons": "6.5.10", - "@storybook/api": "6.5.10", - "@storybook/channel-postmessage": "6.5.10", - "@storybook/channels": "6.5.10", - "@storybook/client-api": "6.5.10", - "@storybook/client-logger": "6.5.10", - "@storybook/components": "6.5.10", - "@storybook/core-common": "6.5.10", - "@storybook/core-events": "6.5.10", - "@storybook/node-logger": "6.5.10", - "@storybook/preview-web": "6.5.10", - "@storybook/router": "6.5.10", - "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.10", - "@storybook/theming": "6.5.10", - "@storybook/ui": "6.5.10", - "@types/node": "^14.0.10 || ^16.0.0", - "@types/webpack": "^4.41.26", - "autoprefixer": "^9.8.6", - "babel-loader": "^8.0.0", - "case-sensitive-paths-webpack-plugin": "^2.3.0", - "core-js": "^3.8.2", - "css-loader": "^3.6.0", - "file-loader": "^6.2.0", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^4.1.6", - "glob": "^7.1.6", - "glob-promise": "^3.4.0", - "global": "^4.4.0", - "html-webpack-plugin": "^4.0.0", - "pnp-webpack-plugin": "1.6.4", - "postcss": "^7.0.36", - "postcss-flexbugs-fixes": "^4.2.1", - "postcss-loader": "^4.2.0", - "raw-loader": "^4.0.2", - "stable": "^0.1.8", - "style-loader": "^1.3.0", - "terser-webpack-plugin": "^4.2.3", - "ts-dedent": "^2.0.0", - "url-loader": "^4.1.1", - "util-deprecate": "^1.0.2", - "webpack": "4", - "webpack-dev-middleware": "^3.7.3", - "webpack-filter-warnings-plugin": "^1.2.1", - "webpack-hot-middleware": "^2.25.1", - "webpack-virtual-modules": "^0.2.2" + "@jest/transform": "^29.3.1", + "@mdx-js/react": "^2.1.5", + "@storybook/blocks": "7.2.1", + "@storybook/client-logger": "7.2.1", + "@storybook/components": "7.2.1", + "@storybook/csf-plugin": "7.2.1", + "@storybook/csf-tools": "7.2.1", + "@storybook/global": "^5.0.0", + "@storybook/mdx2-csf": "^1.0.0", + "@storybook/node-logger": "7.2.1", + "@storybook/postinstall": "7.2.1", + "@storybook/preview-api": "7.2.1", + "@storybook/react-dom-shim": "7.2.1", + "@storybook/theming": "7.2.1", + "@storybook/types": "7.2.1", + "fs-extra": "^11.1.0", + "remark-external-links": "^8.0.0", + "remark-slug": "^6.0.0", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", @@ -11477,1000 +11565,1162 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@storybook/builder-webpack4/node_modules/@types/html-minifier-terser": { - "version": "5.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/builder-webpack4/node_modules/@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", - "dev": true - }, - "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", + "node_modules/@storybook/addon-docs/node_modules/@storybook/client-logger": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", + "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", "dev": true, - "license": "MIT" + "dependencies": { + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } }, - "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", + "node_modules/@storybook/addon-docs/node_modules/@storybook/components": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", + "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "@radix-ui/react-select": "^1.2.2", + "@storybook/client-logger": "7.2.1", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/icons": "^1.1.0", + "@storybook/theming": "7.2.1", + "@storybook/types": "7.2.1", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", + "node_modules/@storybook/addon-docs/node_modules/@storybook/csf": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", + "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", "dev": true, - "license": "MIT", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "type-fest": "^2.19.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", + "node_modules/@storybook/addon-docs/node_modules/@storybook/csf-tools": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.2.1.tgz", + "integrity": "sha512-QqZOBd6lmhPoIBLutyYYJ3wBwEZF+fUjiL8vhw3lgq+Mrer14lmKrImKDSjd1PsqVbbGQEJZ4TAJHZc3vdQs0w==", "dev": true, - "license": "MIT", "dependencies": { - "@xtuc/long": "4.2.2" + "@babel/generator": "^7.22.9", + "@babel/parser": "^7.22.7", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "@storybook/csf": "^0.1.0", + "@storybook/types": "7.2.1", + "fs-extra": "^11.1.0", + "prettier": "^2.8.0", + "recast": "^0.23.1", + "ts-dedent": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "dev": true, - "license": "MIT" + "node_modules/@storybook/addon-docs/node_modules/@storybook/mdx2-csf": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-1.1.0.tgz", + "integrity": "sha512-TXJJd5RAKakWx4BtpwvSNdgTDkKM6RkXU8GK34S/LhidQ5Pjz3wcnqb0TxEkfhK/ztbP8nKHqXFwLfa2CYkvQw==", + "dev": true }, - "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", + "node_modules/@storybook/addon-docs/node_modules/@storybook/node-logger": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.2.1.tgz", + "integrity": "sha512-Ywjqi8iAc26RYbZfmpzvzdKbaQZaD1T/IRNfVGReM/jTXnX0VSdsa6P/pfurbyHcQw//D3TSdqRHOMtbp0nIJg==", "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", + "node_modules/@storybook/addon-docs/node_modules/@storybook/theming": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", + "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.2.1", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", + "node_modules/@storybook/addon-docs/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==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", + "node_modules/@storybook/addon-docs/node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@storybook/builder-webpack4/node_modules/acorn": { - "version": "6.4.2", + "node_modules/@storybook/addon-docs/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=0.4.0" + "node": ">=14.14" } }, - "node_modules/@storybook/builder-webpack4/node_modules/ajv": { - "version": "6.12.6", + "node_modules/@storybook/addon-docs/node_modules/recast": { + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", + "integrity": "sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==", "dev": true, - "license": "MIT", "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" + "assert": "^2.0.0", + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 4" } }, - "node_modules/@storybook/builder-webpack4/node_modules/ajv-keywords": { - "version": "3.5.2", + "node_modules/@storybook/addon-docs/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-webpack4/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/@storybook/addon-docs/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==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "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/@storybook/builder-webpack4/node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "node_modules/@storybook/addon-essentials": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.2.1.tgz", + "integrity": "sha512-+ICPYpuljKOoO1oTRfoax4n+3UD2/xAY8qQmAsRNN3xOBNJfdrsrCocrfY1j74xqoX+Zflvp5V481zq+MpP4XQ==", "dev": true, "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" + "@storybook/addon-actions": "7.2.1", + "@storybook/addon-backgrounds": "7.2.1", + "@storybook/addon-controls": "7.2.1", + "@storybook/addon-docs": "7.2.1", + "@storybook/addon-highlight": "7.2.1", + "@storybook/addon-measure": "7.2.1", + "@storybook/addon-outline": "7.2.1", + "@storybook/addon-toolbars": "7.2.1", + "@storybook/addon-viewport": "7.2.1", + "@storybook/core-common": "7.2.1", + "@storybook/manager-api": "7.2.1", + "@storybook/node-logger": "7.2.1", + "@storybook/preview-api": "7.2.1", + "ts-dedent": "^2.0.0" }, - "engines": { - "node": ">= 8.9" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/babel-loader/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/core-common": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.2.1.tgz", + "integrity": "sha512-g1MQ04lgL16Ct89tPj6RSw72yd+a+ZJ4ceH3Ev+SmnU8efBLPmr6+G5Bx7+rY1W2c6NdpFgtSidjgOGqQ8gppw==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@storybook/node-logger": "7.2.1", + "@storybook/types": "7.2.1", + "@types/find-cache-dir": "^3.2.1", + "@types/node": "^16.0.0", + "@types/node-fetch": "^2.6.4", + "@types/pretty-hrtime": "^1.0.0", + "chalk": "^4.1.0", + "esbuild": "^0.18.0", + "esbuild-register": "^3.4.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/braces": { - "version": "2.3.2", + "node_modules/@storybook/addon-essentials/node_modules/@storybook/node-logger": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.2.1.tgz", + "integrity": "sha512-Ywjqi8iAc26RYbZfmpzvzdKbaQZaD1T/IRNfVGReM/jTXnX0VSdsa6P/pfurbyHcQw//D3TSdqRHOMtbp0nIJg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/@types/node": { + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", + "dev": true + }, + "node_modules/@storybook/addon-essentials/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, - "license": "MIT", "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" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/builder-webpack4/node_modules/braces/node_modules/extend-shallow": { + "node_modules/@storybook/addon-essentials/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/cacache": { - "version": "12.0.4", + "node_modules/@storybook/addon-essentials/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, - "license": "ISC", "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/builder-webpack4/node_modules/camelcase": { - "version": "5.3.1", + "node_modules/@storybook/addon-essentials/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, - "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/chownr": { + "node_modules/@storybook/addon-essentials/node_modules/color-name": { "version": "1.1.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/@storybook/builder-webpack4/node_modules/clean-css": { - "version": "4.2.4", + "node_modules/@storybook/addon-essentials/node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, "engines": { - "node": ">= 4.0" + "node": ">=12" } }, - "node_modules/@storybook/builder-webpack4/node_modules/commander": { - "version": "4.1.1", + "node_modules/@storybook/addon-essentials/node_modules/file-system-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", + "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" + "dependencies": { + "fs-extra": "11.1.1", + "ramda": "0.29.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/css-loader": { - "version": "3.6.0", + "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "MIT", "dependencies": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">= 8.9.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/builder-webpack4/node_modules/css-loader/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir/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==", "dev": true, "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/@storybook/builder-webpack4/node_modules/css-select": { - "version": "4.3.0", + "node_modules/@storybook/addon-essentials/node_modules/find-cache-dir/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, - "license": "BSD-2-Clause", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" + "find-up": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/builder-webpack4/node_modules/enhanced-resolve": { - "version": "4.5.0", + "node_modules/@storybook/addon-essentials/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/builder-webpack4/node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", + "node_modules/@storybook/addon-essentials/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, - "license": "MIT", "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": ">=14.14" } }, - "node_modules/@storybook/builder-webpack4/node_modules/eslint-scope": { - "version": "4.0.3", + "node_modules/@storybook/addon-essentials/node_modules/glob": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=4.0.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/builder-webpack4/node_modules/estraverse": { - "version": "4.3.0", + "node_modules/@storybook/addon-essentials/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, - "license": "BSD-2-Clause", "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/@storybook/builder-webpack4/node_modules/fill-range": { + "node_modules/@storybook/addon-essentials/node_modules/lazy-universal-dotenv": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz", + "integrity": "sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==", "dev": true, - "license": "MIT", "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "app-root-dir": "^1.0.2", + "dotenv": "^16.0.0", + "dotenv-expand": "^10.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/@storybook/addon-essentials/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==", "dev": true, - "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin": { - "version": "4.1.6", + "node_modules/@storybook/addon-essentials/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, - "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.5.5", - "chalk": "^2.4.1", - "micromatch": "^3.1.10", - "minimatch": "^3.0.4", - "semver": "^5.6.0", - "tapable": "^1.0.0", - "worker-rpc": "^0.1.0" + "semver": "^6.0.0" }, "engines": { - "node": ">=6.11.5", - "yarn": ">=1.0.0" - } - }, - "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-webpack4/node_modules/html-minifier-terser": { - "version": "5.1.1", + "node_modules/@storybook/addon-essentials/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "MIT", "dependencies": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" + "brace-expansion": "^2.0.1" }, - "bin": { - "html-minifier-terser": "cli.js" + "engines": { + "node": ">=16 || 14 >=14.17" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@storybook/addon-essentials/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/@storybook/builder-webpack4/node_modules/html-webpack-plugin": { - "version": "4.5.2", + "node_modules/@storybook/addon-essentials/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==", "dev": true, - "license": "MIT", "dependencies": { - "@types/html-minifier-terser": "^5.0.0", - "@types/tapable": "^1.0.5", - "@types/webpack": "^4.41.8", - "html-minifier-terser": "^5.0.1", - "loader-utils": "^1.2.3", - "lodash": "^4.17.20", - "pretty-error": "^2.1.1", - "tapable": "^1.1.3", - "util.promisify": "1.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=6.9" + "node": ">=6" }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-webpack4/node_modules/html-webpack-plugin/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "node_modules/@storybook/addon-essentials/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==", "dev": true, "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/@storybook/builder-webpack4/node_modules/htmlparser2": { - "version": "6.1.0", + "node_modules/@storybook/addon-essentials/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, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/builder-webpack4/node_modules/is-buffer": { - "version": "1.1.6", + "node_modules/@storybook/addon-essentials/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT" + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/@storybook/builder-webpack4/node_modules/is-extendable": { - "version": "0.1.1", + "node_modules/@storybook/addon-essentials/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/builder-webpack4/node_modules/is-number": { - "version": "3.0.0", + "node_modules/@storybook/addon-essentials/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, - "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/@storybook/builder-webpack4/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/@storybook/addon-highlight": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.2.1.tgz", + "integrity": "sha512-6nNqpSMImn1mSGmEKF1o+C6o4lWJjduGYnCIO/ouXExaNLMrdcGKUEWrluABLOeDRPcNC9/EkuIEd8IsDnUX4A==", "dev": true, - "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "@storybook/core-events": "7.2.1", + "@storybook/global": "^5.0.0", + "@storybook/preview-api": "7.2.1" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/is-wsl": { - "version": "1.1.0", + "node_modules/@storybook/addon-highlight/node_modules/@storybook/core-events": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", + "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/builder-webpack4/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==", + "node_modules/@storybook/addon-measure": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.2.1.tgz", + "integrity": "sha512-3Rq/B3Iurbo5dZvUN735GHK+9EDm0xw+liK0PdeYvl21/RkXTV+a4aBcWyyeWwwu1S7pdK1B/0WEc9d5Lot8sA==", "dev": true, "dependencies": { - "minimist": "^1.2.0" + "@storybook/client-logger": "7.2.1", + "@storybook/components": "7.2.1", + "@storybook/core-events": "7.2.1", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.2.1", + "@storybook/preview-api": "7.2.1", + "@storybook/types": "7.2.1", + "tiny-invariant": "^1.3.1" }, - "bin": { - "json5": "lib/cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@storybook/builder-webpack4/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==", + "node_modules/@storybook/addon-measure/node_modules/@storybook/client-logger": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", + "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "@storybook/global": "^5.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/lru-cache": { - "version": "5.1.1", + "node_modules/@storybook/addon-measure/node_modules/@storybook/components": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", + "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", "dev": true, - "license": "ISC", "dependencies": { - "yallist": "^3.0.2" + "@radix-ui/react-select": "^1.2.2", + "@storybook/client-logger": "7.2.1", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/icons": "^1.1.0", + "@storybook/theming": "7.2.1", + "@storybook/types": "7.2.1", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack4/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==", + "node_modules/@storybook/addon-measure/node_modules/@storybook/core-events": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", + "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/micromatch": { - "version": "3.1.10", + "node_modules/@storybook/addon-measure/node_modules/@storybook/csf": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", + "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", "dev": true, - "license": "MIT", "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" + "type-fest": "^2.19.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/mkdirp": { - "version": "0.5.6", + "node_modules/@storybook/addon-measure/node_modules/@storybook/theming": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", + "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", "dev": true, - "license": "MIT", "dependencies": { - "minimist": "^1.2.6" + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.2.1", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" }, - "bin": { - "mkdirp": "bin/cmd.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack4/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==", + "node_modules/@storybook/addon-measure/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-webpack4/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==", + "node_modules/@storybook/addon-outline": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.2.1.tgz", + "integrity": "sha512-v2dYDhfSzV8Nsi1pmjcLEOHGJLlUnpnSXlQymb338YJEFKP2G5ylHzKAHG16MmzKeZZd3rthTB0246SFCyf0hg==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "@storybook/client-logger": "7.2.1", + "@storybook/components": "7.2.1", + "@storybook/core-events": "7.2.1", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.2.1", + "@storybook/preview-api": "7.2.1", + "@storybook/types": "7.2.1", + "ts-dedent": "^2.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/builder-webpack4/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" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@storybook/builder-webpack4/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==", + "node_modules/@storybook/addon-outline/node_modules/@storybook/client-logger": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", + "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "@storybook/global": "^5.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/pkg-dir/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==", + "node_modules/@storybook/addon-outline/node_modules/@storybook/components": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", + "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@radix-ui/react-select": "^1.2.2", + "@storybook/client-logger": "7.2.1", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/icons": "^1.1.0", + "@storybook/theming": "7.2.1", + "@storybook/types": "7.2.1", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/pretty-error": { - "version": "2.1.2", + "node_modules/@storybook/addon-outline/node_modules/@storybook/core-events": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", + "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/renderkid": { - "version": "2.0.7", + "node_modules/@storybook/addon-outline/node_modules/@storybook/csf": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", + "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", "dev": true, - "license": "MIT", "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" + "type-fest": "^2.19.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/rimraf": { - "version": "2.7.1", + "node_modules/@storybook/addon-outline/node_modules/@storybook/theming": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", + "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", "dev": true, - "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.2.1", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/schema-utils": { - "version": "2.7.1", + "node_modules/@storybook/addon-outline/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, "engines": { - "node": ">= 8.9.0" + "node": ">=12.20" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@storybook/builder-webpack4/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-webpack4/node_modules/serialize-javascript": { - "version": "4.0.0", + "node_modules/@storybook/addon-react-native-web": { + "version": "0.0.19--canary.37.cb55428.0", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" + "license": "MIT", + "peerDependencies": { + "@babel/preset-react": "*", + "@storybook/addons": "*", + "@storybook/api": "*", + "@storybook/components": "*", + "@storybook/core-events": "*", + "@storybook/theming": "*", + "babel-plugin-react-native-web": "*", + "metro-react-native-babel-preset": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@storybook/builder-webpack4/node_modules/ssri": { - "version": "6.0.2", + "node_modules/@storybook/addon-toolbars": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.2.1.tgz", + "integrity": "sha512-SEDj9f0EgifPK/Eyh703N1tbk7SZ7yAZOnNUK8T0mwdKrMa7jskvYuift8iSnJA2ldp1siqwe1Obq+Oielp9hQ==", "dev": true, - "license": "ISC", "dependencies": { - "figgy-pudding": "^3.5.1" + "@storybook/client-logger": "7.2.1", + "@storybook/components": "7.2.1", + "@storybook/manager-api": "7.2.1", + "@storybook/preview-api": "7.2.1", + "@storybook/theming": "7.2.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@storybook/builder-webpack4/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/@storybook/addon-toolbars/node_modules/@storybook/client-logger": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", + "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "@storybook/global": "^5.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/style-loader": { - "version": "1.3.0", + "node_modules/@storybook/addon-toolbars/node_modules/@storybook/components": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", + "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", "dev": true, - "license": "MIT", "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.7.0" - }, - "engines": { - "node": ">= 8.9.0" + "@radix-ui/react-select": "^1.2.2", + "@storybook/client-logger": "7.2.1", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/icons": "^1.1.0", + "@storybook/theming": "7.2.1", + "@storybook/types": "7.2.1", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/terser": { - "version": "4.8.1", + "node_modules/@storybook/addon-toolbars/node_modules/@storybook/csf": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", + "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "type-fest": "^2.19.0" + } + }, + "node_modules/@storybook/addon-toolbars/node_modules/@storybook/theming": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", + "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.2.1", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" }, - "bin": { - "terser": "bin/terser" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "engines": { - "node": ">=6.0.0" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/terser/node_modules/commander": { - "version": "2.20.3", + "node_modules/@storybook/addon-toolbars/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@storybook/builder-webpack4/node_modules/to-regex-range": { - "version": "2.1.1", + "node_modules/@storybook/addon-viewport": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.2.1.tgz", + "integrity": "sha512-aHl3rCh4MNByfWVtjBzkwMtz0iHQHFhatWXVt7mQoTQFBbZHpeynKvLfKBprp+2whK9RoDHqBUjqGTZrECdpRA==", "dev": true, - "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "@storybook/client-logger": "7.2.1", + "@storybook/components": "7.2.1", + "@storybook/core-events": "7.2.1", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.2.1", + "@storybook/preview-api": "7.2.1", + "@storybook/theming": "7.2.1", + "memoizerific": "^1.11.3", + "prop-types": "^15.7.2" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@storybook/builder-webpack4/node_modules/watchpack": { - "version": "1.7.5", + "node_modules/@storybook/addon-viewport/node_modules/@storybook/client-logger": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", + "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", "dev": true, - "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "@storybook/global": "^5.0.0" }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/webpack": { - "version": "4.46.0", - "dev": true, - "license": "MIT", + "node_modules/@storybook/addon-viewport/node_modules/@storybook/components": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", + "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", + "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" + "@radix-ui/react-select": "^1.2.2", + "@storybook/client-logger": "7.2.1", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/icons": "^1.1.0", + "@storybook/theming": "7.2.1", + "@storybook/types": "7.2.1", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/webpack-filter-warnings-plugin": { - "version": "1.2.1", + "node_modules/@storybook/addon-viewport/node_modules/@storybook/core-events": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", + "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.3 < 5.0.0 || >= 5.10" - }, - "peerDependencies": { - "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "node_modules/@storybook/addon-viewport/node_modules/@storybook/csf": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", + "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", "dev": true, "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" + "type-fest": "^2.19.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", + "node_modules/@storybook/addon-viewport/node_modules/@storybook/theming": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", + "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", "dev": true, - "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.2.1", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/addon-viewport/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, "engines": { - "node": ">= 4" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/terser-webpack-plugin": { - "version": "1.4.5", + "node_modules/@storybook/addons": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-6.5.10.tgz", + "integrity": "sha512-VD4tBCQ23PkSeDoxuHcKy0RfhIs3oMYjBacOZx7d0bvOzK9WjPyvE2ysDAh7r/ceqnwmWHAScIpE+I1RU7gl+g==", "dev": true, - "license": "MIT", "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/router": "6.5.10", + "@storybook/theming": "6.5.10", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7" }, - "engines": { - "node": ">= 6.9.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "webpack": "^4.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack4/node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/@storybook/builder-webpack5": { + "node_modules/@storybook/api": { "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.12.10", - "@storybook/addons": "6.5.10", - "@storybook/api": "6.5.10", - "@storybook/channel-postmessage": "6.5.10", "@storybook/channels": "6.5.10", - "@storybook/client-api": "6.5.10", "@storybook/client-logger": "6.5.10", - "@storybook/components": "6.5.10", - "@storybook/core-common": "6.5.10", "@storybook/core-events": "6.5.10", - "@storybook/node-logger": "6.5.10", - "@storybook/preview-web": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", "@storybook/router": "6.5.10", "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.10", "@storybook/theming": "6.5.10", - "@types/node": "^14.0.10 || ^16.0.0", - "babel-loader": "^8.0.0", - "babel-plugin-named-exports-order": "^0.0.2", - "browser-assert": "^1.2.1", - "case-sensitive-paths-webpack-plugin": "^2.3.0", "core-js": "^3.8.2", - "css-loader": "^5.0.1", - "fork-ts-checker-webpack-plugin": "^6.0.4", - "glob": "^7.1.6", - "glob-promise": "^3.4.0", - "html-webpack-plugin": "^5.0.0", - "path-browserify": "^1.0.1", - "process": "^0.11.10", - "stable": "^0.1.8", - "style-loader": "^2.0.0", - "terser-webpack-plugin": "^5.0.3", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "telejson": "^6.0.8", "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2", - "webpack": "^5.9.0", - "webpack-dev-middleware": "^4.1.0", - "webpack-hot-middleware": "^2.25.1", - "webpack-virtual-modules": "^0.4.1" + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", @@ -12479,259 +12729,319 @@ "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", - "dev": true - }, - "node_modules/@storybook/builder-webpack5/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@storybook/blocks": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.2.1.tgz", + "integrity": "sha512-1fPsFC6n9R267KwxGHiL80OuIdMDRC9QuIW4sRF0tF/G/yvucbofySYRQl/Y8LjsMJq8D4NpG5xLsneSxMP5cg==", "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" + "@storybook/channels": "7.2.1", + "@storybook/client-logger": "7.2.1", + "@storybook/components": "7.2.1", + "@storybook/core-events": "7.2.1", + "@storybook/csf": "^0.1.0", + "@storybook/docs-tools": "7.2.1", + "@storybook/global": "^5.0.0", + "@storybook/manager-api": "7.2.1", + "@storybook/preview-api": "7.2.1", + "@storybook/theming": "7.2.1", + "@storybook/types": "7.2.1", + "@types/lodash": "^4.14.167", + "color-convert": "^2.0.1", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "markdown-to-jsx": "^7.1.8", + "memoizerific": "^1.11.3", + "polished": "^4.2.2", + "react-colorful": "^5.1.2", + "telejson": "^7.0.3", + "tocbot": "^4.20.1", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@storybook/builder-webpack5/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, "peerDependencies": { - "ajv": "^6.9.1" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack5/node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "node_modules/@storybook/blocks/node_modules/@storybook/channels": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.2.1.tgz", + "integrity": "sha512-3ZogzjwlFG+oarwnI7TTvWvHVOUtJbjrgZkM5QuLMlxNzIR1XuBY8f01yf4K8+VpdNy9DY+7Q/j6tBThfwYvpA==", "dev": true, "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" + "@storybook/client-logger": "7.2.1", + "@storybook/core-events": "7.2.1", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.0.3", + "tiny-invariant": "^1.3.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack5/node_modules/babel-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "node_modules/@storybook/blocks/node_modules/@storybook/client-logger": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", + "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" + "@storybook/global": "^5.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack5/node_modules/css-loader": { - "version": "5.2.7", + "node_modules/@storybook/blocks/node_modules/@storybook/components": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.2.1.tgz", + "integrity": "sha512-7JuMT2yK9FGPu9hFCo38tC3FDyr/hJ3CQwU6dSR6E5rT9E658dq31Xl3y/fM5OMzl8MX8Off7TWiybHSuwYJTA==", "dev": true, - "license": "MIT", "dependencies": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">= 10.13.0" + "@radix-ui/react-select": "^1.2.2", + "@storybook/client-logger": "7.2.1", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/icons": "^1.1.0", + "@storybook/theming": "7.2.1", + "@storybook/types": "7.2.1", + "memoizerific": "^1.11.3", + "use-resize-observer": "^9.1.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "webpack": "^4.27.0 || ^5.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack5/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/@storybook/blocks/node_modules/@storybook/core-common": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.2.1.tgz", + "integrity": "sha512-g1MQ04lgL16Ct89tPj6RSw72yd+a+ZJ4ceH3Ev+SmnU8efBLPmr6+G5Bx7+rY1W2c6NdpFgtSidjgOGqQ8gppw==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@storybook/node-logger": "7.2.1", + "@storybook/types": "7.2.1", + "@types/find-cache-dir": "^3.2.1", + "@types/node": "^16.0.0", + "@types/node-fetch": "^2.6.4", + "@types/pretty-hrtime": "^1.0.0", + "chalk": "^4.1.0", + "esbuild": "^0.18.0", + "esbuild-register": "^3.4.0", + "file-system-cache": "2.3.0", + "find-cache-dir": "^3.0.0", + "find-up": "^5.0.0", + "fs-extra": "^11.1.0", + "glob": "^10.0.0", + "handlebars": "^4.7.7", + "lazy-universal-dotenv": "^4.0.0", + "node-fetch": "^2.0.0", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", + "resolve-from": "^5.0.0", + "ts-dedent": "^2.0.0" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack5/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==", + "node_modules/@storybook/blocks/node_modules/@storybook/core-events": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", + "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack5/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@storybook/blocks/node_modules/@storybook/csf": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", + "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "type-fest": "^2.19.0" } }, - "node_modules/@storybook/builder-webpack5/node_modules/icss-utils": { - "version": "5.1.0", + "node_modules/@storybook/blocks/node_modules/@storybook/docs-tools": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.2.1.tgz", + "integrity": "sha512-snRdkqdaxAwlalIEtuElySzC68Lo/0KfrGRR6xSDxWIhjAPNqsRLPHEXlZrJ43Tn/V2oxCRU8eb21pP5/58krw==", "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" + "dependencies": { + "@storybook/core-common": "7.2.1", + "@storybook/preview-api": "7.2.1", + "@storybook/types": "7.2.1", + "@types/doctrine": "^0.0.3", + "doctrine": "^3.0.0", + "lodash": "^4.17.21" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack5/node_modules/jest-worker": { - "version": "27.5.1", + "node_modules/@storybook/blocks/node_modules/@storybook/node-logger": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.2.1.tgz", + "integrity": "sha512-Ywjqi8iAc26RYbZfmpzvzdKbaQZaD1T/IRNfVGReM/jTXnX0VSdsa6P/pfurbyHcQw//D3TSdqRHOMtbp0nIJg==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/builder-webpack5/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/@storybook/builder-webpack5/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==", + "node_modules/@storybook/blocks/node_modules/@storybook/theming": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", + "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.2.1", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/builder-webpack5/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==", + "node_modules/@storybook/blocks/node_modules/@types/node": { + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", + "dev": true + }, + "node_modules/@storybook/blocks/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": { - "semver": "^6.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/builder-webpack5/node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@storybook/blocks/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/@storybook/builder-webpack5/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==", + "node_modules/@storybook/blocks/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": { - "p-try": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/builder-webpack5/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==", + "node_modules/@storybook/blocks/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": { - "p-limit": "^2.2.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/@storybook/builder-webpack5/node_modules/path-browserify": { - "version": "1.0.1", + "node_modules/@storybook/blocks/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/@storybook/blocks/node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=12" + } }, - "node_modules/@storybook/builder-webpack5/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==", + "node_modules/@storybook/blocks/node_modules/file-system-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", + "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", + "dev": true, + "dependencies": { + "fs-extra": "11.1.1", + "ramda": "0.29.0" + } + }, + "node_modules/@storybook/blocks/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/builder-webpack5/node_modules/picocolors": { - "version": "1.0.0", + "node_modules/@storybook/blocks/node_modules/find-cache-dir/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==", "dev": true, - "license": "ISC" + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@storybook/builder-webpack5/node_modules/pkg-dir": { + "node_modules/@storybook/blocks/node_modules/find-cache-dir/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==", @@ -12743,349 +13053,274 @@ "node": ">=8" } }, - "node_modules/@storybook/builder-webpack5/node_modules/postcss": { - "version": "8.4.28", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz", - "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==", + "node_modules/@storybook/blocks/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/builder-webpack5/node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", + "node_modules/@storybook/blocks/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "peerDependencies": { - "postcss": "^8.1.0" + "engines": { + "node": ">=14.14" } }, - "node_modules/@storybook/builder-webpack5/node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "node_modules/@storybook/blocks/node_modules/glob": { + "version": "10.3.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", + "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", "dev": true, "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=16 || 14 >=14.17" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/builder-webpack5/node_modules/postcss-modules-scope": { - "version": "3.0.0", + "node_modules/@storybook/blocks/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, - "license": "ISC", - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=8" } }, - "node_modules/@storybook/builder-webpack5/node_modules/postcss-modules-values": { + "node_modules/@storybook/blocks/node_modules/lazy-universal-dotenv": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz", + "integrity": "sha512-aXpZJRnTkpK6gQ/z4nk+ZBLd/Qdp118cvPruLSIQzQNRhKwEcdXCOzXuF55VDqIiuAaY3UGZ10DJtvZzDcvsxg==", "dev": true, - "license": "ISC", "dependencies": { - "icss-utils": "^5.0.0" + "app-root-dir": "^1.0.2", + "dotenv": "^16.0.0", + "dotenv-expand": "^10.0.0" }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=14.0.0" } }, - "node_modules/@storybook/builder-webpack5/node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "node_modules/@storybook/blocks/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==", "dev": true, "dependencies": { - "randombytes": "^2.1.0" + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/builder-webpack5/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/@storybook/blocks/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, - "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "semver": "^6.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-webpack5/node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "node_modules/@storybook/blocks/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 10.13.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware": { - "version": "4.3.0", + "node_modules/@storybook/blocks/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@storybook/blocks/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==", "dev": true, - "license": "MIT", "dependencies": { - "colorette": "^1.2.2", - "mem": "^8.1.1", - "memfs": "^3.2.2", - "mime-types": "^2.1.30", - "range-parser": "^1.2.1", - "schema-utils": "^3.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">= v10.23.3" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/builder-webpack5/node_modules/webpack-virtual-modules": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", - "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", - "dev": true - }, - "node_modules/@storybook/channel-postmessage": { - "version": "6.5.10", + "node_modules/@storybook/blocks/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==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/channels": "6.5.10", - "@storybook/client-logger": "6.5.10", - "@storybook/core-events": "6.5.10", - "core-js": "^3.8.2", - "global": "^4.4.0", - "qs": "^6.10.0", - "telejson": "^6.0.8" + "p-limit": "^2.2.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/channel-websocket": { - "version": "6.5.10", + "node_modules/@storybook/blocks/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, - "license": "MIT", - "dependencies": { - "@storybook/channels": "6.5.10", - "@storybook/client-logger": "6.5.10", - "core-js": "^3.8.2", - "global": "^4.4.0", - "telejson": "^6.0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/channels": { - "version": "6.5.10", + "node_modules/@storybook/blocks/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "dependencies": { - "core-js": "^3.8.2", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@storybook/client-api": { - "version": "6.5.10", + "node_modules/@storybook/blocks/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/addons": "6.5.10", - "@storybook/channel-postmessage": "6.5.10", - "@storybook/channels": "6.5.10", - "@storybook/client-logger": "6.5.10", - "@storybook/core-events": "6.5.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.10", - "@types/qs": "^6.9.5", - "@types/webpack-env": "^1.16.0", - "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", - "global": "^4.4.0", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "regenerator-runtime": "^0.13.7", - "store2": "^2.12.0", - "synchronous-promise": "^2.0.15", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" + "engines": { + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@storybook/client-logger": { - "version": "6.5.10", + "node_modules/@storybook/blocks/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, - "license": "MIT", "dependencies": { - "core-js": "^3.8.2", - "global": "^4.4.0" + "has-flag": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/components": { - "version": "6.5.10", + "node_modules/@storybook/blocks/node_modules/telejson": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/client-logger": "6.5.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/theming": "6.5.10", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "regenerator-runtime": "^0.13.7", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "memoizerific": "^1.11.3" } }, - "node_modules/@storybook/core": { - "version": "6.5.10", + "node_modules/@storybook/blocks/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/core-client": "6.5.10", - "@storybook/core-server": "6.5.10" + "engines": { + "node": ">=12.20" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "webpack": "*" - }, - "peerDependenciesMeta": { - "@storybook/builder-webpack5": { - "optional": true - }, - "@storybook/manager-webpack5": { - "optional": true - }, - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/core-client": { + "node_modules/@storybook/builder-webpack4": { "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { + "@babel/core": "^7.12.10", "@storybook/addons": "6.5.10", + "@storybook/api": "6.5.10", "@storybook/channel-postmessage": "6.5.10", - "@storybook/channel-websocket": "6.5.10", + "@storybook/channels": "6.5.10", "@storybook/client-api": "6.5.10", "@storybook/client-logger": "6.5.10", + "@storybook/components": "6.5.10", + "@storybook/core-common": "6.5.10", "@storybook/core-events": "6.5.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/node-logger": "6.5.10", "@storybook/preview-web": "6.5.10", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", "@storybook/store": "6.5.10", + "@storybook/theming": "6.5.10", "@storybook/ui": "6.5.10", - "airbnb-js-shims": "^2.2.1", - "ansi-to-html": "^0.6.11", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/webpack": "^4.41.26", + "autoprefixer": "^9.8.6", + "babel-loader": "^8.0.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", "core-js": "^3.8.2", + "css-loader": "^3.6.0", + "file-loader": "^6.2.0", + "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^4.1.6", + "glob": "^7.1.6", + "glob-promise": "^3.4.0", "global": "^4.4.0", - "lodash": "^4.17.21", - "qs": "^6.10.0", - "regenerator-runtime": "^0.13.7", + "html-webpack-plugin": "^4.0.0", + "pnp-webpack-plugin": "1.6.4", + "postcss": "^7.0.36", + "postcss-flexbugs-fixes": "^4.2.1", + "postcss-loader": "^4.2.0", + "raw-loader": "^4.0.2", + "stable": "^0.1.8", + "style-loader": "^1.3.0", + "terser-webpack-plugin": "^4.2.3", "ts-dedent": "^2.0.0", - "unfetch": "^4.2.0", - "util-deprecate": "^1.0.2" + "url-loader": "^4.1.1", + "util-deprecate": "^1.0.2", + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", + "webpack-filter-warnings-plugin": "^1.2.1", + "webpack-hot-middleware": "^2.25.1", + "webpack-virtual-modules": "^0.2.2" }, "funding": { "type": "opencollective", @@ -13093,8 +13328,7 @@ }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "webpack": "*" + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -13102,107 +13336,24 @@ } } }, - "node_modules/@storybook/core-common": { - "version": "6.5.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.12.10", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-decorators": "^7.12.12", - "@babel/plugin-proposal-export-default-from": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.7", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-private-property-in-object": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.12", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/preset-env": "^7.12.11", - "@babel/preset-react": "^7.12.10", - "@babel/preset-typescript": "^7.12.7", - "@babel/register": "^7.12.1", - "@storybook/node-logger": "6.5.10", - "@storybook/semver": "^7.3.2", - "@types/node": "^14.0.10 || ^16.0.0", - "@types/pretty-hrtime": "^1.0.0", - "babel-loader": "^8.0.0", - "babel-plugin-macros": "^3.0.1", - "babel-plugin-polyfill-corejs3": "^0.1.0", - "chalk": "^4.1.0", - "core-js": "^3.8.2", - "express": "^4.17.1", - "file-system-cache": "^1.0.5", - "find-up": "^5.0.0", - "fork-ts-checker-webpack-plugin": "^6.0.4", - "fs-extra": "^9.0.1", - "glob": "^7.1.6", - "handlebars": "^4.7.7", - "interpret": "^2.2.0", - "json5": "^2.1.3", - "lazy-universal-dotenv": "^3.0.1", - "picomatch": "^2.3.0", - "pkg-dir": "^5.0.0", - "pretty-hrtime": "^1.0.3", - "resolve-from": "^5.0.0", - "slash": "^3.0.0", - "telejson": "^6.0.8", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2", - "webpack": "4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@storybook/core-common/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "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/@storybook/core-common/node_modules/@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", - "dev": true - }, - "node_modules/@storybook/core-common/node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/core-common/node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", + "node_modules/@storybook/builder-webpack4/node_modules/@types/html-minifier-terser": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/builder-webpack4/node_modules/@types/node": { + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", + "dev": true + }, + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { @@ -13212,7 +13363,7 @@ "@webassemblyjs/wasm-gen": "1.9.0" } }, - "node_modules/@storybook/core-common/node_modules/@webassemblyjs/ieee754": { + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/ieee754": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -13220,7 +13371,7 @@ "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/@storybook/core-common/node_modules/@webassemblyjs/leb128": { + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/leb128": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -13228,12 +13379,12 @@ "@xtuc/long": "4.2.2" } }, - "node_modules/@storybook/core-common/node_modules/@webassemblyjs/utf8": { + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/utf8": { "version": "1.9.0", "dev": true, "license": "MIT" }, - "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-edit": { + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-edit": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -13248,7 +13399,7 @@ "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-gen": { + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-gen": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -13260,7 +13411,7 @@ "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-opt": { + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-opt": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -13271,7 +13422,7 @@ "@webassemblyjs/wasm-parser": "1.9.0" } }, - "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-parser": { + "node_modules/@storybook/builder-webpack4/node_modules/@webassemblyjs/wasm-parser": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -13284,7 +13435,7 @@ "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/@storybook/core-common/node_modules/acorn": { + "node_modules/@storybook/builder-webpack4/node_modules/acorn": { "version": "6.4.2", "dev": true, "license": "MIT", @@ -13295,7 +13446,7 @@ "node": ">=0.4.0" } }, - "node_modules/@storybook/core-common/node_modules/ajv": { + "node_modules/@storybook/builder-webpack4/node_modules/ajv": { "version": "6.12.6", "dev": true, "license": "MIT", @@ -13310,7 +13461,7 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@storybook/core-common/node_modules/ajv-keywords": { + "node_modules/@storybook/builder-webpack4/node_modules/ajv-keywords": { "version": "3.5.2", "dev": true, "license": "MIT", @@ -13318,21 +13469,15 @@ "ajv": "^6.9.1" } }, - "node_modules/@storybook/core-common/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@storybook/builder-webpack4/node_modules/ansi-regex": { + "version": "2.1.1", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/@storybook/core-common/node_modules/babel-loader": { + "node_modules/@storybook/builder-webpack4/node_modules/babel-loader": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", @@ -13351,7 +13496,7 @@ "webpack": ">=2" } }, - "node_modules/@storybook/core-common/node_modules/babel-loader/node_modules/find-cache-dir": { + "node_modules/@storybook/builder-webpack4/node_modules/babel-loader/node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", @@ -13368,76 +13513,7 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/core-common/node_modules/babel-loader/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==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/core-common/node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/@storybook/core-common/node_modules/babel-loader/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/@storybook/core-common/node_modules/babel-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/@storybook/core-common/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.1.7", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.1.5", - "core-js-compat": "^3.8.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@storybook/core-common/node_modules/braces": { + "node_modules/@storybook/builder-webpack4/node_modules/braces": { "version": "2.3.2", "dev": true, "license": "MIT", @@ -13457,7 +13533,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/core-common/node_modules/braces/node_modules/extend-shallow": { + "node_modules/@storybook/builder-webpack4/node_modules/braces/node_modules/extend-shallow": { "version": "2.0.1", "dev": true, "license": "MIT", @@ -13468,7 +13544,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/core-common/node_modules/cacache": { + "node_modules/@storybook/builder-webpack4/node_modules/cacache": { "version": "12.0.4", "dev": true, "license": "ISC", @@ -13490,48 +13566,98 @@ "y18n": "^4.0.0" } }, - "node_modules/@storybook/core-common/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@storybook/builder-webpack4/node_modules/camelcase": { + "version": "5.3.1", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6" } }, - "node_modules/@storybook/core-common/node_modules/chownr": { + "node_modules/@storybook/builder-webpack4/node_modules/chownr": { "version": "1.1.4", "dev": true, "license": "ISC" }, - "node_modules/@storybook/core-common/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@storybook/builder-webpack4/node_modules/clean-css": { + "version": "4.2.4", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "source-map": "~0.6.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 4.0" } }, - "node_modules/@storybook/core-common/node_modules/color-name": { - "version": "1.1.4", + "node_modules/@storybook/builder-webpack4/node_modules/commander": { + "version": "4.1.1", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 6" + } }, - "node_modules/@storybook/core-common/node_modules/commander": { - "version": "2.20.3", + "node_modules/@storybook/builder-webpack4/node_modules/css-loader": { + "version": "3.6.0", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } }, - "node_modules/@storybook/core-common/node_modules/enhanced-resolve": { + "node_modules/@storybook/builder-webpack4/node_modules/css-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/css-select": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/enhanced-resolve": { "version": "4.5.0", "dev": true, "dependencies": { @@ -13543,7 +13669,7 @@ "node": ">=6.9.0" } }, - "node_modules/@storybook/core-common/node_modules/enhanced-resolve/node_modules/memory-fs": { + "node_modules/@storybook/builder-webpack4/node_modules/enhanced-resolve/node_modules/memory-fs": { "version": "0.5.0", "dev": true, "license": "MIT", @@ -13555,7 +13681,7 @@ "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/@storybook/core-common/node_modules/eslint-scope": { + "node_modules/@storybook/builder-webpack4/node_modules/eslint-scope": { "version": "4.0.3", "dev": true, "license": "BSD-2-Clause", @@ -13567,7 +13693,7 @@ "node": ">=4.0.0" } }, - "node_modules/@storybook/core-common/node_modules/estraverse": { + "node_modules/@storybook/builder-webpack4/node_modules/estraverse": { "version": "4.3.0", "dev": true, "license": "BSD-2-Clause", @@ -13575,7 +13701,7 @@ "node": ">=4.0" } }, - "node_modules/@storybook/core-common/node_modules/fill-range": { + "node_modules/@storybook/builder-webpack4/node_modules/fill-range": { "version": "4.0.0", "dev": true, "license": "MIT", @@ -13589,7 +13715,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/core-common/node_modules/fill-range/node_modules/extend-shallow": { + "node_modules/@storybook/builder-webpack4/node_modules/fill-range/node_modules/extend-shallow": { "version": "2.0.1", "dev": true, "license": "MIT", @@ -13600,20 +13726,113 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/core-common/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin": { + "version": "4.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.5.5", + "chalk": "^2.4.1", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "engines": { + "node": ">=6.11.5", + "yarn": ">=1.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/html-minifier-terser": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/html-webpack-plugin": { + "version": "4.5.2", "dev": true, "license": "MIT", + "dependencies": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6.9" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/core-common/node_modules/is-buffer": { + "node_modules/@storybook/builder-webpack4/node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/htmlparser2": { + "version": "6.1.0", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/is-buffer": { "version": "1.1.6", "dev": true, "license": "MIT" }, - "node_modules/@storybook/core-common/node_modules/is-extendable": { + "node_modules/@storybook/builder-webpack4/node_modules/is-extendable": { "version": "0.1.1", "dev": true, "license": "MIT", @@ -13621,7 +13840,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/core-common/node_modules/is-number": { + "node_modules/@storybook/builder-webpack4/node_modules/is-number": { "version": "3.0.0", "dev": true, "license": "MIT", @@ -13632,7 +13851,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/core-common/node_modules/is-number/node_modules/kind-of": { + "node_modules/@storybook/builder-webpack4/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "dev": true, "license": "MIT", @@ -13643,7 +13862,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/core-common/node_modules/is-wsl": { + "node_modules/@storybook/builder-webpack4/node_modules/is-wsl": { "version": "1.1.0", "dev": true, "license": "MIT", @@ -13651,26 +13870,12 @@ "node": ">=4" } }, - "node_modules/@storybook/core-common/node_modules/json-schema-traverse": { + "node_modules/@storybook/builder-webpack4/node_modules/json-schema-traverse": { "version": "0.4.1", "dev": true, "license": "MIT" }, - "node_modules/@storybook/core-common/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@storybook/core-common/node_modules/loader-utils/node_modules/json5": { + "node_modules/@storybook/builder-webpack4/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==", @@ -13682,7 +13887,7 @@ "json5": "lib/cli.js" } }, - "node_modules/@storybook/core-common/node_modules/locate-path": { + "node_modules/@storybook/builder-webpack4/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==", @@ -13694,7 +13899,7 @@ "node": ">=8" } }, - "node_modules/@storybook/core-common/node_modules/lru-cache": { + "node_modules/@storybook/builder-webpack4/node_modules/lru-cache": { "version": "5.1.1", "dev": true, "license": "ISC", @@ -13702,7 +13907,7 @@ "yallist": "^3.0.2" } }, - "node_modules/@storybook/core-common/node_modules/make-dir": { + "node_modules/@storybook/builder-webpack4/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==", @@ -13717,7 +13922,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/core-common/node_modules/micromatch": { + "node_modules/@storybook/builder-webpack4/node_modules/micromatch": { "version": "3.1.10", "dev": true, "license": "MIT", @@ -13740,7 +13945,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/core-common/node_modules/mkdirp": { + "node_modules/@storybook/builder-webpack4/node_modules/mkdirp": { "version": "0.5.6", "dev": true, "license": "MIT", @@ -13751,7 +13956,7 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/@storybook/core-common/node_modules/p-limit": { + "node_modules/@storybook/builder-webpack4/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==", @@ -13766,7 +13971,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/core-common/node_modules/p-locate": { + "node_modules/@storybook/builder-webpack4/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==", @@ -13778,7 +13983,7 @@ "node": ">=8" } }, - "node_modules/@storybook/core-common/node_modules/path-exists": { + "node_modules/@storybook/builder-webpack4/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==", @@ -13787,67 +13992,136 @@ "node": ">=8" } }, - "node_modules/@storybook/core-common/node_modules/rimraf": { - "version": "2.7.1", + "node_modules/@storybook/builder-webpack4/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, - "license": "ISC", "dependencies": { - "glob": "^7.1.3" + "find-up": "^4.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/core-common/node_modules/schema-utils": { - "version": "1.0.0", + "node_modules/@storybook/builder-webpack4/node_modules/pkg-dir/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==", "dev": true, - "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/@storybook/core-common/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@storybook/builder-webpack4/node_modules/pretty-error": { + "version": "2.1.2", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, - "node_modules/@storybook/core-common/node_modules/serialize-javascript": { - "version": "4.0.0", + "node_modules/@storybook/builder-webpack4/node_modules/renderkid": { + "version": "2.0.7", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "randombytes": "^2.1.0" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" } }, - "node_modules/@storybook/core-common/node_modules/ssri": { - "version": "6.0.2", + "node_modules/@storybook/builder-webpack4/node_modules/rimraf": { + "version": "2.7.1", "dev": true, "license": "ISC", "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/@storybook/core-common/node_modules/supports-color": { - "version": "7.2.0", + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/schema-utils": { + "version": "2.7.1", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=8" + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/@storybook/core-common/node_modules/terser": { + "node_modules/@storybook/builder-webpack4/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/serialize-javascript": { + "version": "4.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/ssri": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "figgy-pudding": "^3.5.1" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/style-loader": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/terser": { "version": "4.8.1", "dev": true, "license": "BSD-2-Clause", @@ -13863,29 +14137,12 @@ "node": ">=6.0.0" } }, - "node_modules/@storybook/core-common/node_modules/terser-webpack-plugin": { - "version": "1.4.5", + "node_modules/@storybook/builder-webpack4/node_modules/terser/node_modules/commander": { + "version": "2.20.3", "dev": true, - "license": "MIT", - "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } + "license": "MIT" }, - "node_modules/@storybook/core-common/node_modules/to-regex-range": { + "node_modules/@storybook/builder-webpack4/node_modules/to-regex-range": { "version": "2.1.1", "dev": true, "license": "MIT", @@ -13897,7 +14154,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/core-common/node_modules/watchpack": { + "node_modules/@storybook/builder-webpack4/node_modules/watchpack": { "version": "1.7.5", "dev": true, "license": "MIT", @@ -13910,7 +14167,7 @@ "watchpack-chokidar2": "^2.0.1" } }, - "node_modules/@storybook/core-common/node_modules/webpack": { + "node_modules/@storybook/builder-webpack4/node_modules/webpack": { "version": "4.46.0", "dev": true, "license": "MIT", @@ -13958,73 +14215,114 @@ } } }, - "node_modules/@storybook/core-common/node_modules/yallist": { - "version": "3.1.1", + "node_modules/@storybook/builder-webpack4/node_modules/webpack-filter-warnings-plugin": { + "version": "1.2.1", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">= 4.3 < 5.0.0 || >= 5.10" + }, + "peerDependencies": { + "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" + } }, - "node_modules/@storybook/core-events": { - "version": "6.5.10", + "node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "core-js": "^3.8.2" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">= 4" } }, - "node_modules/@storybook/core-server": { + "node_modules/@storybook/builder-webpack4/node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "dev": true, + "license": "MIT", + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } + }, + "node_modules/@storybook/builder-webpack4/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/@storybook/builder-webpack5": { "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-webpack4": "6.5.10", - "@storybook/core-client": "6.5.10", + "@babel/core": "^7.12.10", + "@storybook/addons": "6.5.10", + "@storybook/api": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-api": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/components": "6.5.10", "@storybook/core-common": "6.5.10", "@storybook/core-events": "6.5.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/csf-tools": "6.5.10", - "@storybook/manager-webpack4": "6.5.10", "@storybook/node-logger": "6.5.10", + "@storybook/preview-web": "6.5.10", + "@storybook/router": "6.5.10", "@storybook/semver": "^7.3.2", "@storybook/store": "6.5.10", - "@storybook/telemetry": "6.5.10", + "@storybook/theming": "6.5.10", "@types/node": "^14.0.10 || ^16.0.0", - "@types/node-fetch": "^2.5.7", - "@types/pretty-hrtime": "^1.0.0", - "@types/webpack": "^4.41.26", - "better-opn": "^2.1.1", - "boxen": "^5.1.2", - "chalk": "^4.1.0", - "cli-table3": "^0.6.1", - "commander": "^6.2.1", - "compression": "^1.7.4", + "babel-loader": "^8.0.0", + "babel-plugin-named-exports-order": "^0.0.2", + "browser-assert": "^1.2.1", + "case-sensitive-paths-webpack-plugin": "^2.3.0", "core-js": "^3.8.2", - "cpy": "^8.1.2", - "detect-port": "^1.3.0", - "express": "^4.17.1", - "fs-extra": "^9.0.1", - "global": "^4.4.0", - "globby": "^11.0.2", - "ip": "^2.0.0", - "lodash": "^4.17.21", - "node-fetch": "^2.6.7", - "open": "^8.4.0", - "pretty-hrtime": "^1.0.3", - "prompts": "^2.4.0", - "regenerator-runtime": "^0.13.7", - "serve-favicon": "^2.5.0", - "slash": "^3.0.0", - "telejson": "^6.0.8", + "css-loader": "^5.0.1", + "fork-ts-checker-webpack-plugin": "^6.0.4", + "glob": "^7.1.6", + "glob-promise": "^3.4.0", + "html-webpack-plugin": "^5.0.0", + "path-browserify": "^1.0.1", + "process": "^0.11.10", + "stable": "^0.1.8", + "style-loader": "^2.0.0", + "terser-webpack-plugin": "^5.0.3", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", - "watchpack": "^2.2.0", - "webpack": "4", - "ws": "^8.2.3", - "x-default-browser": "^0.4.0" + "webpack": "^5.9.0", + "webpack-dev-middleware": "^4.1.0", + "webpack-hot-middleware": "^2.25.1", + "webpack-virtual-modules": "^0.4.1" }, "funding": { "type": "opencollective", @@ -14035,996 +14333,682 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { - "@storybook/builder-webpack5": { - "optional": true - }, - "@storybook/manager-webpack5": { - "optional": true - }, "typescript": { "optional": true } } }, - "node_modules/@storybook/core-server/node_modules/@types/node": { + "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { "version": "16.18.46", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", "dev": true }, - "node_modules/@storybook/core-server/node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/core-server/node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", + "node_modules/@storybook/builder-webpack5/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, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "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/@storybook/core-server/node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", + "node_modules/@storybook/builder-webpack5/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/@storybook/core-server/node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", + "node_modules/@storybook/builder-webpack5/node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", "dev": true, - "license": "MIT", "dependencies": { - "@xtuc/long": "4.2.2" + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, - "node_modules/@storybook/core-server/node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", + "node_modules/@storybook/builder-webpack5/node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "dev": true, - "license": "MIT" + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } }, - "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", + "node_modules/@storybook/builder-webpack5/node_modules/css-loader": { + "version": "5.2.7", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" } }, - "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", + "node_modules/@storybook/builder-webpack5/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", + "node_modules/@storybook/builder-webpack5/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==", "dev": true, - "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", + "node_modules/@storybook/builder-webpack5/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/core-server/node_modules/acorn": { - "version": "6.4.2", + "node_modules/@storybook/builder-webpack5/node_modules/icss-utils": { + "version": "5.1.0", "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, + "license": "ISC", "engines": { - "node": ">=0.4.0" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@storybook/core-server/node_modules/ajv": { - "version": "6.12.6", + "node_modules/@storybook/builder-webpack5/node_modules/jest-worker": { + "version": "27.5.1", "dev": true, "license": "MIT", "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" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/@storybook/core-server/node_modules/ajv-keywords": { - "version": "3.5.2", + "node_modules/@storybook/builder-webpack5/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/@storybook/builder-webpack5/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==", "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@storybook/core-server/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@storybook/builder-webpack5/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, - "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "semver": "^6.0.0" }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/core-server/node_modules/braces": { - "version": "2.3.2", + "node_modules/@storybook/builder-webpack5/node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@storybook/builder-webpack5/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==", "dev": true, - "license": "MIT", "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" + "p-try": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/core-server/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/@storybook/builder-webpack5/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==", "dev": true, - "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/@storybook/core-server/node_modules/cacache": { - "version": "12.0.4", + "node_modules/@storybook/builder-webpack5/node_modules/path-browserify": { + "version": "1.0.1", "dev": true, - "license": "ISC", - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } + "license": "MIT" }, - "node_modules/@storybook/core-server/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@storybook/builder-webpack5/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, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/@storybook/core-server/node_modules/chownr": { - "version": "1.1.4", + "node_modules/@storybook/builder-webpack5/node_modules/picocolors": { + "version": "1.0.0", "dev": true, "license": "ISC" }, - "node_modules/@storybook/core-server/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@storybook/builder-webpack5/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, - "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "find-up": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/@storybook/core-server/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/core-server/node_modules/enhanced-resolve": { - "version": "4.5.0", + "node_modules/@storybook/builder-webpack5/node_modules/postcss": { + "version": "8.4.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz", + "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">=6.9.0" + "node": "^10 || ^12 || >=14" } }, - "node_modules/@storybook/core-server/node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", + "node_modules/@storybook/builder-webpack5/node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", "dev": true, - "license": "MIT", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, + "license": "ISC", "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@storybook/core-server/node_modules/eslint-scope": { + "node_modules/@storybook/builder-webpack5/node_modules/postcss-modules-local-by-default": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@storybook/core-server/node_modules/estraverse": { - "version": "4.3.0", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@storybook/core-server/node_modules/fill-range": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "node": "^10 || ^12 || >= 14" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@storybook/core-server/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", + "node_modules/@storybook/builder-webpack5/node_modules/postcss-modules-scope": { + "version": "3.0.0", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "is-extendable": "^0.1.0" + "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@storybook/core-server/node_modules/has-flag": { + "node_modules/@storybook/builder-webpack5/node_modules/postcss-modules-values": { "version": "4.0.0", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@storybook/core-server/node_modules/is-buffer": { - "version": "1.1.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/core-server/node_modules/is-extendable": { - "version": "0.1.1", + "node_modules/@storybook/builder-webpack5/node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "randombytes": "^2.1.0" } }, - "node_modules/@storybook/core-server/node_modules/is-number": { - "version": "3.0.0", + "node_modules/@storybook/builder-webpack5/node_modules/supports-color": { + "version": "8.1.1", "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@storybook/core-server/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/@storybook/builder-webpack5/node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, - "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/core-server/node_modules/is-wsl": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@storybook/core-server/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/core-server/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" + "node": ">= 10.13.0" }, - "bin": { - "json5": "lib/cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } } }, - "node_modules/@storybook/core-server/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "node_modules/@storybook/builder-webpack5/node_modules/webpack-dev-middleware": { + "version": "4.3.0", "dev": true, + "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" + "colorette": "^1.2.2", + "mem": "^8.1.1", + "memfs": "^3.2.2", + "mime-types": "^2.1.30", + "range-parser": "^1.2.1", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">= v10.23.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/core-server/node_modules/lru-cache": { - "version": "5.1.1", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } + "node_modules/@storybook/builder-webpack5/node_modules/webpack-virtual-modules": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", + "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "dev": true }, - "node_modules/@storybook/core-server/node_modules/micromatch": { - "version": "3.1.10", + "node_modules/@storybook/channel-postmessage": { + "version": "6.5.10", "dev": true, "license": "MIT", "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" + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "core-js": "^3.8.2", + "global": "^4.4.0", + "qs": "^6.10.0", + "telejson": "^6.0.8" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/mkdirp": { - "version": "0.5.6", + "node_modules/@storybook/channel-websocket": { + "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.6" + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "global": "^4.4.0", + "telejson": "^6.0.8" }, - "bin": { - "mkdirp": "bin/cmd.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/rimraf": { - "version": "2.7.1", + "node_modules/@storybook/channels": { + "version": "6.5.10", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "core-js": "^3.8.2", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/schema-utils": { - "version": "1.0.0", + "node_modules/@storybook/client-api": { + "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "@types/qs": "^6.9.5", + "@types/webpack-env": "^1.16.0", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "store2": "^2.12.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@storybook/core-server/node_modules/serialize-javascript": { - "version": "4.0.0", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/@storybook/core-server/node_modules/ssri": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "figgy-pudding": "^3.5.1" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/core-server/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@storybook/client-logger": { + "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "core-js": "^3.8.2", + "global": "^4.4.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/core-server/node_modules/terser": { - "version": "4.8.1", + "node_modules/@storybook/components": { + "version": "6.5.10", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "@storybook/client-logger": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "util-deprecate": "^1.0.2" }, - "bin": { - "terser": "bin/terser" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, - "engines": { - "node": ">=6.0.0" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/core-server/node_modules/terser-webpack-plugin": { - "version": "1.4.5", + "node_modules/@storybook/core": { + "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" + "@storybook/core-client": "6.5.10", + "@storybook/core-server": "6.5.10" }, - "engines": { - "node": ">= 6.9.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "webpack": "^4.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "webpack": "*" + }, + "peerDependenciesMeta": { + "@storybook/builder-webpack5": { + "optional": true + }, + "@storybook/manager-webpack5": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/core-server/node_modules/terser/node_modules/commander": { - "version": "2.20.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/core-server/node_modules/to-regex-range": { - "version": "2.1.1", + "node_modules/@storybook/core-client": { + "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/channel-websocket": "6.5.10", + "@storybook/client-api": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/preview-web": "6.5.10", + "@storybook/store": "6.5.10", + "@storybook/ui": "6.5.10", + "airbnb-js-shims": "^2.2.1", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "webpack": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@storybook/core-server/node_modules/webpack": { - "version": "4.46.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } - } - }, - "node_modules/@storybook/core-server/node_modules/webpack/node_modules/watchpack": { - "version": "1.7.5", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" - } - }, - "node_modules/@storybook/core-server/node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/@storybook/csf": { - "version": "0.0.2--canary.4566f4d.1", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/@storybook/csf-plugin": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.2.1.tgz", - "integrity": "sha512-qhxkKOsUjCS/hqsDgwgoM81ZXAXfTNrJJPHCs4Wa1dHoUVUn7rro7VANIO0GVNrRDnha3YR4fEmnD8kklLKmCQ==", - "dev": true, - "dependencies": { - "@storybook/csf-tools": "7.2.1", - "unplugin": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/csf-plugin/node_modules/@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", - "dev": true, - "dependencies": { - "type-fest": "^2.19.0" - } - }, - "node_modules/@storybook/csf-plugin/node_modules/@storybook/csf-tools": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.2.1.tgz", - "integrity": "sha512-QqZOBd6lmhPoIBLutyYYJ3wBwEZF+fUjiL8vhw3lgq+Mrer14lmKrImKDSjd1PsqVbbGQEJZ4TAJHZc3vdQs0w==", - "dev": true, - "dependencies": { - "@babel/generator": "^7.22.9", - "@babel/parser": "^7.22.7", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "@storybook/csf": "^0.1.0", - "@storybook/types": "7.2.1", - "fs-extra": "^11.1.0", - "prettier": "^2.8.0", - "recast": "^0.23.1", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/csf-plugin/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==", - "dev": true, - "dependencies": { - "es6-object-assign": "^1.1.0", - "is-nan": "^1.2.1", - "object-is": "^1.0.1", - "util": "^0.12.0" - } - }, - "node_modules/@storybook/csf-plugin/node_modules/ast-types": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", - "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", - "dev": true, - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@storybook/csf-plugin/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/@storybook/csf-plugin/node_modules/recast": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", - "integrity": "sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==", - "dev": true, - "dependencies": { - "assert": "^2.0.0", - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/@storybook/csf-plugin/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/csf-plugin/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==", - "dev": true, - "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/@storybook/csf-tools": { - "version": "6.5.10", + "node_modules/@storybook/core-common": { + "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.12.10", - "@babel/generator": "^7.12.11", - "@babel/parser": "^7.12.11", - "@babel/plugin-transform-react-jsx": "^7.12.12", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-decorators": "^7.12.12", + "@babel/plugin-proposal-export-default-from": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.7", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-private-property-in-object": "^7.12.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.12", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", "@babel/preset-env": "^7.12.11", - "@babel/traverse": "^7.12.11", - "@babel/types": "^7.12.11", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/mdx1-csf": "^0.0.1", - "core-js": "^3.8.2", - "fs-extra": "^9.0.1", - "global": "^4.4.0", - "regenerator-runtime": "^0.13.7", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "@storybook/mdx2-csf": "^0.0.3" - }, - "peerDependenciesMeta": { - "@storybook/mdx2-csf": { - "optional": true - } - } - }, - "node_modules/@storybook/docs-tools": { - "version": "6.5.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.12.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.10", - "core-js": "^3.8.2", - "doctrine": "^3.0.0", - "lodash": "^4.17.21", - "regenerator-runtime": "^0.13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/global": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", - "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", - "dev": true - }, - "node_modules/@storybook/icons": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.1.4.tgz", - "integrity": "sha512-Aq9meChGlul/km0ywJvC8entRbjBa4q8i/0wLHLzH8pRmCMMtalTbF/OBn/Whiui7sgAa686jrMHkWlzfoQ0lg==", - "dev": true, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/manager-api": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.2.1.tgz", - "integrity": "sha512-jRuYTrsNKq+g1u9kbQRvBsRKVITOdiNu9c633MeCH73oBVo8WNnZF/tW/ER86oTnru0H7EmRdgz3v9ft/wS2GQ==", - "dev": true, - "dependencies": { - "@storybook/channels": "7.2.1", - "@storybook/client-logger": "7.2.1", - "@storybook/core-events": "7.2.1", - "@storybook/csf": "^0.1.0", - "@storybook/global": "^5.0.0", - "@storybook/router": "7.2.1", - "@storybook/theming": "7.2.1", - "@storybook/types": "7.2.1", - "dequal": "^2.0.2", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "semver": "^7.3.7", - "store2": "^2.14.2", - "telejson": "^7.0.3", - "ts-dedent": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/manager-api/node_modules/@storybook/channels": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.2.1.tgz", - "integrity": "sha512-3ZogzjwlFG+oarwnI7TTvWvHVOUtJbjrgZkM5QuLMlxNzIR1XuBY8f01yf4K8+VpdNy9DY+7Q/j6tBThfwYvpA==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.2.1", - "@storybook/core-events": "7.2.1", - "@storybook/global": "^5.0.0", - "qs": "^6.10.0", - "telejson": "^7.0.3", - "tiny-invariant": "^1.3.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/manager-api/node_modules/@storybook/client-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", - "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", - "dev": true, - "dependencies": { - "@storybook/global": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/manager-api/node_modules/@storybook/core-events": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", - "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/manager-api/node_modules/@storybook/csf": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", - "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", - "dev": true, - "dependencies": { - "type-fest": "^2.19.0" - } - }, - "node_modules/@storybook/manager-api/node_modules/@storybook/router": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.2.1.tgz", - "integrity": "sha512-9Cn5boUS+7yhrKlSy1kt7ruNs/znk3555kclBD6+uuhH/dD84feGeiGYE4GUuLmcKrDFtNF185/Gr1huJ556tA==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "7.2.1", - "memoizerific": "^1.11.3", - "qs": "^6.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/manager-api/node_modules/@storybook/theming": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", - "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", - "dev": true, - "dependencies": { - "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.2.1", - "@storybook/global": "^5.0.0", - "memoizerific": "^1.11.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/manager-api/node_modules/telejson": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", - "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", - "dev": true, - "dependencies": { - "memoizerific": "^1.11.3" - } - }, - "node_modules/@storybook/manager-api/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@storybook/manager-webpack4": { - "version": "6.5.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.12.10", - "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.5.10", - "@storybook/core-client": "6.5.10", - "@storybook/core-common": "6.5.10", + "@babel/preset-typescript": "^7.12.7", + "@babel/register": "^7.12.1", "@storybook/node-logger": "6.5.10", - "@storybook/theming": "6.5.10", - "@storybook/ui": "6.5.10", + "@storybook/semver": "^7.3.2", "@types/node": "^14.0.10 || ^16.0.0", - "@types/webpack": "^4.41.26", + "@types/pretty-hrtime": "^1.0.0", "babel-loader": "^8.0.0", - "case-sensitive-paths-webpack-plugin": "^2.3.0", + "babel-plugin-macros": "^3.0.1", + "babel-plugin-polyfill-corejs3": "^0.1.0", "chalk": "^4.1.0", "core-js": "^3.8.2", - "css-loader": "^3.6.0", "express": "^4.17.1", - "file-loader": "^6.2.0", + "file-system-cache": "^1.0.5", "find-up": "^5.0.0", + "fork-ts-checker-webpack-plugin": "^6.0.4", "fs-extra": "^9.0.1", - "html-webpack-plugin": "^4.0.0", - "node-fetch": "^2.6.7", - "pnp-webpack-plugin": "1.6.4", - "read-pkg-up": "^7.0.1", - "regenerator-runtime": "^0.13.7", + "glob": "^7.1.6", + "handlebars": "^4.7.7", + "interpret": "^2.2.0", + "json5": "^2.1.3", + "lazy-universal-dotenv": "^3.0.1", + "picomatch": "^2.3.0", + "pkg-dir": "^5.0.0", + "pretty-hrtime": "^1.0.3", "resolve-from": "^5.0.0", - "style-loader": "^1.3.0", + "slash": "^3.0.0", "telejson": "^6.0.8", - "terser-webpack-plugin": "^4.2.3", "ts-dedent": "^2.0.0", - "url-loader": "^4.1.1", "util-deprecate": "^1.0.2", - "webpack": "4", - "webpack-dev-middleware": "^3.7.3", - "webpack-virtual-modules": "^0.2.2" + "webpack": "4" }, "funding": { "type": "opencollective", @@ -15040,23 +15024,36 @@ } } }, - "node_modules/@storybook/manager-webpack4/node_modules/@types/html-minifier-terser": { - "version": "5.1.2", + "node_modules/@storybook/core-common/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.1.5", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "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/@storybook/manager-webpack4/node_modules/@types/node": { + "node_modules/@storybook/core-common/node_modules/@types/node": { "version": "16.18.46", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", "dev": true }, - "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/helper-buffer": { + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/helper-buffer": { "version": "1.9.0", "dev": true, "license": "MIT" }, - "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/helper-wasm-section": { + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -15067,7 +15064,7 @@ "@webassemblyjs/wasm-gen": "1.9.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/ieee754": { + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/ieee754": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -15075,7 +15072,7 @@ "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/leb128": { + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/leb128": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -15083,12 +15080,12 @@ "@xtuc/long": "4.2.2" } }, - "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/utf8": { + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/utf8": { "version": "1.9.0", "dev": true, "license": "MIT" }, - "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-edit": { + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-edit": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -15103,7 +15100,7 @@ "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-gen": { + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-gen": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -15115,7 +15112,7 @@ "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-opt": { + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-opt": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -15126,7 +15123,7 @@ "@webassemblyjs/wasm-parser": "1.9.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-parser": { + "node_modules/@storybook/core-common/node_modules/@webassemblyjs/wasm-parser": { "version": "1.9.0", "dev": true, "license": "MIT", @@ -15139,7 +15136,7 @@ "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/acorn": { + "node_modules/@storybook/core-common/node_modules/acorn": { "version": "6.4.2", "dev": true, "license": "MIT", @@ -15150,7 +15147,7 @@ "node": ">=0.4.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/ajv": { + "node_modules/@storybook/core-common/node_modules/ajv": { "version": "6.12.6", "dev": true, "license": "MIT", @@ -15165,7 +15162,7 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@storybook/manager-webpack4/node_modules/ajv-keywords": { + "node_modules/@storybook/core-common/node_modules/ajv-keywords": { "version": "3.5.2", "dev": true, "license": "MIT", @@ -15173,16 +15170,8 @@ "ajv": "^6.9.1" } }, - "node_modules/@storybook/manager-webpack4/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@storybook/core-common/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { @@ -15195,7 +15184,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/manager-webpack4/node_modules/babel-loader": { + "node_modules/@storybook/core-common/node_modules/babel-loader": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", @@ -15214,7 +15203,7 @@ "webpack": ">=2" } }, - "node_modules/@storybook/manager-webpack4/node_modules/babel-loader/node_modules/find-cache-dir": { + "node_modules/@storybook/core-common/node_modules/babel-loader/node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", @@ -15231,7 +15220,76 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/manager-webpack4/node_modules/braces": { + "node_modules/@storybook/core-common/node_modules/babel-loader/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==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/core-common/node_modules/babel-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/@storybook/core-common/node_modules/babel-loader/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/@storybook/core-common/node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@storybook/core-common/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.1.5", + "core-js-compat": "^3.8.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@storybook/core-common/node_modules/braces": { "version": "2.3.2", "dev": true, "license": "MIT", @@ -15251,7 +15309,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/braces/node_modules/extend-shallow": { + "node_modules/@storybook/core-common/node_modules/braces/node_modules/extend-shallow": { "version": "2.0.1", "dev": true, "license": "MIT", @@ -15262,7 +15320,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/cacache": { + "node_modules/@storybook/core-common/node_modules/cacache": { "version": "12.0.4", "dev": true, "license": "ISC", @@ -15284,15 +15342,7 @@ "y18n": "^4.0.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/chalk": { + "node_modules/@storybook/core-common/node_modules/chalk": { "version": "4.1.2", "dev": true, "license": "MIT", @@ -15307,23 +15357,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/manager-webpack4/node_modules/chownr": { + "node_modules/@storybook/core-common/node_modules/chownr": { "version": "1.1.4", "dev": true, "license": "ISC" }, - "node_modules/@storybook/manager-webpack4/node_modules/clean-css": { - "version": "4.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/color-convert": { + "node_modules/@storybook/core-common/node_modules/color-convert": { "version": "2.0.1", "dev": true, "license": "MIT", @@ -15334,79 +15373,17 @@ "node": ">=7.0.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/color-name": { + "node_modules/@storybook/core-common/node_modules/color-name": { "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/@storybook/manager-webpack4/node_modules/commander": { - "version": "4.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/css-loader": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.2", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/css-loader/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/css-select": { - "version": "4.3.0", + "node_modules/@storybook/core-common/node_modules/commander": { + "version": "2.20.3", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } + "license": "MIT" }, - "node_modules/@storybook/manager-webpack4/node_modules/enhanced-resolve": { + "node_modules/@storybook/core-common/node_modules/enhanced-resolve": { "version": "4.5.0", "dev": true, "dependencies": { @@ -15418,7 +15395,7 @@ "node": ">=6.9.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/enhanced-resolve/node_modules/memory-fs": { + "node_modules/@storybook/core-common/node_modules/enhanced-resolve/node_modules/memory-fs": { "version": "0.5.0", "dev": true, "license": "MIT", @@ -15430,7 +15407,7 @@ "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/@storybook/manager-webpack4/node_modules/eslint-scope": { + "node_modules/@storybook/core-common/node_modules/eslint-scope": { "version": "4.0.3", "dev": true, "license": "BSD-2-Clause", @@ -15442,7 +15419,7 @@ "node": ">=4.0.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/estraverse": { + "node_modules/@storybook/core-common/node_modules/estraverse": { "version": "4.3.0", "dev": true, "license": "BSD-2-Clause", @@ -15450,7 +15427,7 @@ "node": ">=4.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/fill-range": { + "node_modules/@storybook/core-common/node_modules/fill-range": { "version": "4.0.0", "dev": true, "license": "MIT", @@ -15464,7 +15441,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/fill-range/node_modules/extend-shallow": { + "node_modules/@storybook/core-common/node_modules/fill-range/node_modules/extend-shallow": { "version": "2.0.1", "dev": true, "license": "MIT", @@ -15475,7 +15452,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/has-flag": { + "node_modules/@storybook/core-common/node_modules/has-flag": { "version": "4.0.0", "dev": true, "license": "MIT", @@ -15483,86 +15460,12 @@ "node": ">=8" } }, - "node_modules/@storybook/manager-webpack4/node_modules/html-minifier-terser": { - "version": "5.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", - "he": "^1.2.0", - "param-case": "^3.0.3", - "relateurl": "^0.2.7", - "terser": "^4.6.3" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/html-webpack-plugin": { - "version": "4.5.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/html-minifier-terser": "^5.0.0", - "@types/tapable": "^1.0.5", - "@types/webpack": "^4.41.8", - "html-minifier-terser": "^5.0.1", - "loader-utils": "^1.2.3", - "lodash": "^4.17.20", - "pretty-error": "^2.1.1", - "tapable": "^1.1.3", - "util.promisify": "1.0.0" - }, - "engines": { - "node": ">=6.9" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/html-webpack-plugin/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/htmlparser2": { - "version": "6.1.0", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/is-buffer": { + "node_modules/@storybook/core-common/node_modules/is-buffer": { "version": "1.1.6", "dev": true, "license": "MIT" }, - "node_modules/@storybook/manager-webpack4/node_modules/is-extendable": { + "node_modules/@storybook/core-common/node_modules/is-extendable": { "version": "0.1.1", "dev": true, "license": "MIT", @@ -15570,7 +15473,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/is-number": { + "node_modules/@storybook/core-common/node_modules/is-number": { "version": "3.0.0", "dev": true, "license": "MIT", @@ -15581,7 +15484,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/is-number/node_modules/kind-of": { + "node_modules/@storybook/core-common/node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "dev": true, "license": "MIT", @@ -15592,7 +15495,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/is-wsl": { + "node_modules/@storybook/core-common/node_modules/is-wsl": { "version": "1.1.0", "dev": true, "license": "MIT", @@ -15600,12 +15503,26 @@ "node": ">=4" } }, - "node_modules/@storybook/manager-webpack4/node_modules/json-schema-traverse": { + "node_modules/@storybook/core-common/node_modules/json-schema-traverse": { "version": "0.4.1", "dev": true, "license": "MIT" }, - "node_modules/@storybook/manager-webpack4/node_modules/json5": { + "node_modules/@storybook/core-common/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@storybook/core-common/node_modules/loader-utils/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==", @@ -15617,7 +15534,7 @@ "json5": "lib/cli.js" } }, - "node_modules/@storybook/manager-webpack4/node_modules/locate-path": { + "node_modules/@storybook/core-common/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==", @@ -15629,7 +15546,7 @@ "node": ">=8" } }, - "node_modules/@storybook/manager-webpack4/node_modules/lru-cache": { + "node_modules/@storybook/core-common/node_modules/lru-cache": { "version": "5.1.1", "dev": true, "license": "ISC", @@ -15637,7 +15554,7 @@ "yallist": "^3.0.2" } }, - "node_modules/@storybook/manager-webpack4/node_modules/make-dir": { + "node_modules/@storybook/core-common/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==", @@ -15652,7 +15569,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/manager-webpack4/node_modules/micromatch": { + "node_modules/@storybook/core-common/node_modules/micromatch": { "version": "3.1.10", "dev": true, "license": "MIT", @@ -15675,7 +15592,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/mkdirp": { + "node_modules/@storybook/core-common/node_modules/mkdirp": { "version": "0.5.6", "dev": true, "license": "MIT", @@ -15686,7 +15603,7 @@ "mkdirp": "bin/cmd.js" } }, - "node_modules/@storybook/manager-webpack4/node_modules/p-limit": { + "node_modules/@storybook/core-common/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==", @@ -15701,7 +15618,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/manager-webpack4/node_modules/p-locate": { + "node_modules/@storybook/core-common/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==", @@ -15713,7 +15630,7 @@ "node": ">=8" } }, - "node_modules/@storybook/manager-webpack4/node_modules/path-exists": { + "node_modules/@storybook/core-common/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==", @@ -15722,53 +15639,7 @@ "node": ">=8" } }, - "node_modules/@storybook/manager-webpack4/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/@storybook/manager-webpack4/node_modules/pkg-dir/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==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/pretty-error": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/renderkid": { - "version": "2.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "css-select": "^4.1.3", - "dom-converter": "^0.2.0", - "htmlparser2": "^6.1.0", - "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/rimraf": { + "node_modules/@storybook/core-common/node_modules/rimraf": { "version": "2.7.1", "dev": true, "license": "ISC", @@ -15779,24 +15650,20 @@ "rimraf": "bin.js" } }, - "node_modules/@storybook/manager-webpack4/node_modules/schema-utils": { - "version": "2.7.1", + "node_modules/@storybook/core-common/node_modules/schema-utils": { + "version": "1.0.0", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">= 4" } }, - "node_modules/@storybook/manager-webpack4/node_modules/semver": { + "node_modules/@storybook/core-common/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", @@ -15805,7 +15672,7 @@ "semver": "bin/semver.js" } }, - "node_modules/@storybook/manager-webpack4/node_modules/serialize-javascript": { + "node_modules/@storybook/core-common/node_modules/serialize-javascript": { "version": "4.0.0", "dev": true, "license": "BSD-3-Clause", @@ -15813,7 +15680,7 @@ "randombytes": "^2.1.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/ssri": { + "node_modules/@storybook/core-common/node_modules/ssri": { "version": "6.0.2", "dev": true, "license": "ISC", @@ -15821,37 +15688,7 @@ "figgy-pudding": "^3.5.1" } }, - "node_modules/@storybook/manager-webpack4/node_modules/strip-ansi": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/style-loader": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^2.7.0" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/supports-color": { + "node_modules/@storybook/core-common/node_modules/supports-color": { "version": "7.2.0", "dev": true, "license": "MIT", @@ -15862,7 +15699,7 @@ "node": ">=8" } }, - "node_modules/@storybook/manager-webpack4/node_modules/terser": { + "node_modules/@storybook/core-common/node_modules/terser": { "version": "4.8.1", "dev": true, "license": "BSD-2-Clause", @@ -15878,12 +15715,29 @@ "node": ">=6.0.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/terser/node_modules/commander": { - "version": "2.20.3", + "node_modules/@storybook/core-common/node_modules/terser-webpack-plugin": { + "version": "1.4.5", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" + } }, - "node_modules/@storybook/manager-webpack4/node_modules/to-regex-range": { + "node_modules/@storybook/core-common/node_modules/to-regex-range": { "version": "2.1.1", "dev": true, "license": "MIT", @@ -15895,7 +15749,7 @@ "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack4/node_modules/watchpack": { + "node_modules/@storybook/core-common/node_modules/watchpack": { "version": "1.7.5", "dev": true, "license": "MIT", @@ -15908,7 +15762,7 @@ "watchpack-chokidar2": "^2.0.1" } }, - "node_modules/@storybook/manager-webpack4/node_modules/webpack": { + "node_modules/@storybook/core-common/node_modules/webpack": { "version": "4.46.0", "dev": true, "license": "MIT", @@ -15956,97 +15810,73 @@ } } }, - "node_modules/@storybook/manager-webpack4/node_modules/webpack/node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/@storybook/manager-webpack4/node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", + "node_modules/@storybook/core-common/node_modules/yallist": { + "version": "3.1.1", "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } + "license": "ISC" }, - "node_modules/@storybook/manager-webpack4/node_modules/webpack/node_modules/terser-webpack-plugin": { - "version": "1.4.5", + "node_modules/@storybook/core-events": { + "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" + "core-js": "^3.8.2" }, - "peerDependencies": { - "webpack": "^4.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/manager-webpack4/node_modules/yallist": { - "version": "3.1.1", - "dev": true, - "license": "ISC" - }, - "node_modules/@storybook/manager-webpack5": { + "node_modules/@storybook/core-server": { "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.12.10", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/preset-react": "^7.12.10", - "@storybook/addons": "6.5.10", + "@discoveryjs/json-ext": "^0.5.3", + "@storybook/builder-webpack4": "6.5.10", "@storybook/core-client": "6.5.10", "@storybook/core-common": "6.5.10", - "@storybook/node-logger": "6.5.10", - "@storybook/theming": "6.5.10", - "@storybook/ui": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/csf-tools": "6.5.10", + "@storybook/manager-webpack4": "6.5.10", + "@storybook/node-logger": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/store": "6.5.10", + "@storybook/telemetry": "6.5.10", "@types/node": "^14.0.10 || ^16.0.0", - "babel-loader": "^8.0.0", - "case-sensitive-paths-webpack-plugin": "^2.3.0", + "@types/node-fetch": "^2.5.7", + "@types/pretty-hrtime": "^1.0.0", + "@types/webpack": "^4.41.26", + "better-opn": "^2.1.1", + "boxen": "^5.1.2", "chalk": "^4.1.0", + "cli-table3": "^0.6.1", + "commander": "^6.2.1", + "compression": "^1.7.4", "core-js": "^3.8.2", - "css-loader": "^5.0.1", + "cpy": "^8.1.2", + "detect-port": "^1.3.0", "express": "^4.17.1", - "find-up": "^5.0.0", "fs-extra": "^9.0.1", - "html-webpack-plugin": "^5.0.0", + "global": "^4.4.0", + "globby": "^11.0.2", + "ip": "^2.0.0", + "lodash": "^4.17.21", "node-fetch": "^2.6.7", - "process": "^0.11.10", - "read-pkg-up": "^7.0.1", + "open": "^8.4.0", + "pretty-hrtime": "^1.0.3", + "prompts": "^2.4.0", "regenerator-runtime": "^0.13.7", - "resolve-from": "^5.0.0", - "style-loader": "^2.0.0", + "serve-favicon": "^2.5.0", + "slash": "^3.0.0", "telejson": "^6.0.8", - "terser-webpack-plugin": "^5.0.3", "ts-dedent": "^2.0.0", "util-deprecate": "^1.0.2", - "webpack": "^5.9.0", - "webpack-dev-middleware": "^4.1.0", - "webpack-virtual-modules": "^0.4.1" + "watchpack": "^2.2.0", + "webpack": "4", + "ws": "^8.2.3", + "x-default-browser": "^0.4.0" }, "funding": { "type": "opencollective", @@ -16057,22 +15887,126 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { + "@storybook/builder-webpack5": { + "optional": true + }, + "@storybook/manager-webpack5": { + "optional": true + }, "typescript": { "optional": true } } }, - "node_modules/@storybook/manager-webpack5/node_modules/@types/node": { + "node_modules/@storybook/core-server/node_modules/@types/node": { "version": "16.18.46", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", "dev": true }, - "node_modules/@storybook/manager-webpack5/node_modules/ajv": { + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "node_modules/@storybook/core-server/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "node_modules/@storybook/core-server/node_modules/acorn": { + "version": "6.4.2", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/@storybook/core-server/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, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -16084,16 +16018,15 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@storybook/manager-webpack5/node_modules/ajv-keywords": { + "node_modules/@storybook/core-server/node_modules/ajv-keywords": { "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, + "license": "MIT", "peerDependencies": { "ajv": "^6.9.1" } }, - "node_modules/@storybook/manager-webpack5/node_modules/ansi-styles": { + "node_modules/@storybook/core-server/node_modules/ansi-styles": { "version": "4.3.0", "dev": true, "license": "MIT", @@ -16107,44 +16040,60 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/manager-webpack5/node_modules/babel-loader": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", - "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "node_modules/@storybook/core-server/node_modules/braces": { + "version": "2.3.2", "dev": true, + "license": "MIT", "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" + "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": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" + "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/babel-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "node_modules/@storybook/core-server/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", "dev": true, + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/chalk": { + "node_modules/@storybook/core-server/node_modules/cacache": { + "version": "12.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "node_modules/@storybook/core-server/node_modules/chalk": { "version": "4.1.2", "dev": true, "license": "MIT", @@ -16159,7 +16108,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/manager-webpack5/node_modules/color-convert": { + "node_modules/@storybook/core-server/node_modules/chownr": { + "version": "1.1.4", + "dev": true, + "license": "ISC" + }, + "node_modules/@storybook/core-server/node_modules/color-convert": { "version": "2.0.1", "dev": true, "license": "MIT", @@ -16170,303 +16124,245 @@ "node": ">=7.0.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/color-name": { + "node_modules/@storybook/core-server/node_modules/color-name": { "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/@storybook/manager-webpack5/node_modules/css-loader": { - "version": "5.2.7", + "node_modules/@storybook/core-server/node_modules/enhanced-resolve": { + "version": "4.5.0", "dev": true, - "license": "MIT", "dependencies": { - "icss-utils": "^5.1.0", - "loader-utils": "^2.0.0", - "postcss": "^8.2.15", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.5" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.27.0 || ^5.0.0" + "node": ">=6.9.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/@storybook/core-server/node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", "dev": true, + "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/@storybook/manager-webpack5/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@storybook/core-server/node_modules/eslint-scope": { + "version": "4.0.3", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/icss-utils": { - "version": "5.1.0", + "node_modules/@storybook/core-server/node_modules/estraverse": { + "version": "4.3.0", "dev": true, - "license": "ISC", + "license": "BSD-2-Clause", "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=4.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/jest-worker": { - "version": "27.5.1", + "node_modules/@storybook/core-server/node_modules/fill-range": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/@storybook/core-server/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack5/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/@storybook/manager-webpack5/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==", + "node_modules/@storybook/core-server/node_modules/has-flag": { + "version": "4.0.0", "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/@storybook/manager-webpack5/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==", + "node_modules/@storybook/core-server/node_modules/is-buffer": { + "version": "1.1.6", "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/@storybook/manager-webpack5/node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@storybook/core-server/node_modules/is-extendable": { + "version": "0.1.1", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack5/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==", + "node_modules/@storybook/core-server/node_modules/is-number": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack5/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==", + "node_modules/@storybook/core-server/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", "dev": true, + "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack5/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==", + "node_modules/@storybook/core-server/node_modules/is-wsl": { + "version": "1.1.0", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/@storybook/manager-webpack5/node_modules/picocolors": { - "version": "1.0.0", + "node_modules/@storybook/core-server/node_modules/json-schema-traverse": { + "version": "0.4.1", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/@storybook/manager-webpack5/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==", + "node_modules/@storybook/core-server/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": { - "find-up": "^4.0.0" + "minimist": "^1.2.0" }, - "engines": { - "node": ">=8" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/@storybook/manager-webpack5/node_modules/pkg-dir/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==", + "node_modules/@storybook/core-server/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/postcss": { - "version": "8.4.28", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz", - "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==", + "node_modules/@storybook/core-server/node_modules/lru-cache": { + "version": "5.1.1", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "license": "ISC", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "yallist": "^3.0.2" + } + }, + "node_modules/@storybook/core-server/node_modules/micromatch": { + "version": "3.1.10", + "dev": true, + "license": "MIT", + "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": "^10 || ^12 || >=14" + "node": ">=0.10.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", + "node_modules/@storybook/core-server/node_modules/mkdirp": { + "version": "0.5.6", "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" }, - "peerDependencies": { - "postcss": "^8.1.0" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/@storybook/manager-webpack5/node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "node_modules/@storybook/core-server/node_modules/rimraf": { + "version": "2.7.1", "dev": true, + "license": "ISC", "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" + "glob": "^7.1.3" }, - "peerDependencies": { - "postcss": "^8.1.0" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/@storybook/manager-webpack5/node_modules/postcss-modules-scope": { - "version": "3.0.0", + "node_modules/@storybook/core-server/node_modules/schema-utils": { + "version": "1.0.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 4" } }, - "node_modules/@storybook/manager-webpack5/node_modules/postcss-modules-values": { + "node_modules/@storybook/core-server/node_modules/serialize-javascript": { "version": "4.0.0", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "randombytes": "^2.1.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "node_modules/@storybook/core-server/node_modules/ssri": { + "version": "6.0.2", "dev": true, + "license": "ISC", "dependencies": { - "randombytes": "^2.1.0" + "figgy-pudding": "^3.5.1" } }, - "node_modules/@storybook/manager-webpack5/node_modules/supports-color": { + "node_modules/@storybook/core-server/node_modules/supports-color": { "version": "7.2.0", "dev": true, "license": "MIT", @@ -16477,445 +16373,333 @@ "node": ">=8" } }, - "node_modules/@storybook/manager-webpack5/node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "node_modules/@storybook/core-server/node_modules/terser": { + "version": "4.8.1", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" }, - "peerDependencies": { - "webpack": "^5.1.0" + "bin": { + "terser": "bin/terser" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/webpack-dev-middleware": { - "version": "4.3.0", + "node_modules/@storybook/core-server/node_modules/terser-webpack-plugin": { + "version": "1.4.5", "dev": true, "license": "MIT", "dependencies": { - "colorette": "^1.2.2", - "mem": "^8.1.1", - "memfs": "^3.2.2", - "mime-types": "^2.1.30", - "range-parser": "^1.2.1", - "schema-utils": "^3.0.0" + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" }, "engines": { - "node": ">= v10.23.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">= 6.9.0" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^4.0.0" } }, - "node_modules/@storybook/manager-webpack5/node_modules/webpack-virtual-modules": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", - "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", - "dev": true + "node_modules/@storybook/core-server/node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" }, - "node_modules/@storybook/mdx1-csf": { - "version": "0.0.1", + "node_modules/@storybook/core-server/node_modules/to-regex-range": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "@babel/generator": "^7.12.11", - "@babel/parser": "^7.12.11", - "@babel/preset-env": "^7.12.11", - "@babel/types": "^7.12.11", - "@mdx-js/mdx": "^1.6.22", - "@types/lodash": "^4.14.167", - "js-string-escape": "^1.0.1", - "loader-utils": "^2.0.0", - "lodash": "^4.17.21", - "prettier": ">=2.2.1 <=2.3.0", - "ts-dedent": "^2.0.0" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@storybook/mdx1-csf/node_modules/prettier": { - "version": "2.3.0", + "node_modules/@storybook/core-server/node_modules/webpack": { + "version": "4.46.0", "dev": true, "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, "bin": { - "prettier": "bin-prettier.js" + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@storybook/mdx2-csf": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-0.0.3.tgz", - "integrity": "sha512-PFhucALIP23H3D/VyA4vlDsHKEJfhbLCIullmvaSl+KTTGbn4g+IkOAsIhVx+dEHYdCqCRW53r66+D4P6A7uOA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@babel/generator": "^7.12.11", - "@babel/parser": "^7.12.11", - "@mdx-js/mdx": "^2.0.0", - "estree-to-babel": "^4.9.0", - "hast-util-to-estree": "^2.0.2", - "js-string-escape": "^1.0.1", - "loader-utils": "^2.0.0", - "lodash": "^4.17.21" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/@mdx-js/mdx": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", - "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/mdx": "^2.0.0", - "estree-util-build-jsx": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-util-to-js": "^1.1.0", - "estree-walker": "^3.0.0", - "hast-util-to-estree": "^2.0.0", - "markdown-extensions": "^1.0.0", - "periscopic": "^3.0.0", - "remark-mdx": "^2.0.0", - "remark-parse": "^10.0.0", - "remark-rehype": "^10.0.0", - "unified": "^10.0.0", - "unist-util-position-from-estree": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0" + "node": ">=6.11.5" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@storybook/mdx2-csf/node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { + "optional": true + } } }, - "node_modules/@storybook/mdx2-csf/node_modules/estree-to-babel": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-4.9.0.tgz", - "integrity": "sha512-Ev5c4YJbMaozG8TCsRys74CViaRKnjllUpnJCrY3JB8DMlUQ0n0zgjCECEWN6ji7aAfYZvohwh6a2P0jl8A8Hw==", + "node_modules/@storybook/core-server/node_modules/webpack/node_modules/watchpack": { + "version": "1.7.5", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.1.6", - "@babel/types": "^7.2.0" + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" }, - "engines": { - "node": ">=14" + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" } }, - "node_modules/@storybook/mdx2-csf/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "node_modules/@storybook/core-server/node_modules/yallist": { + "version": "3.1.1", "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "ISC" }, - "node_modules/@storybook/mdx2-csf/node_modules/remark-mdx": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz", - "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==", + "node_modules/@storybook/csf": { + "version": "0.0.2--canary.4566f4d.1", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "mdast-util-mdx": "^2.0.0", - "micromark-extension-mdxjs": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "lodash": "^4.17.15" } }, - "node_modules/@storybook/mdx2-csf/node_modules/remark-parse": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", - "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", + "node_modules/@storybook/csf-plugin": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.2.1.tgz", + "integrity": "sha512-qhxkKOsUjCS/hqsDgwgoM81ZXAXfTNrJJPHCs4Wa1dHoUVUn7rro7VANIO0GVNrRDnha3YR4fEmnD8kklLKmCQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "unified": "^10.0.0" + "@storybook/csf-tools": "7.2.1", + "unplugin": "^1.3.1" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/mdx2-csf/node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "node_modules/@storybook/csf-plugin/node_modules/@storybook/csf": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", + "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "type-fest": "^2.19.0" } }, - "node_modules/@storybook/mdx2-csf/node_modules/unified": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "node_modules/@storybook/csf-plugin/node_modules/@storybook/csf-tools": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.2.1.tgz", + "integrity": "sha512-QqZOBd6lmhPoIBLutyYYJ3wBwEZF+fUjiL8vhw3lgq+Mrer14lmKrImKDSjd1PsqVbbGQEJZ4TAJHZc3vdQs0w==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@types/unist": "^2.0.0", - "bail": "^2.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^5.0.0" + "@babel/generator": "^7.22.9", + "@babel/parser": "^7.22.7", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "@storybook/csf": "^0.1.0", + "@storybook/types": "7.2.1", + "fs-extra": "^11.1.0", + "prettier": "^2.8.0", + "recast": "^0.23.1", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/mdx2-csf/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "node_modules/@storybook/csf-plugin/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==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "es6-object-assign": "^1.1.0", + "is-nan": "^1.2.1", + "object-is": "^1.0.1", + "util": "^0.12.0" } }, - "node_modules/@storybook/mdx2-csf/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "node_modules/@storybook/csf-plugin/node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@types/unist": "^2.0.0" + "tslib": "^2.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=4" } }, - "node_modules/@storybook/mdx2-csf/node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "node_modules/@storybook/csf-plugin/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=14.14" } }, - "node_modules/@storybook/mdx2-csf/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "node_modules/@storybook/csf-plugin/node_modules/recast": { + "version": "0.23.4", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", + "integrity": "sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "assert": "^2.0.0", + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tslib": "^2.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 4" } }, - "node_modules/@storybook/mdx2-csf/node_modules/vfile": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "node_modules/@storybook/csf-plugin/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" + "engines": { + "node": ">=12.20" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/mdx2-csf/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "node_modules/@storybook/csf-plugin/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==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "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/@storybook/node-logger": { + "node_modules/@storybook/csf-tools": { "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "@types/npmlog": "^4.1.2", - "chalk": "^4.1.0", + "@babel/core": "^7.12.10", + "@babel/generator": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/plugin-transform-react-jsx": "^7.12.12", + "@babel/preset-env": "^7.12.11", + "@babel/traverse": "^7.12.11", + "@babel/types": "^7.12.11", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/mdx1-csf": "^0.0.1", "core-js": "^3.8.2", - "npmlog": "^5.0.1", - "pretty-hrtime": "^1.0.3" + "fs-extra": "^9.0.1", + "global": "^4.4.0", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "@storybook/mdx2-csf": "^0.0.3" + }, + "peerDependenciesMeta": { + "@storybook/mdx2-csf": { + "optional": true + } } }, - "node_modules/@storybook/node-logger/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@storybook/docs-tools": { + "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@storybook/node-logger/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@babel/core": "^7.12.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "core-js": "^3.8.2", + "doctrine": "^3.0.0", + "lodash": "^4.17.21", + "regenerator-runtime": "^0.13.7" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/node-logger/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "node_modules/@storybook/global": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", + "integrity": "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==", + "dev": true }, - "node_modules/@storybook/node-logger/node_modules/color-name": { + "node_modules/@storybook/icons": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-1.1.4.tgz", + "integrity": "sha512-Aq9meChGlul/km0ywJvC8entRbjBa4q8i/0wLHLzH8pRmCMMtalTbF/OBn/Whiui7sgAa686jrMHkWlzfoQ0lg==", "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/node-logger/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/node-logger/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "node": ">=14.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/postinstall": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.2.1.tgz", - "integrity": "sha512-xOzX1MygQ+9xpku6FuODhXvfv/CcKlQPOGpZk8ejE/04Eow0JHluGI1cxdnpqGcCBygkw7DP+xrtQCv75c7Gjg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/preview-api": { + "node_modules/@storybook/manager-api": { "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.2.1.tgz", - "integrity": "sha512-WKecuOdeh9+og6bPR9KoQf/JCeSRPCcfZv9uNfJzAp3IiTnS3UpfCz+HBZzZJQrisgbd7OulNY400HQUmxY2Ag==", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.2.1.tgz", + "integrity": "sha512-jRuYTrsNKq+g1u9kbQRvBsRKVITOdiNu9c633MeCH73oBVo8WNnZF/tW/ER86oTnru0H7EmRdgz3v9ft/wS2GQ==", "dev": true, "dependencies": { "@storybook/channels": "7.2.1", @@ -16923,22 +16707,27 @@ "@storybook/core-events": "7.2.1", "@storybook/csf": "^0.1.0", "@storybook/global": "^5.0.0", + "@storybook/router": "7.2.1", + "@storybook/theming": "7.2.1", "@storybook/types": "7.2.1", - "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "synchronous-promise": "^2.0.15", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" + "semver": "^7.3.7", + "store2": "^2.14.2", + "telejson": "^7.0.3", + "ts-dedent": "^2.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@storybook/preview-api/node_modules/@storybook/channels": { + "node_modules/@storybook/manager-api/node_modules/@storybook/channels": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.2.1.tgz", "integrity": "sha512-3ZogzjwlFG+oarwnI7TTvWvHVOUtJbjrgZkM5QuLMlxNzIR1XuBY8f01yf4K8+VpdNy9DY+7Q/j6tBThfwYvpA==", @@ -16956,7 +16745,7 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/preview-api/node_modules/@storybook/client-logger": { + "node_modules/@storybook/manager-api/node_modules/@storybook/client-logger": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", @@ -16969,7 +16758,7 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/preview-api/node_modules/@storybook/core-events": { + "node_modules/@storybook/manager-api/node_modules/@storybook/core-events": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", @@ -16979,7 +16768,7 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/preview-api/node_modules/@storybook/csf": { + "node_modules/@storybook/manager-api/node_modules/@storybook/csf": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", @@ -16988,7 +16777,46 @@ "type-fest": "^2.19.0" } }, - "node_modules/@storybook/preview-api/node_modules/telejson": { + "node_modules/@storybook/manager-api/node_modules/@storybook/router": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.2.1.tgz", + "integrity": "sha512-9Cn5boUS+7yhrKlSy1kt7ruNs/znk3555kclBD6+uuhH/dD84feGeiGYE4GUuLmcKrDFtNF185/Gr1huJ556tA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "7.2.1", + "memoizerific": "^1.11.3", + "qs": "^6.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/manager-api/node_modules/@storybook/theming": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.2.1.tgz", + "integrity": "sha512-cfnNCLvKmzxjmoYKfLl7Q64gSTouLvd23CtvBAOlWcRYnMJ9v4/7A2tK3xQyVRlJYh9OuXiHFLL8AXbN58Hkzw==", + "dev": true, + "dependencies": { + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", + "@storybook/client-logger": "7.2.1", + "@storybook/global": "^5.0.0", + "memoizerific": "^1.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@storybook/manager-api/node_modules/telejson": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", @@ -16997,7 +16825,7 @@ "memoizerific": "^1.11.3" } }, - "node_modules/@storybook/preview-api/node_modules/type-fest": { + "node_modules/@storybook/manager-api/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", @@ -17009,455 +16837,345 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@storybook/preview-web": { - "version": "6.5.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/addons": "6.5.10", - "@storybook/channel-postmessage": "6.5.10", - "@storybook/client-logger": "6.5.10", - "@storybook/core-events": "6.5.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/store": "6.5.10", - "ansi-to-html": "^0.6.11", - "core-js": "^3.8.2", - "global": "^4.4.0", - "lodash": "^4.17.21", - "qs": "^6.10.0", - "regenerator-runtime": "^0.13.7", - "synchronous-promise": "^2.0.15", - "ts-dedent": "^2.0.0", - "unfetch": "^4.2.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/react": { + "node_modules/@storybook/manager-webpack4": { "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "@babel/preset-flow": "^7.12.1", + "@babel/core": "^7.12.10", + "@babel/plugin-transform-template-literals": "^7.12.1", "@babel/preset-react": "^7.12.10", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", "@storybook/addons": "6.5.10", - "@storybook/client-logger": "6.5.10", - "@storybook/core": "6.5.10", + "@storybook/core-client": "6.5.10", "@storybook/core-common": "6.5.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "@storybook/docs-tools": "6.5.10", "@storybook/node-logger": "6.5.10", - "@storybook/react-docgen-typescript-plugin": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", - "@storybook/semver": "^7.3.2", - "@storybook/store": "6.5.10", - "@types/estree": "^0.0.51", - "@types/node": "^14.14.20 || ^16.0.0", - "@types/webpack-env": "^1.16.0", - "acorn": "^7.4.1", - "acorn-jsx": "^5.3.1", - "acorn-walk": "^7.2.0", - "babel-plugin-add-react-displayname": "^0.0.5", - "babel-plugin-react-docgen": "^4.2.1", + "@storybook/theming": "6.5.10", + "@storybook/ui": "6.5.10", + "@types/node": "^14.0.10 || ^16.0.0", + "@types/webpack": "^4.41.26", + "babel-loader": "^8.0.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "chalk": "^4.1.0", "core-js": "^3.8.2", - "escodegen": "^2.0.0", + "css-loader": "^3.6.0", + "express": "^4.17.1", + "file-loader": "^6.2.0", + "find-up": "^5.0.0", "fs-extra": "^9.0.1", - "global": "^4.4.0", - "html-tags": "^3.1.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2", - "react-element-to-jsx-string": "^14.3.4", - "react-refresh": "^0.11.0", + "html-webpack-plugin": "^4.0.0", + "node-fetch": "^2.6.7", + "pnp-webpack-plugin": "1.6.4", "read-pkg-up": "^7.0.1", "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0", + "style-loader": "^1.3.0", + "telejson": "^6.0.8", + "terser-webpack-plugin": "^4.2.3", "ts-dedent": "^2.0.0", + "url-loader": "^4.1.1", "util-deprecate": "^1.0.2", - "webpack": ">=4.43.0 <6.0.0" - }, - "bin": { - "build-storybook": "bin/build.js", - "start-storybook": "bin/index.js", - "storybook-server": "bin/index.js" - }, - "engines": { - "node": ">=10.13.0" + "webpack": "4", + "webpack-dev-middleware": "^3.7.3", + "webpack-virtual-modules": "^0.2.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@babel/core": "^7.11.5", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "require-from-string": "^2.0.2" + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@storybook/builder-webpack4": { - "optional": true - }, - "@storybook/builder-webpack5": { - "optional": true - }, - "@storybook/manager-webpack4": { - "optional": true - }, - "@storybook/manager-webpack5": { - "optional": true - }, "typescript": { "optional": true } } }, - "node_modules/@storybook/react-docgen-typescript-plugin": { - "version": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", + "node_modules/@storybook/manager-webpack4/node_modules/@types/html-minifier-terser": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/manager-webpack4/node_modules/@types/node": { + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", + "dev": true + }, + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "endent": "^2.0.1", - "find-cache-dir": "^3.3.1", - "flat-cache": "^3.0.4", - "micromatch": "^4.0.2", - "react-docgen-typescript": "^2.1.1", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "typescript": ">= 3.x", - "webpack": ">= 4" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/find-cache-dir": { - "version": "3.3.2", + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/ieee754": { + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/find-up": { - "version": "4.1.0", + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/leb128": { + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@xtuc/long": "4.2.2" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/utf8": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-edit": { + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/make-dir": { - "version": "3.1.0", + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-gen": { + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-opt": { + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/@storybook/manager-webpack4/node_modules/@webassemblyjs/wasm-parser": { + "version": "1.9.0", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/acorn": { + "version": "6.4.2", "dev": true, "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/pkg-dir": { - "version": "4.2.0", + "node_modules/@storybook/manager-webpack4/node_modules/ajv": { + "version": "6.12.6", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@storybook/manager-webpack4/node_modules/ajv-keywords": { + "version": "3.5.2", "dev": true, - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/@storybook/react-dom-shim": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.2.1.tgz", - "integrity": "sha512-QzQQN2nZkG7c0Mg5HvhfQuH10HjAJEnA8vDlENIFMj3XqtUAq4HE2n73gEcvdFJMXL4G16N58+TgR1e2cFdRKw==", + "node_modules/@storybook/manager-webpack4/node_modules/ansi-regex": { + "version": "2.1.1", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@storybook/react/node_modules/@types/node": { - "version": "16.18.46", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", - "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", - "dev": true - }, - "node_modules/@storybook/react/node_modules/react-element-to-jsx-string": { - "version": "14.3.4", + "node_modules/@storybook/manager-webpack4/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "@base2/pretty-print-object": "1.0.1", - "is-plain-object": "5.0.0", - "react-is": "17.0.2" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1", - "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/react/node_modules/react-is": { - "version": "17.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@storybook/router": { - "version": "6.5.10", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", - "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", + "node_modules/@storybook/manager-webpack4/node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", "dev": true, "dependencies": { - "@storybook/client-logger": "6.5.10", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "regenerator-runtime": "^0.13.7" + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">= 8.9" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, - "node_modules/@storybook/semver": { - "version": "7.3.2", + "node_modules/@storybook/manager-webpack4/node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "ISC", "dependencies": { - "core-js": "^3.6.5", - "find-up": "^4.1.0" - }, - "bin": { - "semver": "bin/semver.js" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@storybook/semver/node_modules/find-up": { - "version": "4.1.0", + "node_modules/@storybook/manager-webpack4/node_modules/braces": { + "version": "2.3.2", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/semver/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" + "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": ">=8" + "node": ">=0.10.0" } }, - "node_modules/@storybook/semver/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/@storybook/manager-webpack4/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/@storybook/semver/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/@storybook/manager-webpack4/node_modules/cacache": { + "version": "12.0.4", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" } }, - "node_modules/@storybook/semver/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/camelcase": { + "version": "5.3.1", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/@storybook/store": { - "version": "6.5.10", + "node_modules/@storybook/manager-webpack4/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addons": "6.5.10", - "@storybook/client-logger": "6.5.10", - "@storybook/core-events": "6.5.10", - "@storybook/csf": "0.0.2--canary.4566f4d.1", - "core-js": "^3.8.2", - "fast-deep-equal": "^3.1.3", - "global": "^4.4.0", - "lodash": "^4.17.21", - "memoizerific": "^1.11.3", - "regenerator-runtime": "^0.13.7", - "slash": "^3.0.0", - "stable": "^0.1.8", - "synchronous-promise": "^2.0.15", - "ts-dedent": "^2.0.0", - "util-deprecate": "^1.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, - "node_modules/@storybook/telemetry": { - "version": "6.5.10", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/client-logger": "6.5.10", - "@storybook/core-common": "6.5.10", - "chalk": "^4.1.0", - "core-js": "^3.8.2", - "detect-package-manager": "^2.0.1", - "fetch-retry": "^5.0.2", - "fs-extra": "^9.0.1", - "global": "^4.4.0", - "isomorphic-unfetch": "^3.1.0", - "nanoid": "^3.3.1", - "read-pkg-up": "^7.0.1", - "regenerator-runtime": "^0.13.7" + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@storybook/telemetry/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@storybook/manager-webpack4/node_modules/chownr": { + "version": "1.1.4", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "license": "ISC" }, - "node_modules/@storybook/telemetry/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@storybook/manager-webpack4/node_modules/clean-css": { + "version": "4.2.4", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "source-map": "~0.6.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 4.0" } }, - "node_modules/@storybook/telemetry/node_modules/color-convert": { + "node_modules/@storybook/manager-webpack4/node_modules/color-convert": { "version": "2.0.1", "dev": true, "license": "MIT", @@ -17468,4871 +17186,5285 @@ "node": ">=7.0.0" } }, - "node_modules/@storybook/telemetry/node_modules/color-name": { + "node_modules/@storybook/manager-webpack4/node_modules/color-name": { "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/@storybook/telemetry/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/commander": { + "version": "4.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/@storybook/telemetry/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@storybook/manager-webpack4/node_modules/css-loader": { + "version": "3.6.0", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^6.3.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/theming": { - "version": "6.5.10", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", - "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "6.5.10", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "regenerator-runtime": "^0.13.7" + "node": ">= 8.9.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@storybook/types": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.2.1.tgz", - "integrity": "sha512-YwlIY1uyxfJjijbB5x1d1QOKaUUDJnMX8BSb8oGqU4cyT76X/Is4CbGs+vccFsJo0tZu1GfuahYXl0EDT0nnSQ==", + "node_modules/@storybook/manager-webpack4/node_modules/css-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, "dependencies": { - "@storybook/channels": "7.2.1", - "@types/babel__core": "^7.0.0", - "@types/express": "^4.7.0", - "file-system-cache": "2.3.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=4.0.0" } }, - "node_modules/@storybook/types/node_modules/@storybook/channels": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.2.1.tgz", - "integrity": "sha512-3ZogzjwlFG+oarwnI7TTvWvHVOUtJbjrgZkM5QuLMlxNzIR1XuBY8f01yf4K8+VpdNy9DY+7Q/j6tBThfwYvpA==", + "node_modules/@storybook/manager-webpack4/node_modules/css-select": { + "version": "4.3.0", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@storybook/client-logger": "7.2.1", - "@storybook/core-events": "7.2.1", - "@storybook/global": "^5.0.0", - "qs": "^6.10.0", - "telejson": "^7.0.3", - "tiny-invariant": "^1.3.1" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/@storybook/types/node_modules/@storybook/client-logger": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", - "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", + "node_modules/@storybook/manager-webpack4/node_modules/enhanced-resolve": { + "version": "4.5.0", "dev": true, "dependencies": { - "@storybook/global": "^5.0.0" + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/types/node_modules/@storybook/core-events": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", - "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@storybook/types/node_modules/file-system-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", - "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", + "node_modules/@storybook/manager-webpack4/node_modules/enhanced-resolve/node_modules/memory-fs": { + "version": "0.5.0", "dev": true, + "license": "MIT", "dependencies": { - "fs-extra": "11.1.1", - "ramda": "0.29.0" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" } }, - "node_modules/@storybook/types/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "node_modules/@storybook/manager-webpack4/node_modules/eslint-scope": { + "version": "4.0.3", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=14.14" + "node": ">=4.0.0" } }, - "node_modules/@storybook/types/node_modules/telejson": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", - "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", + "node_modules/@storybook/manager-webpack4/node_modules/estraverse": { + "version": "4.3.0", "dev": true, - "dependencies": { - "memoizerific": "^1.11.3" + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, - "node_modules/@storybook/ui": { - "version": "6.5.10", + "node_modules/@storybook/manager-webpack4/node_modules/fill-range": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "@storybook/addons": "6.5.10", - "@storybook/api": "6.5.10", - "@storybook/channels": "6.5.10", - "@storybook/client-logger": "6.5.10", - "@storybook/components": "6.5.10", - "@storybook/core-events": "6.5.10", - "@storybook/router": "6.5.10", - "@storybook/semver": "^7.3.2", - "@storybook/theming": "6.5.10", - "core-js": "^3.8.2", - "memoizerific": "^1.11.3", - "qs": "^6.10.0", - "regenerator-runtime": "^0.13.7", - "resolve-from": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "dependencies": { + "is-extendable": "^0.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "6.5.0", + "node_modules/@storybook/manager-webpack4/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=8" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "6.5.0", + "node_modules/@storybook/manager-webpack4/node_modules/html-minifier-terser": { + "version": "5.1.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "bin": { + "html-minifier-terser": "cli.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6" } }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/html-webpack-plugin": { + "version": "4.5.2", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@types/html-minifier-terser": "^5.0.0", + "@types/tapable": "^1.0.5", + "@types/webpack": "^4.41.8", + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.20", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "engines": { + "node": ">=6.9" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/html-webpack-plugin/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4.0.0" } }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/htmlparser2": { + "version": "6.1.0", "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/is-buffer": { + "version": "1.1.6", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "license": "MIT" }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/is-extendable": { + "version": "0.1.1", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=0.10.0" } }, - "node_modules/@svgr/babel-preset": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/is-number": { + "version": "3.0.0", "dev": true, "license": "MIT", "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", - "@svgr/babel-plugin-remove-jsx-attribute": "*", - "@svgr/babel-plugin-remove-jsx-empty-expression": "*", - "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", - "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", - "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", - "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", - "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=0.10.0" } }, - "node_modules/@svgr/core": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.1" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "node": ">=0.10.0" } }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/is-wsl": { + "version": "1.1.0", "dev": true, "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.0", - "entities": "^4.4.0" - }, "engines": { - "node": ">=10" + "node": ">=4" + } + }, + "node_modules/@storybook/manager-webpack4/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/manager-webpack4/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" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "node_modules/@storybook/manager-webpack4/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==", "dev": true, - "engines": { - "node": ">=0.12" + "dependencies": { + "p-locate": "^4.1.0" }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/@svgr/plugin-jsx": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/lru-cache": { + "version": "5.1.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/core": "^7.19.6", - "@svgr/babel-preset": "^6.5.1", - "@svgr/hast-util-to-babel-ast": "^6.5.1", - "svg-parser": "^2.0.4" + "yallist": "^3.0.2" + } + }, + "node_modules/@storybook/manager-webpack4/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": ">=10" + "node": ">=8" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "^6.0.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@svgr/plugin-svgo": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/micromatch": { + "version": "3.1.10", "dev": true, "license": "MIT", "dependencies": { - "cosmiconfig": "^7.0.1", - "deepmerge": "^4.2.2", - "svgo": "^2.8.0" + "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": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" + "node": ">=0.10.0" } }, - "node_modules/@svgr/plugin-svgo/node_modules/commander": { - "version": "7.2.0", + "node_modules/@storybook/manager-webpack4/node_modules/mkdirp": { + "version": "0.5.6", "dev": true, "license": "MIT", - "engines": { - "node": ">= 10" + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/@svgr/plugin-svgo/node_modules/css-select": { - "version": "4.3.0", + "node_modules/@storybook/manager-webpack4/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==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@svgr/plugin-svgo/node_modules/picocolors": { - "version": "1.0.0", + "node_modules/@storybook/manager-webpack4/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==", "dev": true, - "license": "ISC" + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@svgr/plugin-svgo/node_modules/svgo": { - "version": "2.8.0", + "node_modules/@storybook/manager-webpack4/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/@storybook/manager-webpack4/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, - "license": "MIT", "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^4.1.3", - "css-tree": "^1.1.3", - "csso": "^4.2.0", - "picocolors": "^1.0.0", - "stable": "^0.1.8" - }, - "bin": { - "svgo": "bin/svgo" + "find-up": "^4.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" } }, - "node_modules/@svgr/webpack": { - "version": "6.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/pkg-dir/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==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/core": "^7.19.6", - "@babel/plugin-transform-react-constant-elements": "^7.18.12", - "@babel/preset-env": "^7.19.4", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.18.6", - "@svgr/core": "^6.5.1", - "@svgr/plugin-jsx": "^6.5.1", - "@svgr/plugin-svgo": "^6.5.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "node": ">=8" } }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", + "node_modules/@storybook/manager-webpack4/node_modules/pretty-error": { + "version": "2.1.2", "dev": true, "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, - "node_modules/@tensorflow-models/face-detection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tensorflow-models/face-detection/-/face-detection-1.0.2.tgz", - "integrity": "sha512-anjSxy3MnZdTiVluOEQZeaFWM30IPswFM+SltX6wseXKja/AbrHYqamGNZKUylAs2JAyudq+xqTRPS+nA2ourg==", + "node_modules/@storybook/manager-webpack4/node_modules/renderkid": { + "version": "2.0.7", + "dev": true, + "license": "MIT", "dependencies": { - "rimraf": "^3.0.2", - "tslib": "2.4.0" - }, - "peerDependencies": { - "@mediapipe/face_detection": "~0.4.0", - "@tensorflow/tfjs-backend-webgl": "^4.4.0", - "@tensorflow/tfjs-converter": "^4.4.0", - "@tensorflow/tfjs-core": "^4.4.0" + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^3.0.1" } }, - "node_modules/@tensorflow/tfjs-backend-cpu": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.9.0.tgz", - "integrity": "sha512-AHIfI3iD1fyQgQKeoQmtkI3exPWRfOo+W0Ws/bxOdapTXcAYWGg0179t52j8XPDwsl8WopfaTINNgYNG6FnP3Q==", - "peer": true, + "node_modules/@storybook/manager-webpack4/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", "dependencies": { - "@types/seedrandom": "^2.4.28", - "seedrandom": "^3.0.5" - }, - "engines": { - "yarn": ">= 1.3.2" + "glob": "^7.1.3" }, - "peerDependencies": { - "@tensorflow/tfjs-core": "4.9.0" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/@tensorflow/tfjs-backend-webgl": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.9.0.tgz", - "integrity": "sha512-lSEOjR9zi6vb1V9yhrby8jWt6SS+wWBXRa3sDE5GCbpcHMWHv41wZktB2WQyIXDqJQcw1lRZBDoYneibMqr2uQ==", - "peer": true, + "node_modules/@storybook/manager-webpack4/node_modules/schema-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", "dependencies": { - "@tensorflow/tfjs-backend-cpu": "4.9.0", - "@types/offscreencanvas": "~2019.3.0", - "@types/seedrandom": "^2.4.28", - "@types/webgl-ext": "0.0.30", - "seedrandom": "^3.0.5" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" }, "engines": { - "yarn": ">= 1.3.2" + "node": ">= 8.9.0" }, - "peerDependencies": { - "@tensorflow/tfjs-core": "4.9.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/@tensorflow/tfjs-converter": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.9.0.tgz", - "integrity": "sha512-mRlzdG3jVsxMkFfHFgDNY10HMoh+vtfPPIghtY+Fc4U/ZnBUFvSfZqwEFyXfOJAewn4fY4BX8+6RE4a0kRXqGA==", - "peer": true, - "peerDependencies": { - "@tensorflow/tfjs-core": "4.9.0" + "node_modules/@storybook/manager-webpack4/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@tensorflow/tfjs-core": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-4.9.0.tgz", - "integrity": "sha512-1nYs9OA934eSI33eTvyCVJUEji2wnMXyZ3VK7l2iS/TPDFISI3ETyh286mW56LCihoniv8HH2MtOAQwo4Qhrdg==", - "peer": true, + "node_modules/@storybook/manager-webpack4/node_modules/serialize-javascript": { + "version": "4.0.0", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@types/long": "^4.0.1", - "@types/offscreencanvas": "~2019.7.0", - "@types/seedrandom": "^2.4.28", - "@types/webgl-ext": "0.0.30", - "@webgpu/types": "0.1.30", - "long": "4.0.0", - "node-fetch": "~2.6.1", - "seedrandom": "^3.0.5" - }, - "engines": { - "yarn": ">= 1.3.2" + "randombytes": "^2.1.0" } }, - "node_modules/@tensorflow/tfjs-core/node_modules/@types/offscreencanvas": { - "version": "2019.7.0", - "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", - "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==", - "peer": true + "node_modules/@storybook/manager-webpack4/node_modules/ssri": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "figgy-pudding": "^3.5.1" + } }, - "node_modules/@testing-library/jest-native": { - "version": "5.4.1", + "node_modules/@storybook/manager-webpack4/node_modules/strip-ansi": { + "version": "3.0.1", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.2", - "jest-diff": "^29.0.1", - "jest-matcher-utils": "^29.0.1", - "pretty-format": "^29.0.3", - "redent": "^3.0.0" + "ansi-regex": "^2.0.0" }, - "peerDependencies": { - "react": ">=16.0.0", - "react-native": ">=0.59", - "react-test-renderer": ">=16.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@testing-library/jest-native/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/@storybook/manager-webpack4/node_modules/style-loader": { + "version": "1.3.0", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" }, "engines": { - "node": ">=8" + "node": ">= 8.9.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@testing-library/jest-native/node_modules/chalk": { - "version": "4.1.2", + "node_modules/@storybook/manager-webpack4/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/@testing-library/jest-native/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/@storybook/manager-webpack4/node_modules/terser": { + "version": "4.8.1", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "color-name": "~1.1.4" + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.0.0" } }, - "node_modules/@testing-library/jest-native/node_modules/color-name": { - "version": "1.1.4", + "node_modules/@storybook/manager-webpack4/node_modules/terser/node_modules/commander": { + "version": "2.20.3", "dev": true, "license": "MIT" }, - "node_modules/@testing-library/jest-native/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/to-regex-range": { + "version": "2.1.1", "dev": true, "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/@testing-library/jest-native/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/@storybook/manager-webpack4/node_modules/watchpack": { + "version": "1.7.5", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" }, - "engines": { - "node": ">=8" + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" } }, - "node_modules/@testing-library/react-native": { - "version": "11.5.1", + "node_modules/@storybook/manager-webpack4/node_modules/webpack": { + "version": "4.46.0", "dev": true, "license": "MIT", "dependencies": { - "pretty-format": "^29.4.0" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.5.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" }, - "peerDependencies": { - "jest": ">=28.0.0", - "react": ">=16.8.0", - "react-native": ">=0.59", - "react-test-renderer": ">=16.8.0" + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependenciesMeta": { - "jest": { + "webpack-cli": { + "optional": true + }, + "webpack-command": { "optional": true } } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", + "node_modules/@storybook/manager-webpack4/node_modules/webpack/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", "dev": true, - "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, "engines": { - "node": ">= 10" + "node": ">=4.0.0" } }, - "node_modules/@trysound/sax": { - "version": "0.2.0", + "node_modules/@storybook/manager-webpack4/node_modules/webpack/node_modules/schema-utils": { + "version": "1.0.0", "dev": true, - "license": "ISC", - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@turf/along": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/along/-/along-6.5.0.tgz", - "integrity": "sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==", + "license": "MIT", "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" }, - "funding": { - "url": "https://opencollective.com/turf" + "engines": { + "node": ">= 4" } }, - "node_modules/@turf/bbox": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", - "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", + "node_modules/@storybook/manager-webpack4/node_modules/webpack/node_modules/terser-webpack-plugin": { + "version": "1.4.5", + "dev": true, + "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" }, - "funding": { - "url": "https://opencollective.com/turf" + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "webpack": "^4.0.0" } }, - "node_modules/@turf/bearing": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.5.0.tgz", - "integrity": "sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } + "node_modules/@storybook/manager-webpack4/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" }, - "node_modules/@turf/destination": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-6.5.0.tgz", - "integrity": "sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==", + "node_modules/@storybook/manager-webpack5": { + "version": "6.5.10", + "dev": true, + "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + "@babel/core": "^7.12.10", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/preset-react": "^7.12.10", + "@storybook/addons": "6.5.10", + "@storybook/core-client": "6.5.10", + "@storybook/core-common": "6.5.10", + "@storybook/node-logger": "6.5.10", + "@storybook/theming": "6.5.10", + "@storybook/ui": "6.5.10", + "@types/node": "^14.0.10 || ^16.0.0", + "babel-loader": "^8.0.0", + "case-sensitive-paths-webpack-plugin": "^2.3.0", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "css-loader": "^5.0.1", + "express": "^4.17.1", + "find-up": "^5.0.0", + "fs-extra": "^9.0.1", + "html-webpack-plugin": "^5.0.0", + "node-fetch": "^2.6.7", + "process": "^0.11.10", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0", + "style-loader": "^2.0.0", + "telejson": "^6.0.8", + "terser-webpack-plugin": "^5.0.3", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": "^5.9.0", + "webpack-dev-middleware": "^4.1.0", + "webpack-virtual-modules": "^0.4.1" }, "funding": { - "url": "https://opencollective.com/turf" + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@turf/distance": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz", - "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==", + "node_modules/@storybook/manager-webpack5/node_modules/@types/node": { + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", + "dev": true + }, + "node_modules/@storybook/manager-webpack5/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": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + "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": { - "url": "https://opencollective.com/turf" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "funding": { - "url": "https://opencollective.com/turf" + "node_modules/@storybook/manager-webpack5/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/@turf/invariant": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz", - "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==", + "node_modules/@storybook/manager-webpack5/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0" + "color-convert": "^2.0.1" }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/length": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/length/-/length-6.5.0.tgz", - "integrity": "sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==", - "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" + "engines": { + "node": ">=8" }, "funding": { - "url": "https://opencollective.com/turf" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@turf/line-intersect": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz", - "integrity": "sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==", + "node_modules/@storybook/manager-webpack5/node_modules/babel-loader": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz", + "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==", + "dev": true, "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/meta": "^6.5.0", - "geojson-rbush": "3.x" + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" }, - "funding": { - "url": "https://opencollective.com/turf" + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" } }, - "node_modules/@turf/line-segment": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz", - "integrity": "sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==", + "node_modules/@storybook/manager-webpack5/node_modules/babel-loader/node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" }, "funding": { - "url": "https://opencollective.com/turf" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/@turf/meta": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz", - "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==", + "node_modules/@storybook/manager-webpack5/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/turf" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@turf/nearest-point-on-line": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-6.5.0.tgz", - "integrity": "sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==", + "node_modules/@storybook/manager-webpack5/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/meta": "^6.5.0" + "color-name": "~1.1.4" }, - "funding": { - "url": "https://opencollective.com/turf" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "node_modules/@storybook/manager-webpack5/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "*" - } + "license": "MIT" }, - "node_modules/@types/babel__core": { - "version": "7.1.19", + "node_modules/@storybook/manager-webpack5/node_modules/css-loader": { + "version": "5.2.7", + "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" } }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "license": "MIT", + "node_modules/@storybook/manager-webpack5/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, "dependencies": { - "@babel/types": "^7.0.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@types/babel__template": { - "version": "7.4.1", + "node_modules/@storybook/manager-webpack5/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/@types/babel__traverse": { - "version": "7.18.0", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.3.0" + "node_modules/@storybook/manager-webpack5/node_modules/icss-utils": { + "version": "5.1.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@types/body-parser": { - "version": "1.19.2", + "node_modules/@storybook/manager-webpack5/node_modules/jest-worker": { + "version": "27.5.1", "dev": true, "license": "MIT", "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/@types/bonjour": { - "version": "3.5.10", + "node_modules/@storybook/manager-webpack5/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", + "node_modules/@storybook/manager-webpack5/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/@storybook/manager-webpack5/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==", "dev": true, - "license": "MIT", "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/concurrently": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/concurrently/-/concurrently-7.0.0.tgz", - "integrity": "sha512-pUOv0XBVexkfVOLWwzh8CMK7b+dnXGvq+/sJKfcws6b0vuMqNw8UeZUiaO9mWxfyS0eYGQyxg+J9EpVRxUCunA==", - "deprecated": "This is a stub types definition. concurrently provides its own type definitions, so you do not need this installed.", + "node_modules/@storybook/manager-webpack5/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": { - "concurrently": "*" + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/connect": { - "version": "3.4.35", + "node_modules/@storybook/manager-webpack5/node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.3.5", + "node_modules/@storybook/manager-webpack5/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==", "dev": true, - "license": "MIT", "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "node_modules/@storybook/manager-webpack5/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==", "dev": true, "dependencies": { - "@types/ms": "*" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/doctrine": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz", - "integrity": "sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==", - "dev": true + "node_modules/@storybook/manager-webpack5/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/@types/emscripten": { - "version": "0.0.34", - "license": "MIT" + "node_modules/@storybook/manager-webpack5/node_modules/picocolors": { + "version": "1.0.0", + "dev": true, + "license": "ISC" }, - "node_modules/@types/eslint": { - "version": "8.4.6", - "devOptional": true, - "license": "MIT", + "node_modules/@storybook/manager-webpack5/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": { - "@types/estree": "*", - "@types/json-schema": "*" + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "devOptional": true, - "license": "MIT", + "node_modules/@storybook/manager-webpack5/node_modules/pkg-dir/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==", + "dev": true, "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/estree": { - "version": "0.0.51", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", - "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", + "node_modules/@storybook/manager-webpack5/node_modules/postcss": { + "version": "8.4.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz", + "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==", "dev": true, - "optional": true, - "peer": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "@types/estree": "*" + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "node_modules/@types/express": { - "version": "4.17.13", + "node_modules/@storybook/manager-webpack5/node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.30", + "node_modules/@storybook/manager-webpack5/node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@types/find-cache-dir": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz", - "integrity": "sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==", - "dev": true - }, - "node_modules/@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", + "node_modules/@storybook/manager-webpack5/node_modules/postcss-modules-scope": { + "version": "3.0.0", "dev": true, + "license": "ISC", "dependencies": { - "@types/node": "*" + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@types/geojson": { - "version": "7946.0.8", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", - "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" - }, - "node_modules/@types/glob": { - "version": "7.2.0", + "node_modules/@storybook/manager-webpack5/node_modules/postcss-modules-values": { + "version": "4.0.0", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "license": "MIT", + "node_modules/@storybook/manager-webpack5/node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "dev": true, "dependencies": { - "@types/node": "*" + "randombytes": "^2.1.0" } }, - "node_modules/@types/hammerjs": { - "version": "2.0.41", - "license": "MIT" - }, - "node_modules/@types/hast": { - "version": "2.3.4", + "node_modules/@storybook/manager-webpack5/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "*" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", + "node_modules/@storybook/manager-webpack5/node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, - "license": "MIT" + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } }, - "node_modules/@types/http-proxy": { - "version": "1.17.9", + "node_modules/@storybook/manager-webpack5/node_modules/webpack-dev-middleware": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "colorette": "^1.2.2", + "mem": "^8.1.1", + "memfs": "^3.2.2", + "mime-types": "^2.1.30", + "range-parser": "^1.2.1", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= v10.23.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/@types/is-function": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "license": "MIT" + "node_modules/@storybook/manager-webpack5/node_modules/webpack-virtual-modules": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.4.6.tgz", + "integrity": "sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==", + "dev": true }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", + "node_modules/@storybook/mdx1-csf": { + "version": "0.0.1", + "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "*" + "@babel/generator": "^7.12.11", + "@babel/parser": "^7.12.11", + "@babel/preset-env": "^7.12.11", + "@babel/types": "^7.12.11", + "@mdx-js/mdx": "^1.6.22", + "@types/lodash": "^4.14.167", + "js-string-escape": "^1.0.1", + "loader-utils": "^2.0.0", + "lodash": "^4.17.21", + "prettier": ">=2.2.1 <=2.3.0", + "ts-dedent": "^2.0.0" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", + "node_modules/@storybook/mdx1-csf/node_modules/prettier": { + "version": "2.3.0", + "dev": true, "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@types/jest": { - "version": "29.5.2", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.2.tgz", - "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==", + "node_modules/@storybook/mdx2-csf": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@storybook/mdx2-csf/-/mdx2-csf-0.0.3.tgz", + "integrity": "sha512-PFhucALIP23H3D/VyA4vlDsHKEJfhbLCIullmvaSl+KTTGbn4g+IkOAsIhVx+dEHYdCqCRW53r66+D4P6A7uOA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" + "@babel/generator": "^7.12.11", + "@babel/parser": "^7.12.11", + "@mdx-js/mdx": "^2.0.0", + "estree-to-babel": "^4.9.0", + "hast-util-to-estree": "^2.0.2", + "js-string-escape": "^1.0.1", + "loader-utils": "^2.0.0", + "lodash": "^4.17.21" } }, - "node_modules/@types/jest-when": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@types/jest-when/-/jest-when-3.5.2.tgz", - "integrity": "sha512-1WP+wJDW7h4TYAVLoIebxRIVv8GPk66Qsq2nU7PkwKZ6usurnDQZgk0DfBNKAJ9gVzapCXSV53Vn/3nBHBNzAw==", + "node_modules/@storybook/mdx2-csf/node_modules/@mdx-js/mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", + "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@types/jest": "*" + "@types/estree-jsx": "^1.0.0", + "@types/mdx": "^2.0.0", + "estree-util-build-jsx": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-util-to-js": "^1.1.0", + "estree-walker": "^3.0.0", + "hast-util-to-estree": "^2.0.0", + "markdown-extensions": "^1.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^2.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "unified": "^10.0.0", + "unist-util-position-from-estree": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@types/js-yaml": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", - "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", - "dev": true + "node_modules/@storybook/mdx2-csf/node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/@types/jsdom": { - "version": "20.0.1", + "node_modules/@storybook/mdx2-csf/node_modules/estree-to-babel": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/estree-to-babel/-/estree-to-babel-4.9.0.tgz", + "integrity": "sha512-Ev5c4YJbMaozG8TCsRys74CViaRKnjllUpnJCrY3JB8DMlUQ0n0zgjCECEWN6ji7aAfYZvohwh6a2P0jl8A8Hw==", "dev": true, - "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" + "@babel/traverse": "^7.1.6", + "@babel/types": "^7.2.0" + }, + "engines": { + "node": ">=14" } }, - "node_modules/@types/jsdom/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "node_modules/@storybook/mdx2-csf/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, + "optional": true, + "peer": true, "engines": { - "node": ">=0.12" + "node": ">=12" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/jsdom/node_modules/parse5": { - "version": "7.1.2", + "node_modules/@storybook/mdx2-csf/node_modules/remark-mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz", + "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==", "dev": true, - "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "entities": "^4.4.0" + "mdast-util-mdx": "^2.0.0", + "micromark-extension-mdxjs": "^1.0.0" }, "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "devOptional": true - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", + "node_modules/@storybook/mdx2-csf/node_modules/remark-parse": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", + "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", "dev": true, - "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@types/node": "*" + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@types/lodash": { - "version": "4.14.195", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", - "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", - "dev": true - }, - "node_modules/@types/long": { - "version": "4.0.2", - "license": "MIT" - }, - "node_modules/@types/mapbox-gl": { - "version": "2.7.13", - "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-2.7.13.tgz", - "integrity": "sha512-qNffhTdYkeFl8QG9Q1zPPJmcs8PvHgmLa1PcwP1rxvcfMsIgcFr/FnrCttG0ZnH7Kzdd7xfECSRNTWSr4jC3PQ==", - "dependencies": { - "@types/geojson": "*" + "node_modules/@storybook/mdx2-csf/node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@types/mdast": { - "version": "3.0.10", + "node_modules/@storybook/mdx2-csf/node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", "dev": true, - "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@types/unist": "*" + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@types/mdx": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.5.tgz", - "integrity": "sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mock-fs": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.1.tgz", - "integrity": "sha512-m6nFAJ3lBSnqbvDZioawRvpLXSaPyn52Srf7OfzjubYbYX8MTUdIgDxQl0wEapm4m/pNYSd9TXocpQ0TvZFlYA==", + "node_modules/@storybook/mdx2-csf/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@types/node": "*" + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.17.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.11.tgz", - "integrity": "sha512-r3hjHPBu+3LzbGBa8DHnr/KAeTEEOrahkcL+cZc4MaBMTM+mk8LtXR+zw+nqfjuDZZzYTYgTcpHuP+BEQk069g==" - }, - "node_modules/@types/node-fetch": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz", - "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==", + "node_modules/@storybook/mdx2-csf/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/npmlog": { - "version": "4.1.4", + "node_modules/@storybook/mdx2-csf/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/offscreencanvas": { - "version": "2019.3.0", - "license": "MIT" + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/@types/parse-json": { - "version": "4.0.0", + "node_modules/@storybook/mdx2-csf/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", "dev": true, - "license": "MIT" + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/@types/parse5": { - "version": "5.0.3", + "node_modules/@storybook/mdx2-csf/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", "dev": true, - "license": "MIT" + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/@types/plist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", - "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "node_modules/@storybook/mdx2-csf/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", "dev": true, "optional": true, + "peer": true, "dependencies": { - "@types/node": "*", - "xmlbuilder": ">=11.0.1" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@types/pretty-hrtime": { - "version": "1.0.1", + "node_modules/@storybook/node-logger": { + "version": "6.5.10", "dev": true, - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "license": "MIT" - }, - "node_modules/@types/pusher-js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/pusher-js/-/pusher-js-5.1.0.tgz", - "integrity": "sha512-VubdW1NvHAojLFtJ+FWmZsIlkSE+EiaLrrfCKcW/t9UDlXWF85rSPVc+5zdpZLVzkwaUaFeyIYSgeNfXc9Dxlg==", - "deprecated": "This is a stub types definition. pusher-js provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "pusher-js": "*" - } - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ramda": { - "version": "0.27.66", "license": "MIT", "dependencies": { - "ts-toolbelt": "^6.15.1" + "@types/npmlog": "^4.1.2", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "npmlog": "^5.0.1", + "pretty-hrtime": "^1.0.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@types/range-parser": { - "version": "1.2.4", + "node_modules/@storybook/node-logger/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "18.2.12", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.12.tgz", - "integrity": "sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==", + "license": "MIT", "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@types/react-collapse": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/react-collapse/-/react-collapse-5.0.1.tgz", - "integrity": "sha512-Iq3OrqvzCIP0DmAawU4T2VKH6XAplbjo/D7Qk14mcfQ92plU+OrA2SF10r2XrcFg1Wvya/5f8w1vS29RVpdoLQ==", + "node_modules/@storybook/node-logger/node_modules/chalk": { + "version": "4.1.2", "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.4", "license": "MIT", "dependencies": { - "@types/react": "*" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@types/react-native": { - "version": "0.70.6", + "node_modules/@storybook/node-logger/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@types/react": "*" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@types/react-pdf": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@types/react-pdf/-/react-pdf-5.7.2.tgz", - "integrity": "sha512-6cUselXlQSNd9pMswJGvHqki3Lq0cnls/3hNwrFizdDeHBAfTFXTScEBObfGPznEmtO2LvmZMeced43BV9Wbog==", + "node_modules/@storybook/node-logger/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "dependencies": { - "@types/react": "*", - "pdfjs-dist": "^2.10.377" - } + "license": "MIT" }, - "node_modules/@types/react-test-renderer": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz", - "integrity": "sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ==", + "node_modules/@storybook/node-logger/node_modules/has-flag": { + "version": "4.0.0", "dev": true, - "dependencies": { - "@types/react": "*" + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/@types/responselike": { - "version": "1.0.0", + "node_modules/@storybook/node-logger/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/retry": { - "version": "0.12.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/scheduler": { - "version": "0.16.2", - "license": "MIT" - }, - "node_modules/@types/seedrandom": { - "version": "2.4.30", - "license": "MIT" - }, - "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", - "dev": true - }, - "node_modules/@types/serve-index": { - "version": "1.9.1", + "node_modules/@storybook/postinstall": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.2.1.tgz", + "integrity": "sha512-xOzX1MygQ+9xpku6FuODhXvfv/CcKlQPOGpZk8ejE/04Eow0JHluGI1cxdnpqGcCBygkw7DP+xrtQCv75c7Gjg==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@types/serve-static": { - "version": "1.15.0", + "node_modules/@storybook/preview-api": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.2.1.tgz", + "integrity": "sha512-WKecuOdeh9+og6bPR9KoQf/JCeSRPCcfZv9uNfJzAp3IiTnS3UpfCz+HBZzZJQrisgbd7OulNY400HQUmxY2Ag==", "dev": true, - "license": "MIT", "dependencies": { - "@types/mime": "*", - "@types/node": "*" + "@storybook/channels": "7.2.1", + "@storybook/client-logger": "7.2.1", + "@storybook/core-events": "7.2.1", + "@storybook/csf": "^0.1.0", + "@storybook/global": "^5.0.0", + "@storybook/types": "7.2.1", + "@types/qs": "^6.9.5", + "dequal": "^2.0.2", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@types/setimmediate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/setimmediate/-/setimmediate-1.0.2.tgz", - "integrity": "sha512-JHonWbepiR1pwiYVz2rOK4mWrhlUcrJQaOSaq4VYlfuhLrPlY1EayGjt0tXemCr8eBdVzvLeYejRCb/0Z/XuiQ==", - "dev": true - }, - "node_modules/@types/sockjs": { - "version": "0.3.33", + "node_modules/@storybook/preview-api/node_modules/@storybook/channels": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.2.1.tgz", + "integrity": "sha512-3ZogzjwlFG+oarwnI7TTvWvHVOUtJbjrgZkM5QuLMlxNzIR1XuBY8f01yf4K8+VpdNy9DY+7Q/j6tBThfwYvpA==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "*" + "@storybook/client-logger": "7.2.1", + "@storybook/core-events": "7.2.1", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.0.3", + "tiny-invariant": "^1.3.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@types/source-list-map": { - "version": "0.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "license": "MIT" - }, - "node_modules/@types/tapable": { - "version": "1.0.8", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/uglify-js": { - "version": "3.17.0", + "node_modules/@storybook/preview-api/node_modules/@storybook/client-logger": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", + "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", "dev": true, - "license": "MIT", "dependencies": { - "source-map": "^0.6.1" + "@storybook/global": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@types/underscore": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.5.tgz", - "integrity": "sha512-b8e//LrIlhoXaaBcMC0J/s2/lIF9y5VJYKqbW4nA+tW/nqqDk1Dacd1ULLT7zgGsKs7PGbSnqCPzqEniZ0RxYg==", - "dev": true - }, - "node_modules/@types/unist": { - "version": "2.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/urijs": { - "version": "1.19.19", - "license": "MIT" - }, - "node_modules/@types/verror": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", - "integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==", + "node_modules/@storybook/preview-api/node_modules/@storybook/core-events": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", + "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", "dev": true, - "optional": true - }, - "node_modules/@types/webgl-ext": { - "version": "0.0.30", - "license": "MIT" - }, - "node_modules/@types/webgl2": { - "version": "0.0.6", - "license": "MIT" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } }, - "node_modules/@types/webpack": { - "version": "4.41.32", + "node_modules/@storybook/preview-api/node_modules/@storybook/csf": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.1.tgz", + "integrity": "sha512-4hE3AlNVxR60Wc5KSC68ASYzUobjPqtSKyhV6G+ge0FIXU55N5nTY7dXGRZHQGDBPq+XqchMkIdlkHPRs8nTHg==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/tapable": "^1", - "@types/uglify-js": "*", - "@types/webpack-sources": "*", - "anymatch": "^3.0.0", - "source-map": "^0.6.0" + "type-fest": "^2.19.0" } }, - "node_modules/@types/webpack-env": { - "version": "1.18.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/webpack-sources": { - "version": "3.2.0", + "node_modules/@storybook/preview-api/node_modules/telejson": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", "dev": true, - "license": "MIT", "dependencies": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.7.3" + "memoizerific": "^1.11.3" } }, - "node_modules/@types/webpack-sources/node_modules/source-map": { - "version": "0.7.4", + "node_modules/@storybook/preview-api/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/ws": { - "version": "8.5.3", + "node_modules/@storybook/preview-web": { + "version": "6.5.10", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*" - } - }, - "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": "*" + "@storybook/addons": "6.5.10", + "@storybook/channel-postmessage": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/store": "6.5.10", + "ansi-to-html": "^0.6.11", + "core-js": "^3.8.2", + "global": "^4.4.0", + "lodash": "^4.17.21", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "unfetch": "^4.2.0", + "util-deprecate": "^1.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "license": "MIT" - }, - "node_modules/@types/yauzl": { - "version": "2.10.0", + "node_modules/@storybook/react": { + "version": "6.5.10", "dev": true, "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz", - "integrity": "sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==", - "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.4.1", - "@typescript-eslint/type-utils": "6.4.1", - "@typescript-eslint/utils": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "@babel/preset-flow": "^7.12.1", + "@babel/preset-react": "^7.12.10", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.3", + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core": "6.5.10", + "@storybook/core-common": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "@storybook/docs-tools": "6.5.10", + "@storybook/node-logger": "6.5.10", + "@storybook/react-docgen-typescript-plugin": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", + "@storybook/semver": "^7.3.2", + "@storybook/store": "6.5.10", + "@types/estree": "^0.0.51", + "@types/node": "^14.14.20 || ^16.0.0", + "@types/webpack-env": "^1.16.0", + "acorn": "^7.4.1", + "acorn-jsx": "^5.3.1", + "acorn-walk": "^7.2.0", + "babel-plugin-add-react-displayname": "^0.0.5", + "babel-plugin-react-docgen": "^4.2.1", + "core-js": "^3.8.2", + "escodegen": "^2.0.0", + "fs-extra": "^9.0.1", + "global": "^4.4.0", + "html-tags": "^3.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2", + "react-element-to-jsx-string": "^14.3.4", + "react-refresh": "^0.11.0", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2", + "webpack": ">=4.43.0 <6.0.0" + }, + "bin": { + "build-storybook": "bin/build.js", + "start-storybook": "bin/index.js", + "storybook-server": "bin/index.js" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=10.13.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "@babel/core": "^7.11.5", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "require-from-string": "^2.0.2" }, "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@storybook/builder-webpack4": { + "optional": true + }, + "@storybook/builder-webpack5": { + "optional": true + }, + "@storybook/manager-webpack4": { + "optional": true + }, + "@storybook/manager-webpack5": { + "optional": true + }, "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz", - "integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==", + "node_modules/@storybook/react-docgen-typescript-plugin": { + "version": "1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "debug": "^4.1.1", + "endent": "^2.0.1", + "find-cache-dir": "^3.3.1", + "flat-cache": "^3.0.4", + "micromatch": "^4.0.2", + "react-docgen-typescript": "^2.1.1", + "tslib": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "typescript": ">= 3.x", + "webpack": ">= 4" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz", - "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/find-cache-dir": { + "version": "3.3.2", "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz", - "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/find-up": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.4.1.tgz", - "integrity": "sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/locate-path": { + "version": "5.0.0", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.4.1", - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/typescript-estree": "6.4.1", - "semver": "^7.5.4" + "p-locate": "^4.1.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "node": ">=8" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz", - "integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/make-dir": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.4.1", - "eslint-visitor-keys": "^3.4.1" + "semver": "^6.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/p-limit": { + "version": "2.3.0", "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/p-locate": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" + "node": ">=8" } }, - "node_modules/@typescript-eslint/parser": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.4.1.tgz", - "integrity": "sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==", + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/pkg-dir": { + "version": "4.2.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "6.4.1", - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/typescript-estree": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1", - "debug": "^4.3.4" + "find-up": "^4.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, + "node": ">=8" + } + }, + "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@storybook/react-dom-shim": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.2.1.tgz", + "integrity": "sha512-QzQQN2nZkG7c0Mg5HvhfQuH10HjAJEnA8vDlENIFMj3XqtUAq4HE2n73gEcvdFJMXL4G16N58+TgR1e2cFdRKw==", + "dev": true, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz", - "integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==", + "node_modules/@storybook/react/node_modules/@types/node": { + "version": "16.18.46", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.46.tgz", + "integrity": "sha512-Mnq3O9Xz52exs3mlxMcQuA7/9VFe/dXcrgAyfjLkABIqxXKOgBRjyazTxUbjsxDa4BP7hhPliyjVTP9RDP14xg==", + "dev": true + }, + "node_modules/@storybook/react/node_modules/react-element-to-jsx-string": { + "version": "14.3.4", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "@base2/pretty-print-object": "1.0.1", + "is-plain-object": "5.0.0", + "react-is": "17.0.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1", + "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz", - "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==", + "node_modules/@storybook/react/node_modules/react-is": { + "version": "17.0.2", "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } + "license": "MIT" }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz", - "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==", + "node_modules/@storybook/router": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-6.5.10.tgz", + "integrity": "sha512-O+vNW/eEpYFF8eCg5jZjNQ6q2DKQVxqDRPCy9pJdEbvavMDZn6AFYgVK+VJe5F4211WW2yncOu922xObCxXJYg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz", - "integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==", + "node_modules/@storybook/semver": { + "version": "7.3.2", "dev": true, + "license": "ISC", "dependencies": { - "@typescript-eslint/types": "6.4.1", - "eslint-visitor-keys": "^3.4.1" + "core-js": "^3.6.5", + "find-up": "^4.1.0" }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": ">=10" } }, - "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@storybook/semver/node_modules/find-up": { + "version": "4.1.0", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=8" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", + "node_modules/@storybook/semver/node_modules/locate-path": { + "version": "5.0.0", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz", - "integrity": "sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==", + "node_modules/@storybook/semver/node_modules/p-limit": { + "version": "2.3.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "6.4.1", - "@typescript-eslint/utils": "6.4.1", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "p-try": "^2.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz", - "integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==", + "node_modules/@storybook/semver/node_modules/p-locate": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1" + "p-limit": "^2.2.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz", - "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==", + "node_modules/@storybook/semver/node_modules/path-exists": { + "version": "4.0.0", "dev": true, + "license": "MIT", "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=8" + } + }, + "node_modules/@storybook/store": { + "version": "6.5.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/csf": "0.0.2--canary.4566f4d.1", + "core-js": "^3.8.2", + "fast-deep-equal": "^3.1.3", + "global": "^4.4.0", + "lodash": "^4.17.21", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7", + "slash": "^3.0.0", + "stable": "^0.1.8", + "synchronous-promise": "^2.0.15", + "ts-dedent": "^2.0.0", + "util-deprecate": "^1.0.2" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/storybook" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz", - "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==", + "node_modules/@storybook/telemetry": { + "version": "6.5.10", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/visitor-keys": "6.4.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "@storybook/client-logger": "6.5.10", + "@storybook/core-common": "6.5.10", + "chalk": "^4.1.0", + "core-js": "^3.8.2", + "detect-package-manager": "^2.0.1", + "fetch-retry": "^5.0.2", + "fs-extra": "^9.0.1", + "global": "^4.4.0", + "isomorphic-unfetch": "^3.1.0", + "nanoid": "^3.3.1", + "read-pkg-up": "^7.0.1", + "regenerator-runtime": "^0.13.7" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/storybook" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.4.1.tgz", - "integrity": "sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==", + "node_modules/@storybook/telemetry/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.4.1", - "@typescript-eslint/types": "6.4.1", - "@typescript-eslint/typescript-estree": "6.4.1", - "semver": "^7.5.4" + "color-convert": "^2.0.1" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz", - "integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==", + "node_modules/@storybook/telemetry/node_modules/chalk": { + "version": "4.1.2", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "6.4.1", - "eslint-visitor-keys": "^3.4.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@storybook/telemetry/node_modules/color-convert": { + "version": "2.0.1", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "4.33.0", + "node_modules/@storybook/telemetry/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@storybook/telemetry/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", + "node_modules/@storybook/telemetry/node_modules/supports-color": { + "version": "7.2.0", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=8" + } + }, + "node_modules/@storybook/theming": { + "version": "6.5.10", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-6.5.10.tgz", + "integrity": "sha512-BvTQBBcSEwKKcsVmF+Ol6v0RIQUr+bxP7gb10wtfBd23mZTEFA0C1N5FnZr/dDeiBKG1pvf1UKvoYA731y0BsA==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "regenerator-runtime": "^0.13.7" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "node_modules/@storybook/types": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.2.1.tgz", + "integrity": "sha512-YwlIY1uyxfJjijbB5x1d1QOKaUUDJnMX8BSb8oGqU4cyT76X/Is4CbGs+vccFsJo0tZu1GfuahYXl0EDT0nnSQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@storybook/channels": "7.2.1", + "@types/babel__core": "^7.0.0", + "@types/express": "^4.7.0", + "file-system-cache": "2.3.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "url": "https://opencollective.com/storybook" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/@storybook/types/node_modules/@storybook/channels": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.2.1.tgz", + "integrity": "sha512-3ZogzjwlFG+oarwnI7TTvWvHVOUtJbjrgZkM5QuLMlxNzIR1XuBY8f01yf4K8+VpdNy9DY+7Q/j6tBThfwYvpA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@storybook/client-logger": "7.2.1", + "@storybook/core-events": "7.2.1", + "@storybook/global": "^5.0.0", + "qs": "^6.10.0", + "telejson": "^7.0.3", + "tiny-invariant": "^1.3.1" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/storybook" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/@storybook/types/node_modules/@storybook/client-logger": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.2.1.tgz", + "integrity": "sha512-Lyht/lJg2S65CXRy9rXAZXP/Mgye7jbi/aqQL8z9VRMGChbL+k/3pSZnXTTrD1OVSpCEr4UWA+9bStzT4VjtYA==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "dependencies": { + "@storybook/global": "^5.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/storybook" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "node_modules/@storybook/types/node_modules/@storybook/core-events": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.2.1.tgz", + "integrity": "sha512-EUXYb3gyQ2EzpDAWkgfoDl1EPabj3OE6+zntsD/gwvzQU85BTocs10ksnRyS55bfrQpYbf+Z+gw2CZboyagLgg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/storybook" + } + }, + "node_modules/@storybook/types/node_modules/file-system-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz", + "integrity": "sha512-l4DMNdsIPsVnKrgEXbJwDJsA5mB8rGwHYERMgqQx/xAUtChPJMre1bXBzDEqqVbWv9AIbFezXMxeEkZDSrXUOQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "fs-extra": "11.1.1", + "ramda": "0.29.0" + } + }, + "node_modules/@storybook/types/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=14.14" + } + }, + "node_modules/@storybook/types/node_modules/telejson": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", + "dev": true, + "dependencies": { + "memoizerific": "^1.11.3" + } + }, + "node_modules/@storybook/ui": { + "version": "6.5.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/addons": "6.5.10", + "@storybook/api": "6.5.10", + "@storybook/channels": "6.5.10", + "@storybook/client-logger": "6.5.10", + "@storybook/components": "6.5.10", + "@storybook/core-events": "6.5.10", + "@storybook/router": "6.5.10", + "@storybook/semver": "^7.3.2", + "@storybook/theming": "6.5.10", + "core-js": "^3.8.2", + "memoizerific": "^1.11.3", + "qs": "^6.10.0", + "regenerator-runtime": "^0.13.7", + "resolve-from": "^5.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/storybook" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "6.5.1", "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "6.5.0", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "6.5.0", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@ua/react-native-airship": { - "version": "15.2.6", - "resolved": "https://registry.npmjs.org/@ua/react-native-airship/-/react-native-airship-15.2.6.tgz", - "integrity": "sha512-dVlBPPYXD/4SEshv/X7mmt3xF8WfnNqiSNzCyqJSLAZ1aJuPpP9Z5WemCYsa2iv6goRZvtJSE4P79QKlfoTwXw==", + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "6.5.1", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 16.0.0" + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "react": "*", - "react-native": "*" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@vercel/ncc": { - "version": "0.27.0", + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "6.5.1", "dev": true, "license": "MIT", - "bin": { - "ncc": "dist/ncc/cli.js" + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "6.5.1", "dev": true, - "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", - "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", - "devOptional": true - }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "6.5.1", "dev": true, "license": "MIT", - "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "6.5.1", "dev": true, - "license": "ISC" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", + "node_modules/@svgr/babel-preset": { + "version": "6.5.1", "dev": true, "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.9.0" + "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", + "@svgr/babel-plugin-remove-jsx-attribute": "*", + "@svgr/babel-plugin-remove-jsx-empty-expression": "*", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^6.5.1", + "@svgr/babel-plugin-svg-dynamic-title": "^6.5.1", + "@svgr/babel-plugin-svg-em-dimensions": "^6.5.1", + "@svgr/babel-plugin-transform-react-native-svg": "^6.5.1", + "@svgr/babel-plugin-transform-svg-component": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "devOptional": true, + "node_modules/@svgr/core": { + "version": "6.5.1", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "camelcase": "^6.2.0", + "cosmiconfig": "^7.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "devOptional": true - }, - "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "devOptional": true - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", - "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", - "devOptional": true, + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "6.5.1", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6" + "@babel/types": "^7.20.0", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@webassemblyjs/helper-wasm-section/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/@webassemblyjs/helper-wasm-section/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "devOptional": true, + "node_modules/@svgr/plugin-jsx": { + "version": "6.5.1", + "dev": true, + "license": "MIT", "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "@babel/core": "^7.19.6", + "@svgr/babel-preset": "^6.5.1", + "@svgr/hast-util-to-babel-ast": "^6.5.1", + "svg-parser": "^2.0.4" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "^6.0.0" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "devOptional": true, + "node_modules/@svgr/plugin-svgo": { + "version": "6.5.1", + "dev": true, + "license": "MIT", "dependencies": { - "@xtuc/long": "4.2.2" + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "svgo": "^2.8.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "devOptional": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", - "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", - "devOptional": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-opt": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6", - "@webassemblyjs/wast-printer": "1.11.6" + "node_modules/@svgr/plugin-svgo/node_modules/commander": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" } }, - "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "node_modules/@svgr/plugin-svgo/node_modules/css-select": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true + "node_modules/@svgr/plugin-svgo/node_modules/picocolors": { + "version": "1.0.0", + "dev": true, + "license": "ISC" }, - "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", - "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", - "devOptional": true, + "node_modules/@svgr/plugin-svgo/node_modules/svgo": { + "version": "2.8.0", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@xtuc/long": "4.2.2" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", - "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", - "devOptional": true, + "node_modules/@svgr/webpack": { + "version": "6.5.1", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@babel/core": "^7.19.6", + "@babel/plugin-transform-react-constant-elements": "^7.18.12", + "@babel/preset-env": "^7.19.4", + "@babel/preset-react": "^7.18.6", + "@babel/preset-typescript": "^7.18.6", + "@svgr/core": "^6.5.1", + "@svgr/plugin-jsx": "^6.5.1", + "@svgr/plugin-svgo": "^6.5.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@webassemblyjs/wasm-gen/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-gen/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", - "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", - "devOptional": true, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "dev": true, + "license": "MIT", "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-buffer": "1.11.6", - "@webassemblyjs/wasm-gen": "1.11.6", - "@webassemblyjs/wasm-parser": "1.11.6" + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@webassemblyjs/wasm-opt/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "node_modules/@tensorflow-models/face-detection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tensorflow-models/face-detection/-/face-detection-1.0.2.tgz", + "integrity": "sha512-anjSxy3MnZdTiVluOEQZeaFWM30IPswFM+SltX6wseXKja/AbrHYqamGNZKUylAs2JAyudq+xqTRPS+nA2ourg==", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "rimraf": "^3.0.2", + "tslib": "2.4.0" + }, + "peerDependencies": { + "@mediapipe/face_detection": "~0.4.0", + "@tensorflow/tfjs-backend-webgl": "^4.4.0", + "@tensorflow/tfjs-converter": "^4.4.0", + "@tensorflow/tfjs-core": "^4.4.0" } }, - "node_modules/@webassemblyjs/wasm-opt/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", - "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", - "devOptional": true, + "node_modules/@tensorflow/tfjs-backend-cpu": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-cpu/-/tfjs-backend-cpu-4.9.0.tgz", + "integrity": "sha512-AHIfI3iD1fyQgQKeoQmtkI3exPWRfOo+W0Ws/bxOdapTXcAYWGg0179t52j8XPDwsl8WopfaTINNgYNG6FnP3Q==", + "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@types/seedrandom": "^2.4.28", + "seedrandom": "^3.0.5" + }, + "engines": { + "yarn": ">= 1.3.2" + }, + "peerDependencies": { + "@tensorflow/tfjs-core": "4.9.0" } }, - "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/ast": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", - "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", - "devOptional": true, + "node_modules/@tensorflow/tfjs-backend-webgl": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-backend-webgl/-/tfjs-backend-webgl-4.9.0.tgz", + "integrity": "sha512-lSEOjR9zi6vb1V9yhrby8jWt6SS+wWBXRa3sDE5GCbpcHMWHv41wZktB2WQyIXDqJQcw1lRZBDoYneibMqr2uQ==", + "peer": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@tensorflow/tfjs-backend-cpu": "4.9.0", + "@types/offscreencanvas": "~2019.3.0", + "@types/seedrandom": "^2.4.28", + "@types/webgl-ext": "0.0.30", + "seedrandom": "^3.0.5" + }, + "engines": { + "yarn": ">= 1.3.2" + }, + "peerDependencies": { + "@tensorflow/tfjs-core": "4.9.0" } }, - "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "devOptional": true - }, - "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "devOptional": true - }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" + "node_modules/@tensorflow/tfjs-converter": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-4.9.0.tgz", + "integrity": "sha512-mRlzdG3jVsxMkFfHFgDNY10HMoh+vtfPPIghtY+Fc4U/ZnBUFvSfZqwEFyXfOJAewn4fY4BX8+6RE4a0kRXqGA==", + "peer": true, + "peerDependencies": { + "@tensorflow/tfjs-core": "4.9.0" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "dev": true, + "node_modules/@tensorflow/tfjs-core": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-4.9.0.tgz", + "integrity": "sha512-1nYs9OA934eSI33eTvyCVJUEji2wnMXyZ3VK7l2iS/TPDFISI3ETyh286mW56LCihoniv8HH2MtOAQwo4Qhrdg==", + "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" + "@types/long": "^4.0.1", + "@types/offscreencanvas": "~2019.7.0", + "@types/seedrandom": "^2.4.28", + "@types/webgl-ext": "0.0.30", + "@webgpu/types": "0.1.30", + "long": "4.0.0", + "node-fetch": "~2.6.1", + "seedrandom": "^3.0.5" + }, + "engines": { + "yarn": ">= 1.3.2" } }, - "node_modules/@webgpu/types": { - "version": "0.1.30", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.30.tgz", - "integrity": "sha512-9AXJSmL3MzY8ZL//JjudA//q+2kBRGhLBFpkdGksWIuxrMy81nFrCzj2Am+mbh8WoU6rXmv7cY5E3rdlyru2Qg==", + "node_modules/@tensorflow/tfjs-core/node_modules/@types/offscreencanvas": { + "version": "2019.7.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.0.tgz", + "integrity": "sha512-PGcyveRIpL1XIqK8eBsmRBt76eFgtzuPiSTyKHZxnGemp2yzGzWpjYKAfK3wIMiU7eH+851yEpiuP8JZerTmWg==", "peer": true }, - "node_modules/@webpack-cli/configtest": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "webpack": "4.x.x || 5.x.x", - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "1.5.0", + "node_modules/@testing-library/jest-native": { + "version": "5.4.1", "dev": true, "license": "MIT", "dependencies": { - "envinfo": "^7.7.3" + "chalk": "^4.1.2", + "jest-diff": "^29.0.1", + "jest-matcher-utils": "^29.0.1", + "pretty-format": "^29.0.3", + "redent": "^3.0.0" }, "peerDependencies": { - "webpack-cli": "4.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "1.7.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "webpack-cli": "4.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } + "react": ">=16.0.0", + "react-native": ">=0.59", + "react-test-renderer": ">=16.0.0" } }, - "node_modules/@welldone-software/why-did-you-render": { - "version": "7.0.1", + "node_modules/@testing-library/jest-native/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "lodash": "^4" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "react": "^16 || ^17 || ^18" - } - }, - "node_modules/@xmldom/xmldom": { - "version": "0.7.5", - "license": "MIT", "engines": { - "node": ">=10.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "devOptional": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "devOptional": true, - "license": "Apache-2.0" - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "license": "BSD-2-Clause" - }, - "node_modules/7zip-bin": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", - "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "node_modules/@testing-library/jest-native/node_modules/chalk": { + "version": "4.1.2", "dev": true, - "optional": true, - "peer": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", "license": "MIT", "dependencies": { - "event-target-shim": "^5.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6.5" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/accepts": { - "version": "1.3.8", + "node_modules/@testing-library/jest-native/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.6" + "node": ">=7.0.0" } }, - "node_modules/acorn": { - "version": "7.4.1", + "node_modules/@testing-library/jest-native/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/jest-native/node_modules/has-flag": { + "version": "4.0.0", "dev": true, "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, - "node_modules/acorn-dynamic-import": { - "version": "2.0.2", + "node_modules/@testing-library/jest-native/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { - "acorn": "^4.0.3" - } - }, - "node_modules/acorn-dynamic-import/node_modules/acorn": { - "version": "4.0.13", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", + "node_modules/@testing-library/react-native": { + "version": "11.5.1", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, - "license": "MIT", + "pretty-format": "^29.4.0" + }, "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" + "jest": ">=28.0.0", + "react": ">=16.8.0", + "react-native": ">=0.59", + "react-test-renderer": ">=16.8.0" + }, + "peerDependenciesMeta": { + "jest": { + "optional": true + } } }, - "node_modules/address": { - "version": "1.2.1", + "node_modules/@tootallnate/once": { + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 10.0.0" + "node": ">= 10" } }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "node_modules/@trysound/sax": { + "version": "0.2.0", "dev": true, + "license": "ISC", "engines": { - "node": ">=6.0" + "node": ">=10.13.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "dev": true, - "license": "MIT", + "node_modules/@turf/along": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/along/-/along-6.5.0.tgz", + "integrity": "sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==", "dependencies": { - "debug": "4" + "@turf/bearing": "^6.5.0", + "@turf/destination": "^6.5.0", + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, - "engines": { - "node": ">= 6.0.0" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "dev": true, - "license": "MIT", + "node_modules/@turf/bbox": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", + "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/airbnb-js-shims": { - "version": "2.2.1", - "dev": true, - "license": "MIT", + "node_modules/@turf/bearing": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.5.0.tgz", + "integrity": "sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==", "dependencies": { - "array-includes": "^3.0.3", - "array.prototype.flat": "^1.2.1", - "array.prototype.flatmap": "^1.2.1", - "es5-shim": "^4.5.13", - "es6-shim": "^0.35.5", - "function.prototype.name": "^1.1.0", - "globalthis": "^1.0.0", - "object.entries": "^1.1.0", - "object.fromentries": "^2.0.0 || ^1.0.0", - "object.getownpropertydescriptors": "^2.0.3", - "object.values": "^1.1.0", - "promise.allsettled": "^1.0.0", - "promise.prototype.finally": "^3.1.0", - "string.prototype.matchall": "^4.0.0 || ^3.0.1", - "string.prototype.padend": "^3.0.0", - "string.prototype.padstart": "^3.0.0", - "symbol.prototype.description": "^1.0.0" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/@turf/destination": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-6.5.0.tgz", + "integrity": "sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://opencollective.com/turf" } }, - "node_modules/ajv-cli": { - "version": "5.0.0", - "dev": true, - "license": "MIT", + "node_modules/@turf/distance": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz", + "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==", "dependencies": { - "ajv": "^8.0.0", - "fast-json-patch": "^2.0.0", - "glob": "^7.1.0", - "js-yaml": "^3.14.0", - "json-schema-migrate": "^2.0.0", - "json5": "^2.1.3", - "minimist": "^1.2.0" - }, - "bin": { - "ajv": "dist/index.js" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": ">=5.0.0" + "node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "dev": true, - "license": "MIT", + "node_modules/@turf/invariant": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz", + "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==", "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" + "@turf/helpers": "^6.5.0" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/ajv-keywords": { - "version": "1.5.1", - "license": "MIT", - "peerDependencies": { - "ajv": ">=4.10.0" + "node_modules/@turf/length": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/length/-/length-6.5.0.tgz", + "integrity": "sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==", + "dependencies": { + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/align-text": { - "version": "0.1.4", - "license": "MIT", + "node_modules/@turf/line-intersect": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz", + "integrity": "sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==", "dependencies": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/line-segment": "^6.5.0", + "@turf/meta": "^6.5.0", + "geojson-rbush": "3.x" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/align-text/node_modules/is-buffer": { - "version": "1.1.6", - "license": "MIT" - }, - "node_modules/align-text/node_modules/kind-of": { - "version": "3.2.2", - "license": "MIT", + "node_modules/@turf/line-segment": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz", + "integrity": "sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==", "dependencies": { - "is-buffer": "^1.1.5" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/meta": "^6.5.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "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-align": { - "version": "3.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "license": "MIT", + "node_modules/@turf/meta": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz", + "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==", "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" + "@turf/helpers": "^6.5.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/turf" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "node_modules/@turf/nearest-point-on-line": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-6.5.0.tgz", + "integrity": "sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==", + "dependencies": { + "@turf/bearing": "^6.5.0", + "@turf/destination": "^6.5.0", + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0", + "@turf/line-intersect": "^6.5.0", + "@turf/meta": "^6.5.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/turf" } }, - "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==", + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { - "colorette": "^1.0.7", - "slice-ansi": "^2.0.0", - "strip-ansi": "^5.0.0" + "@types/estree": "*" } }, - "node_modules/ansi-fragments/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/@types/babel__core": { + "version": "7.1.19", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "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/@types/babel__generator": { + "version": "7.6.4", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" } }, - "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==", + "node_modules/@types/babel__template": { + "version": "7.4.1", + "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - }, - "engines": { - "node": ">=6" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "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==", + "node_modules/@types/babel__traverse": { + "version": "7.18.0", + "license": "MIT", "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" + "@babel/types": "^7.3.0" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", + "node_modules/@types/body-parser": { + "version": "1.19.2", "dev": true, - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "4.1.1", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", + "node_modules/@types/bonjour": { + "version": "3.5.10", + "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + "@types/node": "*" } }, - "node_modules/ansi-to-html": { - "version": "0.6.15", + "node_modules/@types/cacheable-request": { + "version": "6.0.3", "dev": true, "license": "MIT", "dependencies": { - "entities": "^2.0.0" - }, - "bin": { - "ansi-to-html": "bin/ansi-to-html" - }, - "engines": { - "node": ">=8.0.0" + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" } }, - "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==", + "node_modules/@types/concurrently": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@types/concurrently/-/concurrently-7.0.0.tgz", + "integrity": "sha512-pUOv0XBVexkfVOLWwzh8CMK7b+dnXGvq+/sJKfcws6b0vuMqNw8UeZUiaO9mWxfyS0eYGQyxg+J9EpVRxUCunA==", + "deprecated": "This is a stub types definition. concurrently provides its own type definitions, so you do not need this installed.", + "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "concurrently": "*" } }, - "node_modules/app-builder-bin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", - "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", - "dev": true - }, - "node_modules/app-builder-lib": { - "version": "24.6.4", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.4.tgz", - "integrity": "sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg==", + "node_modules/@types/connect": { + "version": "3.4.35", "dev": true, + "license": "MIT", "dependencies": { - "@develar/schema-utils": "~2.6.5", - "@electron/notarize": "2.1.0", - "@electron/osx-sign": "1.0.5", - "@electron/universal": "1.4.1", - "@malept/flatpak-bundler": "^0.4.0", - "@types/fs-extra": "9.0.13", - "7zip-bin": "~5.1.1", - "async-exit-hook": "^2.0.1", - "bluebird-lst": "^1.0.9", - "builder-util": "24.5.0", - "builder-util-runtime": "9.2.1", - "chromium-pickle-js": "^0.2.0", - "debug": "^4.3.4", - "ejs": "^3.1.8", - "electron-publish": "24.5.0", - "form-data": "^4.0.0", - "fs-extra": "^10.1.0", - "hosted-git-info": "^4.1.0", - "is-ci": "^3.0.0", - "isbinaryfile": "^5.0.0", - "js-yaml": "^4.1.0", - "lazy-val": "^1.0.5", - "minimatch": "^5.1.1", - "read-config-file": "6.3.2", - "sanitize-filename": "^1.6.3", - "semver": "^7.3.8", - "tar": "^6.1.12", - "temp-file": "^3.4.0" - }, - "engines": { - "node": ">=14.0.0" + "@types/node": "*" } }, - "node_modules/app-builder-lib/node_modules/@electron/notarize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz", - "integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==", + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "fs-extra": "^9.0.1", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": ">= 10.0.0" + "@types/express-serve-static-core": "*", + "@types/node": "*" } }, - "node_modules/app-builder-lib/node_modules/@electron/notarize/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==", + "node_modules/@types/debug": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", + "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", "dev": true, "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@types/ms": "*" } }, - "node_modules/app-builder-lib/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/@types/doctrine": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.3.tgz", + "integrity": "sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA==", "dev": true }, - "node_modules/app-builder-lib/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, + "node_modules/@types/emscripten": { + "version": "0.0.34", + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "8.4.6", + "devOptional": true, + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/app-builder-lib/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "devOptional": true, + "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/app-builder-lib/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/@types/estree": { + "version": "0.0.51", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz", + "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" + "@types/estree": "*" } }, - "node_modules/app-builder-lib/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==", + "node_modules/@types/express": { + "version": "4.17.13", "dev": true, + "license": "MIT", "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/app-builder-lib/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/@types/express-serve-static-core": { + "version": "4.17.30", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" } }, - "node_modules/app-root-dir": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "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/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "node_modules/@types/find-cache-dir": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz", + "integrity": "sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==", "dev": true }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "node_modules/@types/fs-extra": { + "version": "9.0.13", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", + "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", "dev": true, - "engines": { - "node": ">=14" + "dependencies": { + "@types/node": "*" } }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", + "node_modules/@types/geojson": { + "version": "7946.0.8", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", + "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==" + }, + "node_modules/@types/glob": { + "version": "7.2.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/are-we-there-yet/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==", - "dev": true, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "@types/node": "*" } }, - "node_modules/arg": { - "version": "4.1.3", - "dev": true, + "node_modules/@types/hammerjs": { + "version": "2.0.41", "license": "MIT" }, - "node_modules/argparse": { - "version": "1.0.10", + "node_modules/@types/hast": { + "version": "2.3.4", + "dev": true, "license": "MIT", "dependencies": { - "sprintf-js": "~1.0.2" + "@types/unist": "*" } }, - "node_modules/aria-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", - "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", "dev": true, - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/aria-query": { - "version": "3.0.0", + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", "dev": true, - "license": "Apache-2.0", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "dev": true, + "license": "MIT", "dependencies": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" + "@types/node": "*" } }, - "node_modules/aria-query/node_modules/commander": { - "version": "2.20.3", + "node_modules/@types/is-function": { + "version": "1.0.1", "dev": true, "license": "MIT" }, - "node_modules/arr-diff": { - "version": "4.0.0", - "devOptional": true, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "devOptional": true, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/istanbul-lib-report": "*" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/@types/jest": { + "version": "29.5.2", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.2.tgz", + "integrity": "sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.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==", + "node_modules/@types/jest-when": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@types/jest-when/-/jest-when-3.5.2.tgz", + "integrity": "sha512-1WP+wJDW7h4TYAVLoIebxRIVv8GPk66Qsq2nU7PkwKZ6usurnDQZgk0DfBNKAJ9gVzapCXSV53Vn/3nBHBNzAw==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/jest": "*" } }, - "node_modules/array-find-index": { - "version": "1.0.2", + "node_modules/@types/js-yaml": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz", + "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==", + "dev": true + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", "dev": true, "license": "MIT", - "optional": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "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==", + "node_modules/@types/jsdom/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "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" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/array-union": { - "version": "2.1.0", + "node_modules/@types/jsdom/node_modules/parse5": { + "version": "7.1.2", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "devOptional": true }, - "node_modules/array-unique": { - "version": "0.3.2", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/@types/json5": { + "version": "0.0.29", + "dev": true, + "license": "MIT" }, - "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==", + "node_modules/@types/keyv": { + "version": "3.1.4", "dev": true, + "license": "MIT", "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" + "@types/node": "*" } }, - "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, + "node_modules/@types/lodash": { + "version": "4.14.195", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.195.tgz", + "integrity": "sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg==", + "dev": true + }, + "node_modules/@types/long": { + "version": "4.0.2", + "license": "MIT" + }, + "node_modules/@types/mapbox-gl": { + "version": "2.7.13", + "resolved": "https://registry.npmjs.org/@types/mapbox-gl/-/mapbox-gl-2.7.13.tgz", + "integrity": "sha512-qNffhTdYkeFl8QG9Q1zPPJmcs8PvHgmLa1PcwP1rxvcfMsIgcFr/FnrCttG0ZnH7Kzdd7xfECSRNTWSr4jC3PQ==", "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" + "@types/geojson": "*" } }, - "node_modules/array.prototype.map": { - "version": "1.0.4", + "node_modules/@types/mdast": { + "version": "3.0.10", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/unist": "*" } }, - "node_modules/array.prototype.reduce": { - "version": "1.0.4", + "node_modules/@types/mdx": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.5.tgz", + "integrity": "sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "3.0.1", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "license": "MIT" }, - "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==", + "node_modules/@types/minimatch": { + "version": "3.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mock-fs": { + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/@types/mock-fs/-/mock-fs-4.13.1.tgz", + "integrity": "sha512-m6nFAJ3lBSnqbvDZioawRvpLXSaPyn52Srf7OfzjubYbYX8MTUdIgDxQl0wEapm4m/pNYSd9TXocpQ0TvZFlYA==", "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" + "@types/node": "*" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "node_modules/@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.17.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.11.tgz", + "integrity": "sha512-r3hjHPBu+3LzbGBa8DHnr/KAeTEEOrahkcL+cZc4MaBMTM+mk8LtXR+zw+nqfjuDZZzYTYgTcpHuP+BEQk069g==" + }, + "node_modules/@types/node-fetch": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz", + "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==", + "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/node": "*", + "form-data": "^3.0.0" } }, - "node_modules/arrify": { - "version": "2.0.1", + "node_modules/@types/normalize-package-data": { + "version": "2.4.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "license": "MIT" + }, + "node_modules/@types/npmlog": { + "version": "4.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/offscreencanvas": { + "version": "2019.3.0", + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/parse5": { + "version": "5.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/plist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz", + "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*", + "xmlbuilder": ">=11.0.1" } }, - "node_modules/asap": { - "version": "2.0.6", + "node_modules/@types/pretty-hrtime": { + "version": "1.0.1", + "dev": true, "license": "MIT" }, - "node_modules/ascii-table": { - "version": "0.0.9", + "node_modules/@types/prop-types": { + "version": "15.7.5", "license": "MIT" }, - "node_modules/asn1.js": { - "version": "5.4.1", - "license": "MIT", + "node_modules/@types/pusher-js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/pusher-js/-/pusher-js-5.1.0.tgz", + "integrity": "sha512-VubdW1NvHAojLFtJ+FWmZsIlkSE+EiaLrrfCKcW/t9UDlXWF85rSPVc+5zdpZLVzkwaUaFeyIYSgeNfXc9Dxlg==", + "deprecated": "This is a stub types definition. pusher-js provides its own type definitions, so you do not need this installed.", + "dev": true, "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" + "pusher-js": "*" } }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", + "node_modules/@types/qs": { + "version": "6.9.7", + "dev": true, "license": "MIT" }, - "node_modules/assert": { - "version": "1.5.0", + "node_modules/@types/ramda": { + "version": "0.27.66", "license": "MIT", "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" + "ts-toolbelt": "^6.15.1" } }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "node_modules/@types/range-parser": { + "version": "1.2.4", "dev": true, - "optional": true, - "engines": { - "node": ">=0.8" + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.2.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.12.tgz", + "integrity": "sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" } }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "license": "ISC" + "node_modules/@types/react-collapse": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/react-collapse/-/react-collapse-5.0.1.tgz", + "integrity": "sha512-Iq3OrqvzCIP0DmAawU4T2VKH6XAplbjo/D7Qk14mcfQ92plU+OrA2SF10r2XrcFg1Wvya/5f8w1vS29RVpdoLQ==", + "dev": true, + "dependencies": { + "@types/react": "*" + } }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", + "node_modules/@types/react-dom": { + "version": "18.2.4", "license": "MIT", "dependencies": { - "inherits": "2.0.1" + "@types/react": "*" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", + "node_modules/@types/react-native": { + "version": "0.70.6", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peer": true, + "dependencies": { + "@types/react": "*" } }, - "node_modules/ast-types": { - "version": "0.14.2", + "node_modules/@types/react-pdf": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@types/react-pdf/-/react-pdf-5.7.2.tgz", + "integrity": "sha512-6cUselXlQSNd9pMswJGvHqki3Lq0cnls/3hNwrFizdDeHBAfTFXTScEBObfGPznEmtO2LvmZMeced43BV9Wbog==", "dev": true, - "license": "MIT", "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" + "@types/react": "*", + "pdfjs-dist": "^2.10.377" } }, - "node_modules/ast-types-flow": { - "version": "0.0.7", + "node_modules/@types/react-test-renderer": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.0.0.tgz", + "integrity": "sha512-C7/5FBJ3g3sqUahguGi03O79b8afNeSD6T8/GU50oQrJCU0bVCCGQHaGKUbg2Ce8VQEEqTw8/HiS6lXHHdgkdQ==", "dev": true, - "license": "ISC" + "dependencies": { + "@types/react": "*" + } }, - "node_modules/astral-regex": { - "version": "2.0.0", + "node_modules/@types/responselike": { + "version": "1.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@types/node": "*" } }, - "node_modules/astring": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", - "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "node_modules/@types/retry": { + "version": "0.12.0", "dev": true, - "optional": true, - "peer": true, - "bin": { - "astring": "bin/astring" - } + "license": "MIT" }, - "node_modules/async": { - "version": "3.2.4", + "node_modules/@types/scheduler": { + "version": "0.16.2", "license": "MIT" }, - "node_modules/async-each": { - "version": "1.0.3", + "node_modules/@types/seedrandom": { + "version": "2.4.30", + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", + "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "dev": true, "license": "MIT", - "optional": true + "dependencies": { + "@types/express": "*" + } }, - "node_modules/async-exit-hook": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", - "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "node_modules/@types/serve-static": { + "version": "1.15.0", "dev": true, - "engines": { - "node": ">=0.12.0" + "license": "MIT", + "dependencies": { + "@types/mime": "*", + "@types/node": "*" } }, - "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/@types/setimmediate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/setimmediate/-/setimmediate-1.0.2.tgz", + "integrity": "sha512-JHonWbepiR1pwiYVz2rOK4mWrhlUcrJQaOSaq4VYlfuhLrPlY1EayGjt0tXemCr8eBdVzvLeYejRCb/0Z/XuiQ==", + "dev": true }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "node_modules/@types/sockjs": { + "version": "0.3.33", "dev": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" + "@types/node": "*" } }, - "node_modules/asynckit": { - "version": "0.4.0", + "node_modules/@types/source-list-map": { + "version": "0.1.2", "dev": true, "license": "MIT" }, - "node_modules/at-least-node": { - "version": "1.0.0", - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } + "node_modules/@types/stack-utils": { + "version": "2.0.1", + "license": "MIT" }, - "node_modules/atob": { - "version": "2.1.2", - "devOptional": true, - "license": "(MIT OR Apache-2.0)", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } + "node_modules/@types/tapable": { + "version": "1.0.8", + "dev": true, + "license": "MIT" }, - "node_modules/autoprefixer": { - "version": "9.8.8", + "node_modules/@types/tough-cookie": { + "version": "4.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/uglify-js": { + "version": "3.17.0", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" + "source-map": "^0.6.1" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/awesome-phonenumber": { - "version": "5.4.0", - "license": "MIT", - "workspaces": [ - "webpack", - "cjs-test", - "esm-test" - ], - "engines": { - "node": ">=14" - } + "node_modules/@types/underscore": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.5.tgz", + "integrity": "sha512-b8e//LrIlhoXaaBcMC0J/s2/lIF9y5VJYKqbW4nA+tW/nqqDk1Dacd1ULLT7zgGsKs7PGbSnqCPzqEniZ0RxYg==", + "dev": true }, - "node_modules/axe-core": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", - "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", + "node_modules/@types/unist": { + "version": "2.0.6", "dev": true, - "engines": { - "node": ">=4" - } + "license": "MIT" }, - "node_modules/axobject-query": { - "version": "2.2.0", - "dev": true, - "license": "Apache-2.0" + "node_modules/@types/urijs": { + "version": "1.19.19", + "license": "MIT" }, - "node_modules/babel-code-frame": { - "version": "6.26.0", + "node_modules/@types/verror": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz", + "integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==", "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } + "optional": true }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/@types/webgl-ext": { + "version": "0.0.30", + "license": "MIT" }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/@types/webgl2": { + "version": "0.0.6", + "license": "MIT" }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", + "node_modules/@types/webpack": { + "version": "4.41.32", "dev": true, "license": "MIT", "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", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "@types/node": "*", + "@types/tapable": "^1", + "@types/uglify-js": "*", + "@types/webpack-sources": "*", + "anymatch": "^3.0.0", + "source-map": "^0.6.0" } }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", + "node_modules/@types/webpack-env": { + "version": "1.18.0", "dev": true, "license": "MIT" }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", + "node_modules/@types/webpack-sources": { + "version": "3.2.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*", + "@types/source-list-map": "*", + "source-map": "^0.7.3" } }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", + "node_modules/@types/webpack-sources/node_modules/source-map": { + "version": "0.7.4", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "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": ">= 8" } }, - "node_modules/babel-eslint": { - "version": "10.1.0", + "node_modules/@types/ws": { + "version": "8.5.3", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">= 4.12.1" - } - }, - "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "@types/node": "*" } }, - "node_modules/babel-helper-function-name": { - "version": "6.24.1", - "dev": true, - "license": "MIT", + "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": { - "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" + "@types/yargs-parser": "*" } }, - "node_modules/babel-helper-get-function-arity": { - "version": "6.24.1", + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.0", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "@types/node": "*" } }, - "node_modules/babel-jest": { - "version": "29.4.1", - "license": "MIT", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.4.1.tgz", + "integrity": "sha512-3F5PtBzUW0dYlq77Lcqo13fv+58KDwUib3BddilE8ajPJT+faGgxmI9Sw+I8ZS22BYwoir9ZhNXcLi+S+I2bkw==", + "dev": true, "dependencies": { - "@jest/transform": "^29.4.1", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.4.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.4.1", + "@typescript-eslint/type-utils": "6.4.1", + "@typescript-eslint/utils": "6.4.1", + "@typescript-eslint/visitor-keys": "6.4.1", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.8.0" + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz", + "integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@typescript-eslint/types": "6.4.1", + "@typescript-eslint/visitor-keys": "6.4.1" }, "engines": { - "node": ">=8" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz", + "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==", + "dev": true, "engines": { - "node": ">=10" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz", + "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@typescript-eslint/types": "6.4.1", + "@typescript-eslint/visitor-keys": "6.4.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "node": "^16.0.0 || >=18.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.4.1.tgz", + "integrity": "sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==", "dev": true, "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.4.1", + "@typescript-eslint/types": "6.4.1", + "@typescript-eslint/typescript-estree": "6.4.1", + "semver": "^7.5.4" }, "engines": { - "node": ">= 14.15.0" + "node": "^16.0.0 || >=18.0.0" }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" - } - }, - "node_modules/babel-loader/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "ajv": "^8.8.2" + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/babel-loader/node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz", + "integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==", "dev": true, "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" + "@typescript-eslint/types": "6.4.1", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=14.16" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-loader/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/babel-loader/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "node_modules/@typescript-eslint/experimental-utils": { + "version": "4.33.0", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" + "@types/json-schema": "^7.0.7", + "@typescript-eslint/scope-manager": "4.33.0", + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/typescript-estree": "4.33.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^10.12.0 || >=12.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" } }, - "node_modules/babel-loader/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/@typescript-eslint/parser": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.4.1.tgz", + "integrity": "sha512-610G6KHymg9V7EqOaNBMtD1GgpAmGROsmfHJPXNLCU9bfIuLrkdOygltK784F6Crboyd5tBFayPB7Sf0McrQwg==", "dev": true, "dependencies": { - "yocto-queue": "^1.0.0" + "@typescript-eslint/scope-manager": "6.4.1", + "@typescript-eslint/types": "6.4.1", + "@typescript-eslint/typescript-estree": "6.4.1", + "@typescript-eslint/visitor-keys": "6.4.1", + "debug": "^4.3.4" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/babel-loader/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz", + "integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==", "dev": true, "dependencies": { - "p-limit": "^4.0.0" + "@typescript-eslint/types": "6.4.1", + "@typescript-eslint/visitor-keys": "6.4.1" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-loader/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz", + "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==", "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-loader/node_modules/pkg-dir": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", - "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz", + "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==", "dev": true, "dependencies": { - "find-up": "^6.3.0" + "@typescript-eslint/types": "6.4.1", + "@typescript-eslint/visitor-keys": "6.4.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=14.16" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/babel-loader/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz", + "integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" + "@typescript-eslint/types": "6.4.1", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">= 12.13.0" + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-loader/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=12.20" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/babel-messages": { - "version": "6.23.0", + "node_modules/@typescript-eslint/scope-manager": { + "version": "4.33.0", "dev": true, "license": "MIT", "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-plugin-add-react-displayname": { - "version": "0.0.5", - "dev": true, - "license": "MIT" + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, - "node_modules/babel-plugin-apply-mdx-type-prop": { - "version": "1.6.22", + "node_modules/@typescript-eslint/type-utils": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.4.1.tgz", + "integrity": "sha512-7ON8M8NXh73SGZ5XvIqWHjgX2f+vvaOarNliGhjrJnv1vdjG0LVIz+ToYfPirOoBi56jxAKLfsLm40+RvxVVXA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "7.10.4", - "@mdx-js/util": "1.6.22" + "@typescript-eslint/typescript-estree": "6.4.1", + "@typescript-eslint/utils": "6.4.1", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@babel/core": "^7.11.6" + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/babel-plugin-apply-mdx-type-prop/node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.4.1.tgz", + "integrity": "sha512-p/OavqOQfm4/Hdrr7kvacOSFjwQ2rrDVJRPxt/o0TOWdFnjJptnjnZ+sYDR7fi4OimvIuKp+2LCkc+rt9fIW+A==", "dev": true, - "license": "MIT" + "dependencies": { + "@typescript-eslint/types": "6.4.1", + "@typescript-eslint/visitor-keys": "6.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } }, - "node_modules/babel-plugin-extract-import-names": { - "version": "1.6.22", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.4.1.tgz", + "integrity": "sha512-zAAopbNuYu++ijY1GV2ylCsQsi3B8QvfPHVqhGdDcbx/NK5lkqMnCGU53amAjccSpk+LfeONxwzUhDzArSfZJg==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "7.10.4" + "engines": { + "node": "^16.0.0 || >=18.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-plugin-extract-import-names/node_modules/@babel/helper-plugin-utils": { - "version": "7.10.4", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.4.1.tgz", + "integrity": "sha512-xF6Y7SatVE/OyV93h1xGgfOkHr2iXuo8ip0gbfzaKeGGuKiAnzS+HtVhSPx8Www243bwlW8IF7X0/B62SzFftg==", "dev": true, - "license": "MIT" + "dependencies": { + "@typescript-eslint/types": "6.4.1", + "@typescript-eslint/visitor-keys": "6.4.1", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "license": "BSD-3-Clause", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.4.1.tgz", + "integrity": "sha512-F/6r2RieNeorU0zhqZNv89s9bDZSovv3bZQpUNOmmQK1L80/cV4KEu95YUJWi75u5PhboFoKUJBnZ4FQcoqhDw==", + "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" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.4.1", + "@typescript-eslint/types": "6.4.1", + "@typescript-eslint/typescript-estree": "6.4.1", + "semver": "^7.5.4" }, "engines": { - "node": ">=8" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "29.4.0", - "license": "MIT", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.4.1.tgz", + "integrity": "sha512-y/TyRJsbZPkJIZQXrHfdnxVnxyKegnpEvnRGNam7s3TRR2ykGefEWOhaef00/UUN3IZxizS7BTO3svd3lCOJRQ==", + "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" + "@typescript-eslint/types": "6.4.1", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-plugin-macros": { - "version": "3.1.0", + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "4.33.0", "dev": true, "license": "MIT", + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "4.33.0", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@babel/runtime": "^7.12.5", - "cosmiconfig": "^7.0.0", - "resolve": "^1.19.0" + "@typescript-eslint/types": "4.33.0", + "@typescript-eslint/visitor-keys": "4.33.0", + "debug": "^4.3.1", + "globby": "^11.0.3", + "is-glob": "^4.0.1", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=10", - "npm": ">=6" + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/babel-plugin-module-resolver": { - "version": "5.0.0", + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, - "license": "MIT", "dependencies": { - "find-babel-config": "^2.0.0", - "glob": "^8.0.3", - "pkg-up": "^3.1.0", - "reselect": "^4.1.7", - "resolve": "^1.22.1" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" }, "engines": { - "node": ">= 16" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/babel-plugin-module-resolver/node_modules/brace-expansion": { - "version": "2.0.1", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, - "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-plugin-module-resolver/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/babel-plugin-module-resolver/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-plugin-named-exports-order": { - "version": "0.0.2", + "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "MIT" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "4.33.0", + "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" + "@typescript-eslint/types": "4.33.0", + "eslint-visitor-keys": "^2.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" + "node_modules/@ua/react-native-airship": { + "version": "15.2.6", + "resolved": "https://registry.npmjs.org/@ua/react-native-airship/-/react-native-airship-15.2.6.tgz", + "integrity": "sha512-dVlBPPYXD/4SEshv/X7mmt3xF8WfnNqiSNzCyqJSLAZ1aJuPpP9Z5WemCYsa2iv6goRZvtJSE4P79QKlfoTwXw==", + "engines": { + "node": ">= 16.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.3", - "license": "MIT", + "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": { - "@babel/helper-define-polyfill-provider": "^0.3.2", - "core-js-compat": "^3.21.0" + "@graphql-typed-document-node/core": "^3.1.0", + "wonka": "^4.0.14" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", - "license": "MIT", + "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": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@urql/core": ">=2.3.1", + "wonka": "^4.0.14" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" } }, - "node_modules/babel-plugin-react-docgen": { - "version": "4.2.1", + "node_modules/@vercel/ncc": { + "version": "0.27.0", "dev": true, "license": "MIT", - "dependencies": { - "ast-types": "^0.14.2", - "lodash": "^4.17.15", - "react-docgen": "^5.0.0" + "bin": { + "ncc": "dist/ncc/cli.js" } }, - "node_modules/babel-plugin-react-native-web": { - "version": "0.18.7", + "node_modules/@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, - "license": "MIT" + "dependencies": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } }, - "node_modules/babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "dev": true, - "license": "MIT" + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true }, - "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/@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true }, - "node_modules/babel-plugin-transform-class-properties": { - "version": "6.24.1", + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", + "devOptional": true + }, + "node_modules/@webassemblyjs/helper-code-frame": { + "version": "1.9.0", "dev": true, "license": "MIT", "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" + "@webassemblyjs/wast-printer": "1.9.0" } }, - "node_modules/babel-plugin-transform-flow-enums": { - "version": "0.0.2", + "node_modules/@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "dev": true, + "license": "ISC" + }, + "node_modules/@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "dev": true, "license": "MIT", "dependencies": { - "@babel/plugin-syntax-flow": "^7.12.1" + "@webassemblyjs/ast": "1.9.0" } }, - "node_modules/babel-plugin-transform-remove-console": { - "version": "6.9.4", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-polyfill": { - "version": "6.26.0", - "license": "MIT", + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "devOptional": true, "dependencies": { - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "regenerator-runtime": "^0.10.5" + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" } }, - "node_modules/babel-polyfill/node_modules/core-js": { - "version": "2.6.12", - "hasInstallScript": true, - "license": "MIT" + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "devOptional": true }, - "node_modules/babel-polyfill/node_modules/regenerator-runtime": { - "version": "0.10.5", - "license": "MIT" + "node_modules/@webassemblyjs/helper-numbers/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "devOptional": true }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "license": "MIT", + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "devOptional": 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" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, - "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==", + "node_modules/@webassemblyjs/helper-wasm-section/node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "devOptional": true, "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" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "node_modules/babel-preset-jest": { - "version": "29.4.0", - "license": "MIT", + "node_modules/@webassemblyjs/helper-wasm-section/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "devOptional": true + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "devOptional": true, "dependencies": { - "babel-plugin-jest-hoist": "^29.4.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" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "license": "MIT", + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "devOptional": true, "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "@xtuc/long": "4.2.2" } }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "hasInstallScript": true, - "license": "MIT" + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "devOptional": true }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "license": "MIT" + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "devOptional": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } }, - "node_modules/babel-template": { - "version": "6.26.0", - "dev": true, - "license": "MIT", + "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "devOptional": 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" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "dev": true, - "license": "MIT", + "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "devOptional": true + }, + "node_modules/@webassemblyjs/wasm-edit/node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "devOptional": 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" + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" } }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "devOptional": true, "dependencies": { - "ms": "2.0.0" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/@webassemblyjs/wasm-gen/node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "devOptional": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "dev": true, - "license": "MIT" + "node_modules/@webassemblyjs/wasm-gen/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "devOptional": true }, - "node_modules/babel-types": { - "version": "6.26.0", - "dev": true, - "license": "MIT", + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "devOptional": true, "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", + "node_modules/@webassemblyjs/wasm-opt/node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "devOptional": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "devOptional": true + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "devOptional": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "devOptional": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "devOptional": true + }, + "node_modules/@webassemblyjs/wasm-parser/node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "devOptional": true + }, + "node_modules/@webassemblyjs/wast-parser": { + "version": "1.9.0", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "node_modules/babylon": { - "version": "6.18.0", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, - "license": "MIT", - "bin": { - "babylon": "bin/babylon.js" + "dependencies": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" } }, - "node_modules/bail": { - "version": "1.0.5", + "node_modules/@webgpu/types": { + "version": "0.1.30", + "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.30.tgz", + "integrity": "sha512-9AXJSmL3MzY8ZL//JjudA//q+2kBRGhLBFpkdGksWIuxrMy81nFrCzj2Am+mbh8WoU6rXmv7cY5E3rdlyru2Qg==", + "peer": true + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.2.0", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/base": { - "version": "0.11.2", - "devOptional": true, + "node_modules/@webpack-cli/info": { + "version": "1.5.0", + "dev": true, "license": "MIT", "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" + "envinfo": "^7.7.3" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "webpack-cli": "4.x.x" } }, - "node_modules/base-64": { - "version": "0.1.0" + "node_modules/@webpack-cli/serve": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "devOptional": true, + "node_modules/@welldone-software/why-did-you-render": { + "version": "7.0.1", + "dev": true, "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" + "lodash": "^4" }, + "peerDependencies": { + "react": "^16 || ^17 || ^18" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", + "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==", "engines": { - "node": ">=0.10.0" + "node": ">=10.0.0" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "devOptional": true, + "license": "BSD-3-Clause" }, - "node_modules/batch": { - "version": "0.6.1", - "dev": true, - "license": "MIT" + "node_modules/@xtuc/long": { + "version": "4.2.2", + "devOptional": true, + "license": "Apache-2.0" }, - "node_modules/batch-processor": { - "version": "1.0.0", - "dev": true, - "license": "MIT" + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "license": "BSD-2-Clause" }, - "node_modules/before-after-hook": { - "version": "2.2.2", + "node_modules/7zip-bin": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.1.1.tgz", + "integrity": "sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", "dev": true, - "license": "Apache-2.0" + "license": "BSD-3-Clause" }, - "node_modules/better-opn": { - "version": "2.1.1", + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, + "optional": true, + "peer": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", "license": "MIT", "dependencies": { - "open": "^7.0.3" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">8.0.0" + "node": ">=6.5" } }, - "node_modules/better-opn/node_modules/open": { - "version": "7.4.2", - "dev": true, + "node_modules/accepts": { + "version": "1.3.8", "license": "MIT", "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/big-integer": { - "version": "1.6.51", - "license": "Unlicense", + "node_modules/acorn": { + "version": "7.4.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=0.6" + "node": ">=0.4.0" } }, - "node_modules/big.js": { - "version": "5.2.2", - "devOptional": true, + "node_modules/acorn-dynamic-import": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "acorn": "^4.0.3" + } + }, + "node_modules/acorn-dynamic-import/node_modules/acorn": { + "version": "4.0.13", "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": "*" + "node": ">=0.4.0" } }, - "node_modules/bin-links": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.2.tgz", - "integrity": "sha512-jxJ0PbXR8eQyPlExCvCs3JFnikvs1Yp4gUJt6nmgathdOwvur+q22KWC3h20gvWl4T/14DXKj2IlkJwwZkZPOw==", + "node_modules/acorn-globals": { + "version": "6.0.0", "dev": true, + "license": "MIT", "dependencies": { - "cmd-shim": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "read-cmd-shim": "^4.0.0", - "write-file-atomic": "^5.0.0" - }, + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=0.4.0" } }, - "node_modules/bin-links/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/address": { + "version": "1.2.1", "dev": true, + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 10.0.0" } }, - "node_modules/bin-links/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "node_modules/adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "debug": "4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 6.0.0" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "devOptional": true, + "node_modules/aggregate-error": { + "version": "3.1.0", "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/bindings": { - "version": "1.5.0", + "node_modules/airbnb-js-shims": { + "version": "2.2.1", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "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" + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "array.prototype.flatmap": "^1.2.1", + "es5-shim": "^4.5.13", + "es6-shim": "^0.35.5", + "function.prototype.name": "^1.1.0", + "globalthis": "^1.0.0", + "object.entries": "^1.1.0", + "object.fromentries": "^2.0.0 || ^1.0.0", + "object.getownpropertydescriptors": "^2.0.3", + "object.values": "^1.1.0", + "promise.allsettled": "^1.0.0", + "promise.prototype.finally": "^3.1.0", + "string.prototype.matchall": "^4.0.0 || ^3.0.1", + "string.prototype.padend": "^3.0.0", + "string.prototype.padstart": "^3.0.0", + "symbol.prototype.description": "^1.0.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==", + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "dev": true, - "license": "MIT" - }, - "node_modules/bluebird-lst": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", - "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/blueimp-load-image": { - "version": "2.29.0", - "license": "MIT" - }, - "node_modules/bn.js": { - "version": "5.2.1", - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "1.20.0", + "node_modules/ajv-cli": { + "version": "5.0.0", "dev": true, "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "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.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "ajv": "^8.0.0", + "fast-json-patch": "^2.0.0", + "glob": "^7.1.0", + "js-yaml": "^3.14.0", + "json-schema-migrate": "^2.0.0", + "json5": "^2.1.3", + "minimist": "^1.2.0" }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "bin": { + "ajv": "dist/index.js" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", + "node_modules/ajv-errors": { + "version": "1.0.1", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8" + "peerDependencies": { + "ajv": ">=5.0.0" } }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", + "node_modules/ajv-formats": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, + "node_modules/ajv-keywords": { + "version": "1.5.1", + "license": "MIT", + "peerDependencies": { + "ajv": ">=4.10.0" + } + }, + "node_modules/align-text": { + "version": "0.1.4", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "dev": true, + "node_modules/align-text/node_modules/is-buffer": { + "version": "1.1.6", "license": "MIT" }, - "node_modules/bonjour-service": { - "version": "1.0.13", - "dev": true, + "node_modules/align-text/node_modules/kind-of": { + "version": "3.2.2", "license": "MIT", "dependencies": { - "array-flatten": "^2.1.2", - "dns-equal": "^1.0.0", - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/bonjour-service/node_modules/array-flatten": { - "version": "2.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "license": "ISC" + "node_modules/anser": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==" }, - "node_modules/boolean": { - "version": "3.2.0", + "node_modules/ansi-align": { + "version": "3.0.1", "dev": true, - "license": "MIT" + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } }, - "node_modules/bottleneck": { - "version": "2.19.5", + "node_modules/ansi-colors": { + "version": "4.1.3", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/boxen": { - "version": "5.1.2", - "dev": true, + "node_modules/ansi-escapes": { + "version": "4.3.2", "license": "MIT", "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", + "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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "colorette": "^1.0.7", + "slice-ansi": "^2.0.0", + "strip-ansi": "^5.0.0" + } + }, + "node_modules/ansi-fragments/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": ">=10" + "node": ">=4" + } + }, + "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" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=6" } }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "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": { - "color-name": "~1.1.4" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6" } }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", + "node_modules/ansi-html-community": { + "version": "0.0.8", "dev": true, - "license": "MIT" + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" + } }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, + "node_modules/ansi-regex": { + "version": "4.1.1", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, + "node_modules/ansi-styles": { + "version": "3.2.1", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/boxen/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==", + "node_modules/ansi-to-html": { + "version": "0.6.15", "dev": true, - "engines": { - "node": ">=10" + "license": "MIT", + "dependencies": { + "entities": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "ansi-to-html": "bin/ansi-to-html" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/bplist-creator": { - "version": "0.1.0", - "license": "MIT", + "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": { - "stream-buffers": "2.2.x" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/bplist-parser": { - "version": "0.1.1", + "node_modules/app-builder-bin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-4.0.0.tgz", + "integrity": "sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==", + "dev": true + }, + "node_modules/app-builder-lib": { + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.4.tgz", + "integrity": "sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg==", "dev": true, - "license": "MIT", - "optional": true, "dependencies": { - "big-integer": "^1.6.7" + "@develar/schema-utils": "~2.6.5", + "@electron/notarize": "2.1.0", + "@electron/osx-sign": "1.0.5", + "@electron/universal": "1.4.1", + "@malept/flatpak-bundler": "^0.4.0", + "@types/fs-extra": "9.0.13", + "7zip-bin": "~5.1.1", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.9", + "builder-util": "24.5.0", + "builder-util-runtime": "9.2.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^4.3.4", + "ejs": "^3.1.8", + "electron-publish": "24.5.0", + "form-data": "^4.0.0", + "fs-extra": "^10.1.0", + "hosted-git-info": "^4.1.0", + "is-ci": "^3.0.0", + "isbinaryfile": "^5.0.0", + "js-yaml": "^4.1.0", + "lazy-val": "^1.0.5", + "minimatch": "^5.1.1", + "read-config-file": "6.3.2", + "sanitize-filename": "^1.6.3", + "semver": "^7.3.8", + "tar": "^6.1.12", + "temp-file": "^3.4.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", + "node_modules/app-builder-lib/node_modules/@electron/notarize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz", + "integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==", + "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "license": "MIT", + "node_modules/app-builder-lib/node_modules/@electron/notarize/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==", + "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/brorand": { - "version": "1.1.0", - "license": "MIT" - }, - "node_modules/browser-assert": { - "version": "1.2.1", + "node_modules/app-builder-lib/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/browser-process-hrtime": { - "version": "1.0.0", + "node_modules/app-builder-lib/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "license": "MIT", "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "balanced-match": "^1.0.0" } }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "license": "MIT", + "node_modules/app-builder-lib/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/browserify-des": { - "version": "1.0.2", - "license": "MIT", + "node_modules/app-builder-lib/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/browserify-rsa": { + "node_modules/app-builder-lib/node_modules/js-yaml": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "license": "ISC", + "node_modules/app-builder-lib/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/browserify-sign/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==", + "node_modules/app-root-dir": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "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/aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/are-we-there-yet/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==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -22342,1670 +22474,1629 @@ "node": ">= 6" } }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "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/arg": { + "version": "4.1.3", + "dev": true, "license": "MIT" }, - "node_modules/browserify-zlib": { - "version": "0.2.0", + "node_modules/argparse": { + "version": "1.0.10", "license": "MIT", "dependencies": { - "pako": "~1.0.5" + "sprintf-js": "~1.0.2" } }, - "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/aria-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "dev": true, "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" - }, - "bin": { - "browserslist": "cli.js" + "tslib": "^2.0.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">=10" } }, - "node_modules/bser": { - "version": "2.1.1", + "node_modules/aria-query": { + "version": "3.0.0", + "dev": true, "license": "Apache-2.0", "dependencies": { - "node-int64": "^0.4.0" + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "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/aria-query/node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "devOptional": true, "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "dev": true, + "node_modules/arr-flatten": { + "version": "1.1.0", + "devOptional": true, "license": "MIT", "engines": { - "node": "*" + "node": ">=0.10.0" } }, - "node_modules/buffer-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", - "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", - "dev": true, + "node_modules/arr-union": { + "version": "3.1.0", + "license": "MIT", "engines": { - "node": ">=0.4" + "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==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "license": "MIT" + "node_modules/array-find-index": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/buffer-xor": { - "version": "1.0.3", + "node_modules/array-flatten": { + "version": "1.1.1", + "dev": true, "license": "MIT" }, - "node_modules/builder-util": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.5.0.tgz", - "integrity": "sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ==", + "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": { - "@types/debug": "^4.1.6", - "7zip-bin": "~5.1.1", - "app-builder-bin": "4.0.0", - "bluebird-lst": "^1.0.9", - "builder-util-runtime": "9.2.1", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "debug": "^4.3.4", - "fs-extra": "^10.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-ci": "^3.0.0", - "js-yaml": "^4.1.0", - "source-map-support": "^0.5.19", - "stat-mode": "^1.0.0", - "temp-file": "^3.4.0" + "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/builder-util-runtime": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz", - "integrity": "sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA==", - "dev": true, - "dependencies": { - "debug": "^4.3.4", - "sax": "^1.2.4" - }, + "node_modules/array-union": { + "version": "2.1.0", + "license": "MIT", "engines": { - "node": ">=12.0.0" + "node": ">=8" } }, - "node_modules/builder-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==", + "node_modules/array-uniq": { + "version": "1.0.3", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/builder-util/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/array-unique": { + "version": "0.3.2", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/builder-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==", + "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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/builder-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==", + "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": { - "color-name": "~1.1.4" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/builder-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/builder-util/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/array.prototype.map": { + "version": "1.0.4", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/builder-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==", + "node_modules/array.prototype.reduce": { + "version": "1.0.4", "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/builder-util/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==", + "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": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "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/builder-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, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", "dependencies": { - "has-flag": "^4.0.0" + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "node_modules/arrify": { + "version": "2.0.1", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", + "node_modules/asap": { + "version": "2.0.6", "license": "MIT" }, - "node_modules/bytes": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "node_modules/ascii-table": { + "version": "0.0.9", + "license": "MIT" }, - "node_modules/bytewise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", - "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==", + "node_modules/asn1.js": { + "version": "5.4.1", + "license": "MIT", "dependencies": { - "bytewise-core": "^1.2.2", - "typewise": "^1.0.3" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/bytewise-core": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", - "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==", + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/assert": { + "version": "1.5.0", + "license": "MIT", "dependencies": { - "typewise-core": "^1.2" + "object-assign": "^4.1.1", + "util": "0.10.3" } }, - "node_modules/c8": { - "version": "7.12.0", + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true, - "license": "ISC", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" - }, - "bin": { - "c8": "bin/c8.js" - }, + "optional": true, "engines": { - "node": ">=10.12.0" + "node": ">=0.8" } }, - "node_modules/c8/node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "license": "ISC" + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "inherits": "2.0.1" } }, - "node_modules/c8/node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", + "node_modules/assign-symbols": { + "version": "1.0.0", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/c8/node_modules/yargs": { - "version": "16.2.0", + "node_modules/ast-types": { + "version": "0.14.2", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "tslib": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/cacache": { - "version": "15.3.0", + "node_modules/ast-types-flow": { + "version": "0.0.7", "dev": true, - "license": "ISC", - "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" - } + "license": "ISC" }, - "node_modules/cache-base": { - "version": "1.0.1", - "devOptional": true, + "node_modules/astral-regex": { + "version": "2.0.0", + "dev": true, "license": "MIT", - "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": ">=8" } }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", + "node_modules/astring": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", + "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", "dev": true, + "optional": true, + "peer": true, + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/async": { + "version": "3.2.4", + "license": "MIT" + }, + "node_modules/async-each": { + "version": "1.0.3", "license": "MIT", + "optional": true + }, + "node_modules/async-exit-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz", + "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", + "dev": true, "engines": { - "node": ">=10.6.0" + "node": ">=0.12.0" } }, - "node_modules/cacheable-request": { - "version": "7.0.2", + "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/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", "dev": true, - "license": "MIT", "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" + "has-symbols": "^1.0.3" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "devOptional": true, + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" }, "engines": { - "node": ">=8" + "node": ">= 4.5.0" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", + "node_modules/autoprefixer": { + "version": "9.8.8", "dev": true, "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" }, - "engines": { - "node": ">=8" + "bin": { + "autoprefixer": "bin/autoprefixer" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" } }, - "node_modules/call-bind": { - "version": "1.0.2", + "node_modules/available-typed-arrays": { + "version": "1.0.5", "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-me-maybe": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/caller-callsite": { - "version": "2.0.0", + "node_modules/awesome-phonenumber": { + "version": "5.4.0", "license": "MIT", - "dependencies": { - "callsites": "^2.0.0" - }, + "workspaces": [ + "webpack", + "cjs-test", + "esm-test" + ], "engines": { - "node": ">=4" + "node": ">=14" } }, - "node_modules/caller-callsite/node_modules/callsites": { - "version": "2.0.0", - "license": "MIT", + "node_modules/axe-core": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", + "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", + "dev": true, "engines": { "node": ">=4" } }, - "node_modules/caller-path": { - "version": "2.0.0", + "node_modules/axobject-query": { + "version": "2.2.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/babel-code-frame": { + "version": "6.26.0", + "dev": true, "license": "MIT", "dependencies": { - "caller-callsite": "^2.0.0" - }, - "engines": { - "node": ">=4" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, - "node_modules/callsites": { - "version": "3.1.0", + "node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/camel-case": { - "version": "4.1.2", + "node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", "dev": true, "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/camelcase": { - "version": "6.3.0", + "node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "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" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/camelcase-css": { - "version": "2.0.1", + "node_modules/babel-code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, "license": "MIT", "engines": { - "node": ">= 6" + "node": ">=0.8.0" } }, - "node_modules/camelcase-keys": { - "version": "2.1.0", + "node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" + "ansi-regex": "^2.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "2.1.1", + "node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, - "node_modules/camelize": { - "version": "1.0.1", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "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/caniuse-lite": { - "version": "1.0.30001505", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001505.tgz", - "integrity": "sha512-jaAOR5zVtxHfL0NjZyflVTtXm3D3J9P15zSJ7HmQF8dSKGA6tqzQq+0ZI3xkjyQj46I4/M0K2GbMpcAFOcbr3A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/canvas": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", - "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", + "node_modules/babel-eslint": { + "version": "10.1.0", "dev": true, - "hasInstallScript": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.17.0", - "simple-get": "^3.0.3" + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" }, "engines": { "node": ">=6" + }, + "peerDependencies": { + "eslint": ">= 4.12.1" } }, - "node_modules/canvas-size": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/canvas-size/-/canvas-size-1.2.6.tgz", - "integrity": "sha512-x2iVHOrZ5x9V0Hwx6kBz+Yxf/VCAII+jrD6WLjJbytJLozHq/oDJjEva432Os0eHxWMFR0vYlLJwTr6QxyxQqw==" - }, - "node_modules/case-sensitive-paths-webpack-plugin": { - "version": "2.4.0", + "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { + "version": "1.3.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { "node": ">=4" } }, - "node_modules/ccount": { - "version": "1.1.0", + "node_modules/babel-helper-function-name": { + "version": "6.24.1", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "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/center-align": { - "version": "0.1.3", + "node_modules/babel-helper-get-function-arity": { + "version": "6.24.1", + "dev": true, "license": "MIT", "dependencies": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - }, - "engines": { - "node": ">=0.10.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "node_modules/chalk": { - "version": "2.4.2", + "node_modules/babel-jest": { + "version": "29.4.1", "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@jest/transform": "^29.4.1", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.4.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/chalk/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/char-regex": { - "version": "1.0.2", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", + "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/character-entities": { - "version": "1.2.4", - "dev": true, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/character-entities-html4": { + "node_modules/babel-jest/node_modules/color-name": { "version": "1.1.4", + "license": "MIT" + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=8" } }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" } }, - "node_modules/chardet": { - "version": "0.7.0", + "node_modules/babel-loader/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, - "license": "MIT" + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } }, - "node_modules/chokidar": { - "version": "3.5.3", - "devOptional": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" }, "engines": { - "node": ">= 8.10.0" + "node": ">=14.16" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chownr": { - "version": "2.0.0", + "node_modules/babel-loader/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, - "license": "ISC", + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "devOptional": true, - "license": "MIT", + "node_modules/babel-loader/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, "engines": { - "node": ">=6.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chromium-pickle-js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", - "dev": true + "node_modules/babel-loader/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "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/cipher-base": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "license": "MIT" - }, - "node_modules/class-utils": { - "version": "0.3.6", - "devOptional": true, - "license": "MIT", + "node_modules/babel-loader/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "p-limit": "^4.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "devOptional": true, - "license": "MIT", - "dependencies": { - "is-descriptor": "^0.1.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "devOptional": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" - }, + "node_modules/babel-loader/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "devOptional": true, - "license": "MIT", + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "find-up": "^6.3.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-buffer": { - "version": "1.1.6", - "devOptional": true, - "license": "MIT" - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "devOptional": true, - "license": "MIT", - "dependencies": { - "kind-of": "^3.0.2" + "node": ">=14.16" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "devOptional": true, - "license": "MIT", + "node_modules/babel-loader/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "devOptional": true, - "license": "MIT", - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "node": ">= 12.13.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/class-utils/node_modules/kind-of": { - "version": "5.1.0", - "devOptional": true, - "license": "MIT", + "node_modules/babel-loader/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/classnames": { - "version": "2.3.1", - "license": "MIT" - }, - "node_modules/clean-css": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", - "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", + "node_modules/babel-messages": { + "version": "6.23.0", "dev": true, + "license": "MIT", "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" + "babel-runtime": "^6.22.0" } }, - "node_modules/clean-stack": { - "version": "2.2.0", + "node_modules/babel-plugin-add-react-displayname": { + "version": "0.0.5", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/clean-webpack-plugin": { - "version": "3.0.0", + "node_modules/babel-plugin-apply-mdx-type-prop": { + "version": "1.6.22", "dev": true, "license": "MIT", "dependencies": { - "@types/webpack": "^4.4.31", - "del": "^4.1.1" + "@babel/helper-plugin-utils": "7.10.4", + "@mdx-js/util": "1.6.22" }, - "engines": { - "node": ">=8.9.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" }, "peerDependencies": { - "webpack": "*" + "@babel/core": "^7.11.6" } }, - "node_modules/cli-boxes": { - "version": "2.2.1", + "node_modules/babel-plugin-apply-mdx-type-prop/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/cli-cursor": { - "version": "3.1.0", + "node_modules/babel-plugin-extract-import-names": { + "version": "1.6.22", + "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", - "engines": { - "node": ">=6" + "@babel/helper-plugin-utils": "7.10.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/cli-table3": { - "version": "0.6.3", + "node_modules/babel-plugin-extract-import-names/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "license": "BSD-3-Clause", "dependencies": { - "string-width": "^4.2.0" + "@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": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "node": ">=8" } }, - "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, - "optional": true, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.4.0", + "license": "MIT", "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/cli-width": { - "version": "3.0.0", + "node_modules/babel-plugin-macros": { + "version": "3.1.0", "dev": true, - "license": "ISC", - "engines": { - "node": ">= 10" - } - }, - "node_modules/clipboard": { - "version": "2.0.4", "license": "MIT", "dependencies": { - "good-listener": "^1.2.2", - "select": "^1.1.2", - "tiny-emitter": "^2.0.0" + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" } }, - "node_modules/cliui": { + "node_modules/babel-plugin-module-resolver": { "version": "5.0.0", - "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "find-babel-config": "^2.0.0", + "glob": "^8.0.3", + "pkg-up": "^3.1.0", + "reselect": "^4.1.7", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">= 16" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, + "node_modules/babel-plugin-module-resolver/node_modules/brace-expansion": { + "version": "2.0.1", "license": "MIT", - "engines": { - "node": ">=4" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "dev": true, - "license": "MIT", + "node_modules/babel-plugin-module-resolver/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "dev": true, - "license": "MIT", + "node_modules/babel-plugin-module-resolver/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dependencies": { - "ansi-regex": "^4.1.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "5.1.0", + "node_modules/babel-plugin-named-exports-order": { + "version": "0.0.2", "dev": true, + "license": "MIT" + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "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/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/clone-deep": { - "version": "4.0.1", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.3", "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "@babel/helper-define-polyfill-provider": "^0.3.3" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/clone-response": { - "version": "1.0.3", + "node_modules/babel-plugin-react-docgen": { + "version": "4.2.1", "dev": true, "license": "MIT", "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ast-types": "^0.14.2", + "lodash": "^4.17.15", + "react-docgen": "^5.0.0" } }, - "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" - } + "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/cmd-shim": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", - "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", + "node_modules/babel-plugin-syntax-class-properties": { + "version": "6.13.0", "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT" }, - "node_modules/co": { - "version": "4.6.0", - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } + "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/code-point-at": { - "version": "1.1.0", + "node_modules/babel-plugin-transform-class-properties": { + "version": "6.24.1", + "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "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/collapse-white-space": { - "version": "1.0.6", - "dev": true, + "node_modules/babel-plugin-transform-flow-enums": { + "version": "0.0.2", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "@babel/plugin-syntax-flow": "^7.12.1" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", + "node_modules/babel-plugin-transform-remove-console": { + "version": "6.9.4", + "dev": true, "license": "MIT" }, - "node_modules/collection-visit": { - "version": "1.0.0", - "devOptional": true, + "node_modules/babel-polyfill": { + "version": "6.26.0", "license": "MIT", "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" } }, - "node_modules/color": { - "version": "4.2.3", + "node_modules/babel-polyfill/node_modules/core-js": { + "version": "2.6.12", + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/babel-polyfill/node_modules/regenerator-runtime": { + "version": "0.10.5", + "license": "MIT" + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" + "@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" }, - "engines": { - "node": ">=12.5.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", + "node_modules/babel-preset-expo": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.5.2.tgz", + "integrity": "sha512-hU1G1TDiikuXV6UDZjPnX+WdbjbtidDiYhftMEVrZQSst45pDPVBWbM41TUKrpJMwv4FypsLzK+378gnMPRVWQ==", "dependencies": { - "color-name": "1.1.3" + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-object-rest-spread": "^7.12.13", + "@babel/plugin-transform-react-jsx": "^7.12.17", + "@babel/preset-env": "^7.20.0", + "babel-plugin-module-resolver": "^5.0.0", + "babel-plugin-react-native-web": "~0.18.10", + "metro-react-native-babel-preset": "0.76.8" } }, - "node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "license": "MIT", + "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": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color-support": { - "version": "1.1.3", - "dev": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" + "@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/color/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/babel-preset-jest": { + "version": "29.4.0", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "babel-plugin-jest-hoist": "^29.4.0", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.4", + "node_modules/babel-runtime": { + "version": "6.26.0", + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-runtime/node_modules/core-js": { + "version": "2.6.12", + "hasInstallScript": true, "license": "MIT" }, - "node_modules/colorette": { - "version": "1.4.0", + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", "license": "MIT" }, - "node_modules/combined-stream": { - "version": "1.0.8", + "node_modules/babel-template": { + "version": "6.26.0", "dev": true, "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "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/comma-separated-tokens": { - "version": "1.0.8", + "node_modules/babel-traverse": { + "version": "6.26.0", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "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/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": "6.2.1", + "node_modules/babel-traverse/node_modules/debug": { + "version": "2.6.9", "dev": true, "license": "MIT", - "engines": { - "node": ">= 6" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/comment-parser": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", - "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", + "node_modules/babel-traverse/node_modules/globals": { + "version": "9.18.0", "dev": true, + "license": "MIT", "engines": { - "node": ">= 12.0.0" + "node": ">=0.10.0" } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", + "node_modules/babel-traverse/node_modules/ms": { + "version": "2.0.0", + "dev": true, "license": "MIT" }, - "node_modules/compare-version": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", - "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", + "node_modules/babel-types": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "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", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/complex.js": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", - "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", + "node_modules/babylon": { + "version": "6.18.0", "dev": true, - "engines": { - "node": "*" - }, + "license": "MIT", + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/bail": { + "version": "1.0.5", + "dev": true, + "license": "MIT", "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "devOptional": true, + "node_modules/balanced-match": { + "version": "1.0.2", "license": "MIT" }, - "node_modules/compressible": { - "version": "2.0.18", + "node_modules/base": { + "version": "0.11.2", + "devOptional": true, "license": "MIT", "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "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.6" + "node": ">=0.10.0" } }, - "node_modules/compression": { - "version": "1.7.4", + "node_modules/base-64": { + "version": "0.1.0" + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "devOptional": true, "license": "MIT", "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" + "is-descriptor": "^1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.10.0" } }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } + "node_modules/base64-js": { + "version": "1.5.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", + "node_modules/batch": { + "version": "0.6.1", + "dev": true, "license": "MIT" }, - "node_modules/concat-map": { - "version": "0.0.1", + "node_modules/batch-processor": { + "version": "1.0.0", + "dev": true, "license": "MIT" }, - "node_modules/concat-stream": { - "version": "1.6.2", + "node_modules/before-after-hook": { + "version": "2.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/better-opn": { + "version": "2.1.1", "dev": true, - "engines": [ - "node >= 0.8" - ], "license": "MIT", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "open": "^7.0.3" + }, + "engines": { + "node": ">8.0.0" } }, - "node_modules/concurrently": { - "version": "5.3.0", + "node_modules/better-opn/node_modules/open": { + "version": "7.4.2", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^2.4.2", - "date-fns": "^2.0.1", - "lodash": "^4.17.15", - "read-pkg": "^4.0.1", - "rxjs": "^6.5.2", - "spawn-command": "^0.0.2-1", - "supports-color": "^6.1.0", - "tree-kill": "^1.2.2", - "yargs": "^13.3.0" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, - "bin": { - "concurrently": "bin/concurrently.js" + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/big-integer": { + "version": "1.6.51", + "license": "Unlicense", "engines": { - "node": ">=6.0.0" + "node": ">=0.6" } }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "6.1.0", - "dev": true, + "node_modules/big.js": { + "version": "5.2.2", + "devOptional": true, "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/config-file-ts": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.4.tgz", - "integrity": "sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ==", + "node_modules/bin-links": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.2.tgz", + "integrity": "sha512-jxJ0PbXR8eQyPlExCvCs3JFnikvs1Yp4gUJt6nmgathdOwvur+q22KWC3h20gvWl4T/14DXKj2IlkJwwZkZPOw==", "dev": true, "dependencies": { - "glob": "^7.1.6", - "typescript": "^4.0.2" + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/config-file-ts/node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "node_modules/bin-links/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, "engines": { - "node": ">=4.2.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/confusing-browser-globals": { - "version": "1.0.11", + "node_modules/bin-links/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, - "license": "MIT" - }, - "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" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">= 0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "dev": true, + "node_modules/binary-extensions": { + "version": "2.2.0", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=0.8" + "node": ">=8" } }, - "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==", + "node_modules/bindings": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "ms": "2.0.0" + "file-uri-to-path": "1.0.0" } }, - "node_modules/connect/node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "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" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.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/connect/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==", + "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": { - "ee-first": "1.1.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/connect/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": ">= 6" } }, - "node_modules/console-browserify": { - "version": "1.2.0" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", + "node_modules/bluebird": { + "version": "3.7.2", "dev": true, - "license": "ISC" - }, - "node_modules/constants-browserify": { - "version": "1.0.0", "license": "MIT" }, - "node_modules/content-disposition": { - "version": "0.5.4", + "node_modules/bluebird-lst": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz", + "integrity": "sha512-7B1Rtx82hjnSD4PGLAjVWeYH3tHAcVUmChh85a3lltKQm6FresXh9ErQo6oAv6CqxttczC3/kEg8SY5NluPuUw==", "dev": true, - "license": "MIT", "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" + "bluebird": "^3.5.5" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { + "node_modules/blueimp-load-image": { + "version": "2.29.0", + "license": "MIT" + }, + "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/bn.js": { "version": "5.2.1", - "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" - } - ], "license": "MIT" }, - "node_modules/content-type": { - "version": "1.0.4", + "node_modules/body-parser": { + "version": "1.20.0", "dev": true, "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "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.10.3", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "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/cookie": { - "version": "0.5.0", + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "dev": true, - "license": "ISC", - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-concurrently/node_modules/mkdirp": { - "version": "0.5.6", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "ms": "2.0.0" } }, - "node_modules/copy-concurrently/node_modules/rimraf": { - "version": "2.7.1", + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "safer-buffer": ">= 2.1.2 < 3" }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "devOptional": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/copy-webpack-plugin": { - "version": "6.4.1", + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.0.13", "dev": true, "license": "MIT", "dependencies": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, - "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { - "version": "3.3.2", + "node_modules/bonjour-service/node_modules/array-flatten": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/boolbase": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/boolean": { + "version": "3.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/bottleneck": { + "version": "2.19.5", + "dev": true, + "license": "MIT" + }, + "node_modules/boxen": { + "version": "5.1.2", "dev": true, "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/copy-webpack-plugin/node_modules/find-up": { - "version": "4.1.0", + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" - } - }, - "node_modules/copy-webpack-plugin/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/copy-webpack-plugin/node_modules/make-dir": { - "version": "3.1.0", + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/copy-webpack-plugin/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/copy-webpack-plugin/node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/copy-webpack-plugin/node_modules/path-exists": { + "node_modules/boxen/node_modules/has-flag": { "version": "4.0.0", "dev": true, "license": "MIT", @@ -24013,5916 +24104,5652 @@ "node": ">=8" } }, - "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { - "version": "4.2.0", + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/copy-webpack-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/boxen/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, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/core-js": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.1.tgz", - "integrity": "sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.31.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz", - "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==", - "dependencies": { - "browserslist": "^4.21.5" + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/core-js-pure": { - "version": "3.24.1", - "dev": true, - "hasInstallScript": true, + "node_modules/bplist-creator": { + "version": "0.1.0", "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" + "stream-buffers": "2.2.x" } }, - "node_modules/cosmiconfig/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/bplist-parser": { + "version": "0.1.1", "dev": true, - "engines": { - "node": ">= 6" + "license": "MIT", + "optional": true, + "dependencies": { + "big-integer": "^1.6.7" } }, - "node_modules/cp-file": { - "version": "7.0.0", - "dev": true, + "node_modules/brace-expansion": { + "version": "1.1.11", "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "nested-error-stacks": "^2.0.0", - "p-event": "^4.1.0" - }, - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/cp-file/node_modules/make-dir": { - "version": "3.1.0", - "dev": true, + "node_modules/braces": { + "version": "3.0.2", "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "fill-range": "^7.0.1" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cp-file/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + "node_modules/brorand": { + "version": "1.1.0", + "license": "MIT" }, - "node_modules/cpy": { - "version": "8.1.2", + "node_modules/browser-assert": { + "version": "1.2.1", + "dev": true + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", "license": "MIT", "dependencies": { - "arrify": "^2.0.1", - "cp-file": "^7.0.0", - "globby": "^9.2.0", - "has-glob": "^1.0.0", - "junk": "^3.1.0", - "nested-error-stacks": "^2.1.0", - "p-all": "^2.1.0", - "p-filter": "^2.1.0", - "p-map": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/cpy/node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "dev": true, + "node_modules/browserify-cipher": { + "version": "1.0.1", "license": "MIT", - "engines": { - "node": ">= 6" + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" } }, - "node_modules/cpy/node_modules/array-union": { + "node_modules/browserify-des": { "version": "1.0.2", - "dev": true, "license": "MIT", "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/cpy/node_modules/braces": { - "version": "2.3.2", - "dev": true, + "node_modules/browserify-rsa": { + "version": "4.1.0", "license": "MIT", "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" + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" } }, - "node_modules/cpy/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, - "license": "MIT", + "node_modules/browserify-sign": { + "version": "4.2.1", + "license": "ISC", "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" } }, - "node_modules/cpy/node_modules/dir-glob": { - "version": "2.2.2", - "dev": true, - "license": "MIT", + "node_modules/browserify-sign/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": { - "path-type": "^3.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/cpy/node_modules/fast-glob": { - "version": "2.2.7", - "dev": true, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", "license": "MIT", "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" + "pako": "~1.0.5" } }, - "node_modules/cpy/node_modules/fill-range": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/browserslist": { + "version": "4.21.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", + "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", + "node-releases": "^2.0.12", + "update-browserslist-db": "^1.0.11" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/cpy/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "dev": true, + "node_modules/bser": { + "version": "2.1.1", + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/cpy/node_modules/glob-parent": { - "version": "3.1.0", - "dev": true, - "license": "ISC", + "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": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, - "node_modules/cpy/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.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-crc32": { + "version": "0.2.13", "dev": true, "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/cpy/node_modules/globby": { - "version": "9.2.0", + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cpy/node_modules/ignore": { - "version": "4.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } + "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/cpy/node_modules/is-buffer": { - "version": "1.1.6", - "dev": true, + "node_modules/buffer-from": { + "version": "1.1.2", "license": "MIT" }, - "node_modules/cpy/node_modules/is-extendable": { - "version": "0.1.1", + "node_modules/buffer-xor": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/builder-util": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.5.0.tgz", + "integrity": "sha512-STnBmZN/M5vGcv01u/K8l+H+kplTaq4PAIn3yeuufUKSpcdro0DhJWxPI81k5XcNfC//bjM3+n9nr8F9uV4uAQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/debug": "^4.1.6", + "7zip-bin": "~5.1.1", + "app-builder-bin": "4.0.0", + "bluebird-lst": "^1.0.9", + "builder-util-runtime": "9.2.1", + "chalk": "^4.1.2", + "cross-spawn": "^7.0.3", + "debug": "^4.3.4", + "fs-extra": "^10.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-ci": "^3.0.0", + "js-yaml": "^4.1.0", + "source-map-support": "^0.5.19", + "stat-mode": "^1.0.0", + "temp-file": "^3.4.0" } }, - "node_modules/cpy/node_modules/is-number": { - "version": "3.0.0", + "node_modules/builder-util-runtime": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz", + "integrity": "sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA==", "dev": true, - "license": "MIT", "dependencies": { - "kind-of": "^3.0.2" + "debug": "^4.3.4", + "sax": "^1.2.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0" } }, - "node_modules/cpy/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/builder-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, - "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cpy/node_modules/micromatch": { - "version": "3.1.10", + "node_modules/builder-util/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/builder-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, - "license": "MIT", "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" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cpy/node_modules/p-map": { - "version": "3.0.0", + "node_modules/builder-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, - "license": "MIT", "dependencies": { - "aggregate-error": "^3.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/cpy/node_modules/path-type": { - "version": "3.0.0", + "node_modules/builder-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/builder-util/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { - "pify": "^3.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/cpy/node_modules/path-type/node_modules/pify": { - "version": "3.0.0", + "node_modules/builder-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, - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/cpy/node_modules/slash": { - "version": "2.0.0", + "node_modules/builder-util/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, - "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/cpy/node_modules/to-regex-range": { - "version": "2.1.1", + "node_modules/builder-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, - "license": "MIT", "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/crc": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", - "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, - "optional": true, - "dependencies": { - "buffer": "^5.1.0" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", + "node_modules/builtin-status-codes": { + "version": "3.0.0", "license": "MIT" }, - "node_modules/create-hash": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } + "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/create-hmac": { - "version": "1.1.7", + "node_modules/bytes": { + "version": "3.0.0", "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" + "engines": { + "node": ">= 0.8" } }, - "node_modules/create-react-class": { - "version": "15.7.0", - "license": "MIT", + "node_modules/bytewise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", + "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==", "dependencies": { - "loose-envify": "^1.3.1", - "object-assign": "^4.1.1" + "bytewise-core": "^1.2.2", + "typewise": "^1.0.3" } }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "license": "MIT", + "node_modules/bytewise-core": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", + "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==", "dependencies": { - "node-fetch": "2.6.7" + "typewise-core": "^1.2" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "license": "MIT", + "node_modules/c8": { + "version": "7.12.0", + "dev": true, + "license": "ISC", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^2.0.0", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-reports": "^3.1.4", + "rimraf": "^3.0.2", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9" + }, + "bin": { + "c8": "bin/c8.js" }, "engines": { - "node": ">= 8" + "node": ">=10.12.0" } }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "license": "MIT", + "node_modules/c8/node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/crypto-js": { - "version": "3.3.0", - "license": "MIT" - }, - "node_modules/css-color-keywords": { - "version": "1.0.0", + "node_modules/c8/node_modules/y18n": { + "version": "5.0.8", + "dev": true, "license": "ISC", "engines": { - "node": ">=4" - } - }, - "node_modules/css-in-js-utils": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "hyphenate-style-name": "^1.0.2", - "isobject": "^3.0.1" + "node": ">=10" } }, - "node_modules/css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "node_modules/c8/node_modules/yargs": { + "version": "16.2.0", "dev": true, + "license": "MIT", "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.21", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.3", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "node": ">=10" } }, - "node_modules/css-loader/node_modules/icss-utils": { - "version": "5.1.0", - "dev": true, + "node_modules/cacache": { + "version": "15.3.0", "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" + "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" }, - "peerDependencies": { - "postcss": "^8.1.0" + "engines": { + "node": ">= 10" } }, - "node_modules/css-loader/node_modules/picocolors": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/css-loader/node_modules/postcss": { - "version": "8.4.28", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz", - "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/cache-base": { + "version": "1.0.1", + "devOptional": true, + "license": "MIT", "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "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": "^10 || ^12 || >=14" + "node": ">=0.10.0" } }, - "node_modules/css-loader/node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", + "node_modules/cacheable-lookup": { + "version": "5.0.4", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=10.6.0" } }, - "node_modules/css-loader/node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "node_modules/cacheable-request": { + "version": "7.0.2", "dev": true, + "license": "MIT", "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=8" } }, - "node_modules/css-loader/node_modules/postcss-modules-scope": { - "version": "3.0.0", + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "pump": "^3.0.0" }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=8" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-loader/node_modules/postcss-modules-values": { - "version": "4.0.0", + "node_modules/call-bind": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.1", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "license": "MIT", "dependencies": { - "icss-utils": "^5.0.0" + "callsites": "^2.0.0" }, "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=4" } }, - "node_modules/css-select": { - "version": "5.1.0", - "license": "BSD-2-Clause", - "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-select/node_modules/dom-serializer": { + "node_modules/caller-callsite/node_modules/callsites": { "version": "2.0.0", "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "engines": { + "node": ">=4" } }, - "node_modules/css-select/node_modules/domhandler": { - "version": "5.0.3", - "license": "BSD-2-Clause", + "node_modules/caller-path": { + "version": "2.0.0", + "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0" + "caller-callsite": "^2.0.0" }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">=4" } }, - "node_modules/css-select/node_modules/domutils": { + "node_modules/callsites": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/css-select/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "MIT", "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node": ">=6" } }, - "node_modules/css-to-react-native": { - "version": "3.0.0", + "node_modules/camel-case": { + "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { - "camelize": "^1.0.0", - "css-color-keywords": "^1.0.0", - "postcss-value-parser": "^4.0.2" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/css-tree": { - "version": "1.1.3", + "node_modules/camelcase": { + "version": "6.3.0", "license": "MIT", - "dependencies": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "license": "BSD-2-Clause", "engines": { - "node": ">= 6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/csscolorparser": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", - "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==" - }, - "node_modules/cssesc": { - "version": "3.0.0", + "node_modules/camelcase-css": { + "version": "2.0.1", "dev": true, "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/csso": { - "version": "4.2.0", + "node_modules/camelcase-keys": { + "version": "2.1.0", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "css-tree": "^1.1.2" + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" }, "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/cssom": { - "version": "0.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/cssstyle": { - "version": "2.3.0", + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "2.1.1", "dev": true, "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, + "optional": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "dev": true, - "license": "MIT" + "node_modules/camelize": { + "version": "1.0.1", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/csstype": { - "version": "3.1.1", - "license": "MIT" + "node_modules/caniuse-lite": { + "version": "1.0.30001505", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001505.tgz", + "integrity": "sha512-jaAOR5zVtxHfL0NjZyflVTtXm3D3J9P15zSJ7HmQF8dSKGA6tqzQq+0ZI3xkjyQj46I4/M0K2GbMpcAFOcbr3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] }, - "node_modules/currently-unhandled": { - "version": "0.4.1", + "node_modules/canvas": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", + "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", "dev": true, - "license": "MIT", + "hasInstallScript": true, "optional": true, + "peer": true, "dependencies": { - "array-find-index": "^1.0.1" + "@mapbox/node-pre-gyp": "^1.0.0", + "nan": "^2.17.0", + "simple-get": "^3.0.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/cyclist": { - "version": "1.0.1", - "dev": true, - "license": "MIT" + "node_modules/canvas-size": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/canvas-size/-/canvas-size-1.2.6.tgz", + "integrity": "sha512-x2iVHOrZ5x9V0Hwx6kBz+Yxf/VCAII+jrD6WLjJbytJLozHq/oDJjEva432Os0eHxWMFR0vYlLJwTr6QxyxQqw==" }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", + "node_modules/case-sensitive-paths-webpack-plugin": { + "version": "2.4.0", "dev": true, - "license": "BSD-2-Clause" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/data-urls": { - "version": "3.0.2", + "node_modules/ccount": { + "version": "1.1.0", "dev": true, "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "node_modules/center-align": { + "version": "0.1.3", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.21.0" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" }, "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/date-fns-tz": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-2.0.0.tgz", - "integrity": "sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==", - "peerDependencies": { - "date-fns": ">=2.0.0" + "node": ">=0.10.0" } }, - "node_modules/dayjs": { - "version": "1.11.9", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", - "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==" - }, - "node_modules/debounce": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", - "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" - }, - "node_modules/debug": { - "version": "4.3.4", + "node_modules/chalk": { + "version": "2.4.2", "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=4" } }, - "node_modules/decamelize": { - "version": "1.2.0", + "node_modules/chalk/node_modules/escape-string-regexp": { + "version": "1.0.5", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=0.8.0" } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "dev": true, - "license": "MIT" - }, - "node_modules/decode-named-character-reference": { + "node_modules/char-regex": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "license": "MIT", + "engines": { + "node": ">=10" } }, - "node_modules/decode-named-character-reference/node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "node_modules/character-entities": { + "version": "1.2.4", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "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/decompress-response": { - "version": "6.0.0", - "dev": true, + "node_modules/character-entities-html4": { + "version": "1.1.4", "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "dev": true, + "node_modules/character-entities-legacy": { + "version": "1.1.4", "license": "MIT", - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/dedent": { - "version": "0.7.0", - "license": "MIT" - }, - "node_modules/deep-equal": { - "version": "2.0.5", + "node_modules/character-reference-invalid": { + "version": "1.1.4", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "es-get-iterator": "^1.1.1", - "get-intrinsic": "^1.0.1", - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.2", - "is-regex": "^1.1.1", - "isarray": "^2.0.5", - "object-is": "^1.1.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "regexp.prototype.flags": "^1.3.0", - "side-channel": "^1.0.3", - "which-boxed-primitive": "^1.0.1", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.2" - }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/deep-is": { - "version": "0.1.4", + "node_modules/chardet": { + "version": "0.7.0", "dev": true, "license": "MIT" }, - "node_modules/deepmerge": { - "version": "4.3.1", - "license": "MIT", + "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": ">=0.10.0" + "node": "*" } }, - "node_modules/default-browser-id": { - "version": "1.0.4", - "dev": true, + "node_modules/chokidar": { + "version": "3.5.3", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "license": "MIT", - "optional": true, "dependencies": { - "bplist-parser": "^0.1.0", - "meow": "^3.1.0", - "untildify": "^2.0.0" - }, - "bin": { - "default-browser-id": "cli.js" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-gateway": { - "version": "6.0.3", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^5.0.0" + "node": ">= 8.10.0" }, - "engines": { - "node": ">= 10" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "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/chownr": { + "version": "2.0.0", + "license": "ISC", + "engines": { + "node": ">=10" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "dev": true, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6.0" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "dev": true, - "license": "MIT", + "node_modules/chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw==", + "dev": true + }, + "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/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==", + "node_modules/cipher-base": { + "version": "1.0.4", + "license": "MIT", "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/define-property": { - "version": "2.0.2", + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "license": "MIT" + }, + "node_modules/class-utils": { + "version": "0.3.6", "devOptional": true, "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "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/del": { - "version": "4.1.1", - "dev": true, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" + "is-descriptor": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "dev": true, + "node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "devOptional": true, "license": "MIT", "dependencies": { - "array-uniq": "^1.0.1" + "kind-of": "^3.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "dev": true, + "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "devOptional": true, "license": "MIT", "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "is-buffer": "^1.1.5" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "dev": true, - "license": "MIT", + "node_modules/class-utils/node_modules/is-buffer": { + "version": "1.1.6", + "devOptional": true, + "license": "MIT" + }, + "node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "devOptional": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/del/node_modules/p-map": { - "version": "2.1.0", - "dev": true, + "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "devOptional": true, "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/del/node_modules/rimraf": { - "version": "2.7.1", - "dev": true, - "license": "ISC", + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "devOptional": true, + "license": "MIT", "dependencies": { - "glob": "^7.1.3" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "dev": true, + "node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=0.10.0" } }, - "node_modules/delegate": { - "version": "3.2.0", + "node_modules/classnames": { + "version": "2.3.1", "license": "MIT" }, - "node_modules/delegates": { - "version": "1.0.0", + "node_modules/clean-css": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.2.tgz", + "integrity": "sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==", "dev": true, - "license": "MIT" - }, - "node_modules/denodeify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", - "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==" + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } }, - "node_modules/depd": { - "version": "2.0.0", + "node_modules/clean-stack": { + "version": "2.2.0", "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/deprecated-react-native-prop-types": { - "version": "2.3.0", + "node_modules/clean-webpack-plugin": { + "version": "3.0.0", + "dev": true, "license": "MIT", "dependencies": { - "@react-native/normalize-color": "*", - "invariant": "*", - "prop-types": "*" + "@types/webpack": "^4.4.31", + "del": "^4.1.1" + }, + "engines": { + "node": ">=8.9.0" + }, + "peerDependencies": { + "webpack": "*" } }, - "node_modules/deprecation": { - "version": "2.3.1", - "dev": true, - "license": "ISC" - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "node_modules/cli-boxes": { + "version": "2.2.1", "dev": true, + "license": "MIT", "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/des.js": { - "version": "1.0.1", + "node_modules/cli-cursor": { + "version": "3.1.0", "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/destroy": { - "version": "1.2.0", - "license": "MIT", + "node_modules/cli-spinners": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", + "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/detab": { - "version": "2.0.4", + "node_modules/cli-table3": { + "version": "0.6.3", "dev": true, "license": "MIT", "dependencies": { - "repeat-string": "^1.5.4" + "string-width": "^4.2.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "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, "optional": true, - "peer": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "license": "MIT", + "node_modules/cli-width": { + "version": "3.0.0", + "dev": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/detect-node": { - "version": "2.1.0", + "node_modules/clipboard": { + "version": "2.0.4", + "license": "MIT", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "7.0.3", "dev": true, "license": "MIT" }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "dev": true + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/detect-package-manager": { - "version": "2.0.1", + "node_modules/cliui/node_modules/string-width": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.1.1" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, "engines": { - "node": ">=12" + "node": ">=6" } }, - "node_modules/detect-port": { - "version": "1.5.0", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", "dev": true, "license": "MIT", "dependencies": { - "address": "^1.0.1", - "debug": "4" + "ansi-regex": "^4.1.0" }, - "bin": { - "detect": "bin/detect-port.js", - "detect-port": "bin/detect-port.js" + "engines": { + "node": ">=6" } }, - "node_modules/diff": { + "node_modules/cliui/node_modules/wrap-ansi": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, "engines": { - "node": ">=0.3.1" + "node": ">=6" } }, - "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/diff-so-fancy": { - "version": "1.4.3", - "dev": true, - "license": "MIT", - "bin": { - "diff-so-fancy": "third_party/build_fatpack/diff-so-fancy" + "node": ">=0.8" } }, - "node_modules/diffie-hellman": { - "version": "5.0.3", + "node_modules/clone-deep": { + "version": "4.0.1", "license": "MIT", "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "node_modules/dijkstrajs": { - "version": "1.0.3", - "license": "MIT" - }, - "node_modules/dir-compare": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", - "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", - "dev": true, - "dependencies": { - "buffer-equal": "^1.0.0", - "minimatch": "^3.0.4" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "dev": true, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", "license": "MIT", "dependencies": { - "path-type": "^4.0.0" + "isobject": "^3.0.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/dmg-builder": { - "version": "24.6.4", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.4.tgz", - "integrity": "sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw==", + "node_modules/clone-response": { + "version": "1.0.3", "dev": true, + "license": "MIT", "dependencies": { - "app-builder-lib": "24.6.4", - "builder-util": "24.5.0", - "builder-util-runtime": "9.2.1", - "fs-extra": "^10.1.0", - "iconv-lite": "^0.6.2", - "js-yaml": "^4.1.0" + "mimic-response": "^1.0.0" }, - "optionalDependencies": { - "dmg-license": "^1.0.11" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dmg-builder/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/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } }, - "node_modules/dmg-builder/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/cmd-shim": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", + "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, "engines": { - "node": ">=12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/dmg-builder/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/co": { + "version": "4.6.0", + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/dmg-license": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", - "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "@types/plist": "^3.0.1", - "@types/verror": "^1.10.3", - "ajv": "^6.10.0", - "crc": "^3.8.0", - "iconv-corefoundation": "^1.1.7", - "plist": "^3.0.4", - "smart-buffer": "^4.0.2", - "verror": "^1.10.0" - }, - "bin": { - "dmg-license": "bin/dmg-license.js" - }, + "node_modules/code-point-at": { + "version": "1.1.0", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/dmg-license/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/collapse-white-space": { + "version": "1.0.6", "dev": true, - "optional": 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" - }, + "license": "MIT", "funding": { "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/dmg-license/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, - "optional": true - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "dev": true, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", "license": "MIT" }, - "node_modules/dns-packet": { - "version": "5.4.0", - "dev": true, + "node_modules/collection-visit": { + "version": "1.0.0", + "devOptional": true, "license": "MIT", "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "dev": true, - "license": "Apache-2.0", + "node_modules/color": { + "version": "4.2.3", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "color-convert": "^2.0.1", + "color-string": "^1.9.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=12.5.0" } }, - "node_modules/dom-converter": { - "version": "0.2.0", - "dev": true, + "node_modules/color-convert": { + "version": "1.9.3", "license": "MIT", "dependencies": { - "utila": "~0.4" + "color-name": "1.1.3" } }, - "node_modules/dom-serializer": { - "version": "0.2.2", + "node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", "license": "MIT", "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/dom-walk": { - "version": "0.1.2", - "dev": true - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">=0.4", - "npm": ">=1.2" + "node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domexception": { - "version": "4.0.0", - "dev": true, + "node_modules/color/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "webidl-conversions": "^7.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/domhandler": { - "version": "4.3.1", - "license": "BSD-2-Clause", + "node_modules/color/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "1.4.0", + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "license": "MIT", "dependencies": { - "domelementtype": "^2.2.0" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">= 0.8" } }, - "node_modules/dommatrix": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/dommatrix/-/dommatrix-1.0.3.tgz", - "integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==", - "deprecated": "dommatrix is no longer maintained. Please use @thednp/dommatrix." - }, - "node_modules/dompurify": { - "version": "2.3.10", - "license": "(MPL-2.0 OR Apache-2.0)" - }, - "node_modules/domutils": { - "version": "2.8.0", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/domutils/node_modules/dom-serializer": { - "version": "1.4.1", + "node_modules/comma-separated-tokens": { + "version": "1.0.8", + "dev": true, "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/dot-case": { - "version": "3.0.4", + "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": "6.2.1", "dev": true, "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "engines": { + "node": ">= 6" } }, - "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "node_modules/comment-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "node": ">= 12.0.0" } }, - "node_modules/dotenv-expand": { - "version": "5.1.0", - "dev": true, - "license": "BSD-2-Clause" + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true }, - "node_modules/duplexer": { - "version": "0.1.2", + "node_modules/commondir": { + "version": "1.0.1", "license": "MIT" }, - "node_modules/duplexify": { - "version": "3.7.1", + "node_modules/compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/earcut": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", - "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + "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/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/complex.js": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", + "integrity": "sha512-8njCHOTtFFLtegk6zQo0kkVX1rngygb/KQI6z1qZxlFI3scluC+LVTCFbrkWjBv4vvLlbQ9t88IPMC6k95VTTg==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } }, - "node_modules/ee-first": { - "version": "1.1.1", + "node_modules/component-emitter": { + "version": "1.3.0", + "devOptional": true, "license": "MIT" }, - "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", - "dev": true, + "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", + "license": "MIT", "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/electron": { - "version": "25.8.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.1.tgz", - "integrity": "sha512-GtcP1nMrROZfFg0+mhyj1hamrHvukfF6of2B/pcWxmWkd5FVY1NJib0tlhiorFZRzQN5Z+APLPr7aMolt7i2AQ==", - "dev": true, - "hasInstallScript": true, + "node_modules/compression": { + "version": "1.7.4", + "license": "MIT", "dependencies": { - "@electron/get": "^2.0.0", - "@types/node": "^18.11.18", - "extract-zip": "^2.0.1" - }, - "bin": { - "electron": "cli.js" + "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": ">= 12.20.55" + "node": ">= 0.8.0" } }, - "node_modules/electron-builder": { - "version": "24.6.4", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz", - "integrity": "sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==", + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.6.2", "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", "dependencies": { - "app-builder-lib": "24.6.4", - "builder-util": "24.5.0", - "builder-util-runtime": "9.2.1", - "chalk": "^4.1.2", - "dmg-builder": "24.6.4", - "fs-extra": "^10.1.0", - "is-ci": "^3.0.0", - "lazy-val": "^1.0.5", - "read-config-file": "6.3.2", - "simple-update-notifier": "2.0.0", - "yargs": "^17.6.2" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concurrently": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.2", + "date-fns": "^2.0.1", + "lodash": "^4.17.15", + "read-pkg": "^4.0.1", + "rxjs": "^6.5.2", + "spawn-command": "^0.0.2-1", + "supports-color": "^6.1.0", + "tree-kill": "^1.2.2", + "yargs": "^13.3.0" }, "bin": { - "electron-builder": "cli.js", - "install-app-deps": "install-app-deps.js" + "concurrently": "bin/concurrently.js" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.0.0" } }, - "node_modules/electron-builder/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/concurrently/node_modules/supports-color": { + "version": "6.1.0", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/electron-builder/node_modules/chalk": { - "version": "4.1.2", + "node_modules/config-file-ts": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.4.tgz", + "integrity": "sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ==", "dev": true, - "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "glob": "^7.1.6", + "typescript": "^4.0.2" + } + }, + "node_modules/config-file-ts/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4.2.0" } }, - "node_modules/electron-builder/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==", + "node_modules/confusing-browser-globals": { + "version": "1.0.11", "dev": true, + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" }, "engines": { - "node": ">=12" + "node": ">= 0.10.0" } }, - "node_modules/electron-builder/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", "dev": true, "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "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": { - "color-name": "~1.1.4" + "ms": "2.0.0" + } + }, + "node_modules/connect/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": ">=7.0.0" + "node": ">= 0.8" } }, - "node_modules/electron-builder/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" + "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/electron-builder/node_modules/fs-extra": { - "version": "10.1.0", - "dev": true, - "license": "MIT", + "node_modules/connect/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": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "ee-first": "1.1.1" }, "engines": { - "node": ">=12" + "node": ">= 0.8" } }, - "node_modules/electron-builder/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", + "node_modules/connect/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": ">=8" + "node": ">= 0.6" } }, - "node_modules/electron-builder/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/console-browserify": { + "version": "1.2.0" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "0.5.4", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/electron-builder/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", "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" + } + ], + "license": "MIT" + }, + "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": ">=10" + "node": ">= 0.6" } }, - "node_modules/electron-builder/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "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/cookie": { + "version": "0.5.0", "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" - }, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/electron-builder/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==", + "node_modules/cookie-signature": { + "version": "1.0.6", "dev": true, - "engines": { - "node": ">=12" + "license": "MIT" + }, + "node_modules/copy-concurrently": { + "version": "1.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" } }, - "node_modules/electron-publish": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.5.0.tgz", - "integrity": "sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA==", + "node_modules/copy-concurrently/node_modules/mkdirp": { + "version": "0.5.6", "dev": true, + "license": "MIT", "dependencies": { - "@types/fs-extra": "^9.0.11", - "builder-util": "24.5.0", - "builder-util-runtime": "9.2.1", - "chalk": "^4.1.2", - "fs-extra": "^10.1.0", - "lazy-val": "^1.0.5", - "mime": "^2.5.2" + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/electron-publish/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==", + "node_modules/copy-concurrently/node_modules/rimraf": { + "version": "2.7.1", "dev": true, + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "glob": "^7.1.3" }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "devOptional": true, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/electron-publish/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/copy-webpack-plugin": { + "version": "6.4.1", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "cacache": "^15.0.5", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "webpack-sources": "^1.4.3" }, "engines": { - "node": ">=10" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" } }, - "node_modules/electron-publish/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==", + "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { + "version": "3.3.2", "dev": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/electron-publish/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/electron-publish/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/copy-webpack-plugin/node_modules/find-up": { + "version": "4.1.0", "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/electron-publish/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==", + "node_modules/copy-webpack-plugin/node_modules/locate-path": { + "version": "5.0.0", "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { "node": ">=8" } }, - "node_modules/electron-publish/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==", + "node_modules/copy-webpack-plugin/node_modules/make-dir": { + "version": "3.1.0", "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "semver": "^6.0.0" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/electron-to-chromium": { - "version": "1.4.435", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.435.tgz", - "integrity": "sha512-B0CBWVFhvoQCW/XtjRzgrmqcgVWg6RXOEM/dK59+wFV93BFGR6AeNKc4OyhM+T3IhJaOOG8o/V+33Y2mwJWtzw==" - }, - "node_modules/element-resize-detector": { - "version": "1.2.4", + "node_modules/copy-webpack-plugin/node_modules/p-locate": { + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "batch-processor": "1.0.0" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/elliptic": { - "version": "6.5.4", + "node_modules/copy-webpack-plugin/node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, "license": "MIT", "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "node_modules/emittery": { - "version": "0.13.1", - "license": "MIT", + "p-try": "^2.0.0" + }, "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "license": "MIT" - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "devOptional": true, + "node_modules/copy-webpack-plugin/node_modules/path-exists": { + "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "1.0.2", + "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, - "peer": true, - "dependencies": { - "iconv-lite": "^0.6.2" + "node_modules/copy-webpack-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "dev": true, - "license": "MIT", + "node_modules/core-js": { + "version": "3.32.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.32.1.tgz", + "integrity": "sha512-lqufgNn9NLnESg5mQeYsxQP5w7wrViSj0jr/kv6ECQiByzQkrn1MKvV0L3acttpDqfQrHLwr2KCMgX5b8X+lyQ==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.31.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.31.0.tgz", + "integrity": "sha512-hM7YCu1cU6Opx7MXNu0NuumM0ezNeAeRKadixyiQELWY3vT3De9S4J5ZBMraWV2vZnrE1Cirl0GtFtDtMUXzPw==", "dependencies": { - "once": "^1.4.0" + "browserslist": "^4.21.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/endent": { - "version": "2.1.0", + "node_modules/core-js-pure": { + "version": "3.24.1", "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "dedent": "^0.7.0", - "fast-json-parse": "^1.0.3", - "objectorarray": "^1.0.5" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/engine.io-client": { - "version": "6.2.2", - "license": "MIT", + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.0.3", - "ws": "~8.2.3", - "xmlhttprequest-ssl": "~2.0.0" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "8.2.3", - "license": "MIT", + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">= 6" } }, - "node_modules/engine.io-parser": { - "version": "5.0.4", + "node_modules/cp-file": { + "version": "7.0.0", + "dev": true, "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "nested-error-stacks": "^2.0.0", + "p-event": "^4.1.0" + }, "engines": { - "node": ">=10.0.0" + "node": ">=8" } }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "devOptional": true, + "node_modules/cp-file/node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "semver": "^6.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/enhanced-resolve/node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "devOptional": true, - "engines": { - "node": ">=6" + "node_modules/cp-file/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/enquirer": { - "version": "2.3.6", + "node_modules/cpy": { + "version": "8.1.2", "dev": true, "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.1" + "arrify": "^2.0.1", + "cp-file": "^7.0.0", + "globby": "^9.2.0", + "has-glob": "^1.0.0", + "junk": "^3.1.0", + "nested-error-stacks": "^2.1.0", + "p-all": "^2.1.0", + "p-filter": "^2.1.0", + "p-map": "^3.0.0" }, "engines": { - "node": ">=8.6" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "license": "BSD-2-Clause", + "node": ">=8" + }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/enumerate-devices": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/env-paths": { - "version": "2.2.1", + "node_modules/cpy/node_modules/@nodelib/fs.stat": { + "version": "1.1.3", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 6" } }, - "node_modules/envinfo": { - "version": "7.8.1", + "node_modules/cpy/node_modules/array-union": { + "version": "1.0.2", + "dev": true, "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" + "dependencies": { + "array-uniq": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/errno": { - "version": "0.1.8", + "node_modules/cpy/node_modules/braces": { + "version": "2.3.2", + "dev": true, "license": "MIT", "dependencies": { - "prr": "~1.0.1" + "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" }, - "bin": { - "errno": "cli.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/error-ex": { - "version": "1.3.2", + "node_modules/cpy/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/error-stack-parser": { - "version": "2.1.4", + "node_modules/cpy/node_modules/dir-glob": { + "version": "2.2.2", + "dev": true, "license": "MIT", "dependencies": { - "stackframe": "^1.3.4" + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/errorhandler": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", - "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", + "node_modules/cpy/node_modules/fast-glob": { + "version": "2.2.7", + "dev": true, + "license": "MIT", "dependencies": { - "accepts": "~1.3.7", - "escape-html": "~1.0.3" + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" }, "engines": { - "node": ">= 0.8" + "node": ">=4.0.0" } }, - "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "node_modules/cpy/node_modules/fill-range": { + "version": "4.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", - "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.1", - "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.5.0", - "safe-array-concat": "^1.0.0", - "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-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/es-get-iterator": { - "version": "1.1.2", + "node_modules/cpy/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.0", - "has-symbols": "^1.0.1", - "is-arguments": "^1.1.0", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.5", - "isarray": "^2.0.5" + "is-extendable": "^0.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/es-iterator-helpers": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.13.tgz", - "integrity": "sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA==", + "node_modules/cpy/node_modules/glob-parent": { + "version": "3.1.0", "dev": true, + "license": "ISC", "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.3", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "iterator.prototype": "^1.1.0", - "safe-array-concat": "^1.0.0" + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" } }, - "node_modules/es-module-lexer": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", - "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", - "devOptional": true - }, - "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==", + "node_modules/cpy/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "is-extglob": "^2.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", + "node_modules/cpy/node_modules/globby": { + "version": "9.2.0", "dev": true, "license": "MIT", "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/es5-shim": { - "version": "4.6.7", + "node_modules/cpy/node_modules/ignore": { + "version": "4.0.6", "dev": true, "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">= 4" } }, - "node_modules/es6-error": { - "version": "4.1.1", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true - }, - "node_modules/es6-shim": { - "version": "0.35.6", + "node_modules/cpy/node_modules/is-buffer": { + "version": "1.1.6", "dev": true, "license": "MIT" }, - "node_modules/esbuild": { - "version": "0.18.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.18.tgz", - "integrity": "sha512-UckDPWvdVJLNT0npk5AMTpVwGRQhS76rWFLmHwEtgNvWlR9sgVV1eyc/oeBtM86q9s8ABBLMmm0CwNxhVemOiw==", + "node_modules/cpy/node_modules/is-extendable": { + "version": "0.1.1", "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, + "license": "MIT", "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.18", - "@esbuild/android-arm64": "0.18.18", - "@esbuild/android-x64": "0.18.18", - "@esbuild/darwin-arm64": "0.18.18", - "@esbuild/darwin-x64": "0.18.18", - "@esbuild/freebsd-arm64": "0.18.18", - "@esbuild/freebsd-x64": "0.18.18", - "@esbuild/linux-arm": "0.18.18", - "@esbuild/linux-arm64": "0.18.18", - "@esbuild/linux-ia32": "0.18.18", - "@esbuild/linux-loong64": "0.18.18", - "@esbuild/linux-mips64el": "0.18.18", - "@esbuild/linux-ppc64": "0.18.18", - "@esbuild/linux-riscv64": "0.18.18", - "@esbuild/linux-s390x": "0.18.18", - "@esbuild/linux-x64": "0.18.18", - "@esbuild/netbsd-x64": "0.18.18", - "@esbuild/openbsd-x64": "0.18.18", - "@esbuild/sunos-x64": "0.18.18", - "@esbuild/win32-arm64": "0.18.18", - "@esbuild/win32-ia32": "0.18.18", - "@esbuild/win32-x64": "0.18.18" + "node": ">=0.10.0" } }, - "node_modules/esbuild-register": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.4.2.tgz", - "integrity": "sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q==", + "node_modules/cpy/node_modules/is-number": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.3.4" + "kind-of": "^3.0.2" }, - "peerDependencies": { - "esbuild": ">=0.12 <1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "license": "MIT" - }, - "node_modules/escape-latex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", - "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/escodegen": { - "version": "2.0.0", + "node_modules/cpy/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "node": ">=0.10.0" } }, - "node_modules/eslint": { - "version": "7.32.0", + "node_modules/cpy/node_modules/micromatch": { + "version": "3.1.10", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" + "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": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=0.10.0" } }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "node_modules/cpy/node_modules/p-map": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" + "aggregate-error": "^3.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=8" } }, - "node_modules/eslint-config-airbnb-typescript": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", - "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", + "node_modules/cpy/node_modules/path-type": { + "version": "3.0.0", "dev": true, + "license": "MIT", "dependencies": { - "eslint-config-airbnb-base": "^15.0.0" + "pify": "^3.0.0" }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0", - "@typescript-eslint/parser": "^5.0.0 || ^6.0.0", - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.3" - } - }, - "node_modules/eslint-config-expensify": { - "version": "2.0.39", - "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.39.tgz", - "integrity": "sha512-DIxR3k99ZIDPE2NK+WLLRWpoDq06gTXdY8XZg9Etd1UqZ7fXm/Yz3/QkTxu7CH7UaXbCH3P4PTo023ULQGKOSw==", - "dev": true, - "dependencies": { - "@lwc/eslint-plugin-lwc": "^0.11.0", - "babel-eslint": "^10.1.0", - "eslint": "6.8.0", - "eslint-config-airbnb": "18.0.1", - "eslint-config-airbnb-base": "14.0.0", - "eslint-plugin-es": "^4.1.0", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jsx-a11y": "6.2.3", - "eslint-plugin-react": "7.18.0", - "eslint-plugin-rulesdir": "^0.2.0", - "lodash": "^4.17.21", - "underscore": "^1.13.1" + "engines": { + "node": ">=4" } }, - "node_modules/eslint-config-expensify/node_modules/ajv": { - "version": "6.12.6", + "node_modules/cpy/node_modules/path-type/node_modules/pify": { + "version": "3.0.0", "dev": true, "license": "MIT", - "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" + "engines": { + "node": ">=4" } }, - "node_modules/eslint-config-expensify/node_modules/astral-regex": { - "version": "1.0.0", + "node_modules/cpy/node_modules/slash": { + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/eslint-config-expensify/node_modules/cross-spawn": { - "version": "6.0.5", + "node_modules/cpy/node_modules/to-regex-range": { + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "engines": { - "node": ">=4.8" + "node": ">=0.10.0" } }, - "node_modules/eslint-config-expensify/node_modules/cross-spawn/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", "dev": true, - "bin": { - "semver": "bin/semver" + "optional": true, + "dependencies": { + "buffer": "^5.1.0" } }, - "node_modules/eslint-config-expensify/node_modules/emoji-regex": { - "version": "7.0.3", - "dev": true, + "node_modules/create-ecdh": { + "version": "4.0.4", + "license": "MIT", + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", "license": "MIT" }, - "node_modules/eslint-config-expensify/node_modules/eslint": { - "version": "6.8.0", - "dev": true, + "node_modules/create-hash": { + "version": "1.2.0", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.10.0", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^5.0.0", - "eslint-utils": "^1.4.3", - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.2", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", - "globals": "^12.1.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^7.0.0", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.14", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.3", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^6.1.2", - "strip-ansi": "^5.2.0", - "strip-json-comments": "^3.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "node_modules/eslint-config-expensify/node_modules/eslint-config-airbnb": { - "version": "18.0.1", - "dev": true, + "node_modules/create-hmac": { + "version": "1.1.7", "license": "MIT", "dependencies": { - "eslint-config-airbnb-base": "^14.0.0", - "object.assign": "^4.1.0", - "object.entries": "^1.1.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "eslint": "^5.16.0 || ^6.1.0", - "eslint-plugin-import": "^2.18.2", - "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-react": "^7.14.3", - "eslint-plugin-react-hooks": "^1.7.0" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "node_modules/eslint-config-expensify/node_modules/eslint-config-airbnb-base": { - "version": "14.0.0", - "dev": true, + "node_modules/create-react-class": { + "version": "15.7.0", "license": "MIT", "dependencies": { - "confusing-browser-globals": "^1.0.7", - "object.assign": "^4.1.0", - "object.entries": "^1.1.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "eslint": "^5.16.0 || ^6.1.0", - "eslint-plugin-import": "^2.18.2" + "loose-envify": "^1.3.1", + "object-assign": "^4.1.1" } }, - "node_modules/eslint-config-expensify/node_modules/eslint-plugin-jsx-a11y": { - "version": "6.2.3", - "dev": true, + "node_modules/cross-fetch": { + "version": "3.1.5", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.4.5", - "aria-query": "^3.0.0", - "array-includes": "^3.0.3", - "ast-types-flow": "^0.0.7", - "axobject-query": "^2.0.2", - "damerau-levenshtein": "^1.0.4", - "emoji-regex": "^7.0.2", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.1" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6" + "node-fetch": "2.6.7" } }, - "node_modules/eslint-config-expensify/node_modules/eslint-plugin-react": { - "version": "7.18.0", - "dev": true, + "node_modules/cross-spawn": { + "version": "7.0.3", "license": "MIT", "dependencies": { - "array-includes": "^3.1.1", - "doctrine": "^2.1.0", - "has": "^1.0.3", - "jsx-ast-utils": "^2.2.3", - "object.entries": "^1.1.1", - "object.fromentries": "^2.0.2", - "object.values": "^1.1.1", - "prop-types": "^15.7.2", - "resolve": "^1.14.2" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + "node": ">= 8" } }, - "node_modules/eslint-config-expensify/node_modules/eslint-plugin-react-hooks": { - "version": "1.7.0", - "dev": true, - "license": "MIT", - "peer": true, + "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": ">=7" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + "node": "*" } }, - "node_modules/eslint-config-expensify/node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", + "node_modules/crypto-browserify": { + "version": "3.12.0", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/eslint-config-expensify/node_modules/eslint-utils": { - "version": "1.4.3", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, + "node_modules/crypto-js": { + "version": "3.3.0", + "license": "MIT" + }, + "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": ">=6" + "node": ">=8" } }, - "node_modules/eslint-config-expensify/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.0", + "node_modules/css-color-keywords": { + "version": "1.0.0", + "license": "ISC", "engines": { "node": ">=4" } }, - "node_modules/eslint-config-expensify/node_modules/espree": { - "version": "6.2.1", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/css-in-js-utils": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "acorn": "^7.1.1", - "acorn-jsx": "^5.2.0", - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6.0.0" + "hyphenate-style-name": "^1.0.2", + "isobject": "^3.0.1" } }, - "node_modules/eslint-config-expensify/node_modules/file-entry-cache": { - "version": "5.0.1", - "dev": true, - "license": "MIT", + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, "dependencies": { - "flat-cache": "^2.0.1" + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" }, "engines": { - "node": ">=4" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, - "node_modules/eslint-config-expensify/node_modules/flat-cache": { - "version": "2.0.1", + "node_modules/css-loader/node_modules/icss-utils": { + "version": "5.1.0", "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - }, + "license": "ISC", "engines": { - "node": ">=4" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/eslint-config-expensify/node_modules/flatted": { - "version": "2.0.2", + "node_modules/css-loader/node_modules/picocolors": { + "version": "1.0.0", "dev": true, "license": "ISC" }, - "node_modules/eslint-config-expensify/node_modules/globals": { - "version": "12.4.0", + "node_modules/css-loader/node_modules/postcss": { + "version": "8.4.28", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz", + "integrity": "sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "type-fest": "^0.8.1" + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^10 || ^12 || >=14" } }, - "node_modules/eslint-config-expensify/node_modules/ignore": { - "version": "4.0.6", + "node_modules/css-loader/node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">= 4" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/eslint-config-expensify/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", + "node_modules/css-loader/node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", "dev": true, - "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, "engines": { - "node": ">=4" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/eslint-config-expensify/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-config-expensify/node_modules/jsx-ast-utils": { - "version": "2.4.1", + "node_modules/css-loader/node_modules/postcss-modules-scope": { + "version": "3.0.0", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "array-includes": "^3.1.1", - "object.assign": "^4.1.0" + "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": ">=4.0" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/eslint-config-expensify/node_modules/levn": { - "version": "0.3.0", + "node_modules/css-loader/node_modules/postcss-modules-values": { + "version": "4.0.0", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "icss-utils": "^5.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/eslint-config-expensify/node_modules/mkdirp": { - "version": "0.5.6", - "dev": true, - "license": "MIT", + "node_modules/css-select": { + "version": "5.1.0", + "license": "BSD-2-Clause", "dependencies": { - "minimist": "^1.2.6" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, - "bin": { - "mkdirp": "bin/cmd.js" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/eslint-config-expensify/node_modules/path-key": { - "version": "2.0.1", - "dev": true, + "node_modules/css-select/node_modules/dom-serializer": { + "version": "2.0.0", "license": "MIT", - "engines": { - "node": ">=4" + "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/eslint-config-expensify/node_modules/prelude-ls": { - "version": "1.1.2", - "dev": true, + "node_modules/css-select/node_modules/domhandler": { + "version": "5.0.3", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, "engines": { - "node": ">= 0.8.0" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/eslint-config-expensify/node_modules/regexpp": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.5.0" + "node_modules/css-select/node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/eslint-config-expensify/node_modules/rimraf": { - "version": "2.6.3", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" + "node_modules/css-select/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" }, - "bin": { - "rimraf": "bin.js" + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/eslint-config-expensify/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/css-to-react-native": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "camelize": "^1.0.0", + "css-color-keywords": "^1.0.0", + "postcss-value-parser": "^4.0.2" } }, - "node_modules/eslint-config-expensify/node_modules/shebang-command": { - "version": "1.2.0", - "dev": true, + "node_modules/css-tree": { + "version": "1.1.3", "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "mdn-data": "2.0.14", + "source-map": "^0.6.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/eslint-config-expensify/node_modules/shebang-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT", + "node_modules/css-what": { + "version": "6.1.0", + "license": "BSD-2-Clause", "engines": { - "node": ">=0.10.0" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/eslint-config-expensify/node_modules/slice-ansi": { - "version": "2.1.0", + "node_modules/csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==" + }, + "node_modules/cssesc": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/eslint-config-expensify/node_modules/string-width": { - "version": "3.1.0", + "node_modules/csso": { + "version": "4.2.0", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "css-tree": "^1.1.2" }, "engines": { - "node": ">=6" + "node": ">=8.0.0" } }, - "node_modules/eslint-config-expensify/node_modules/strip-ansi": { - "version": "5.2.0", + "node_modules/cssom": { + "version": "0.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^4.1.0" + "cssom": "~0.3.6" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/eslint-config-expensify/node_modules/table": { - "version": "5.4.6", + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - }, - "engines": { - "node": ">=6.0.0" - } + "license": "MIT" }, - "node_modules/eslint-config-expensify/node_modules/type-check": { - "version": "0.3.2", + "node_modules/csstype": { + "version": "3.1.1", + "license": "MIT" + }, + "node_modules/currently-unhandled": { + "version": "0.4.1", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "prelude-ls": "~1.1.2" + "array-find-index": "^1.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=0.10.0" } }, - "node_modules/eslint-config-expensify/node_modules/type-fest": { - "version": "0.8.1", + "node_modules/cyclist": { + "version": "1.0.1", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/eslint-config-expensify/node_modules/which": { - "version": "1.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } + "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/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "node_modules/damerau-levenshtein": { + "version": "1.0.8", "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } + "license": "BSD-2-Clause" }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", + "node_modules/data-urls": { + "version": "3.0.2", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7", - "resolve": "^1.20.0" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "dev": true, - "license": "MIT", + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "dependencies": { - "ms": "^2.1.1" + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" } }, - "node_modules/eslint-module-utils": { - "version": "2.7.4", - "dev": true, + "node_modules/date-fns-tz": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-2.0.0.tgz", + "integrity": "sha512-OAtcLdB9vxSXTWHdT8b398ARImVwQMyjfYGkKD2zaGpHseG2UPHbHjXELReErZFxWdSLph3c2zOaaTyHfOhERQ==", + "peerDependencies": { + "date-fns": ">=2.0.0" + } + }, + "node_modules/dayjs": { + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==" + }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" + }, + "node_modules/debug": { + "version": "4.3.4", "license": "MIT", "dependencies": { - "debug": "^3.2.7" + "ms": "2.1.2" }, "engines": { - "node": ">=4" + "node": ">=6.0" }, "peerDependenciesMeta": { - "eslint": { + "supports-color": { "optional": true } } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "dev": true, + "node_modules/decamelize": { + "version": "1.2.0", "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", + "node_modules/decimal.js": { + "version": "10.4.3", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" + "character-entities": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", + "node_modules/decode-named-character-reference/node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, + "optional": true, + "peer": true, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "dev": true, - "license": "Apache-2.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": ">=4" + "node": ">=0.10" } }, - "node_modules/eslint-plugin-eslint-comments": { - "version": "3.2.0", + "node_modules/decompress-response": { + "version": "6.0.0", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5", - "ignore": "^5.0.5" + "mimic-response": "^3.1.0" }, "engines": { - "node": ">=6.5.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-flowtype": { - "version": "2.50.3", + "node_modules/dedent": { + "version": "0.7.0", + "license": "MIT" + }, + "node_modules/deep-equal": { + "version": "2.0.5", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "lodash": "^4.17.10" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": ">=2.0.0" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" + "call-bind": "^1.0.0", + "es-get-iterator": "^1.1.1", + "get-intrinsic": "^1.0.1", + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.2", + "is-regex": "^1.1.1", + "isarray": "^2.0.5", + "object-is": "^1.1.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.3", + "which-boxed-primitive": "^1.0.1", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.2" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, + "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": ">=0.10.0" + "node": ">=4.0.0" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", + "node_modules/deep-is": { + "version": "0.1.4", "dev": true, "license": "MIT" }, - "node_modules/eslint-plugin-jest": { - "version": "24.7.0", - "dev": true, + "node_modules/deepmerge": { + "version": "4.3.1", "license": "MIT", - "dependencies": { - "@typescript-eslint/experimental-utils": "^4.0.1" - }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": ">= 4", - "eslint": ">=5" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-jsdoc": { - "version": "46.2.6", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.2.6.tgz", - "integrity": "sha512-zIaK3zbSrKuH12bP+SPybPgcHSM6MFzh3HFeaODzmsF1N8C1l8dzJ22cW1aq4g0+nayU1VMjmNf7hg0dpShLrA==", + "node_modules/default-browser-id": { + "version": "1.0.4", "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.39.4", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.3.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "is-builtin-module": "^3.2.1", - "semver": "^7.5.1", - "spdx-expression-parse": "^3.0.1" + "bplist-parser": "^0.1.0", + "meow": "^3.1.0", + "untildify": "^2.0.0" }, - "engines": { - "node": ">=16" + "bin": { + "default-browser-id": "cli.js" }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "node_modules/default-gateway": { + "version": "6.0.3", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" + "execa": "^5.0.0" }, "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": ">= 10" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dev": true, + "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": { - "dequal": "^2.0.3" + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "node_modules/defer-to-connect": { + "version": "2.0.1", "dev": true, - "dependencies": { - "dequal": "^2.0.3" + "license": "MIT", + "engines": { + "node": ">=10" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-prettier": { - "version": "3.1.2", - "dev": true, - "license": "MIT", + "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": { - "prettier-linter-helpers": "^1.0.0" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=6.0.0" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": ">= 5.0.0", - "prettier": ">= 1.13.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dev": true, + "node_modules/define-property": { + "version": "2.0.2", + "devOptional": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "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.1", - "string.prototype.matchall": "^4.0.8" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", + "node_modules/del": { + "version": "4.1.1", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "engines": { + "node": ">=6" } }, - "node_modules/eslint-plugin-react-native": { - "version": "3.11.0", + "node_modules/del/node_modules/array-union": { + "version": "1.0.2", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.7.4", - "eslint-plugin-react-native-globals": "^0.1.1" + "array-uniq": "^1.0.1" }, - "peerDependencies": { - "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react-native-a11y": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-a11y/-/eslint-plugin-react-native-a11y-3.3.0.tgz", - "integrity": "sha512-21bIs/0yROcMq7KtAG+OVNDWAh8M+6scII0iXcO3i9NYHe2xZ443yPs5KSUMSvQJeRLLjuKB7V5saqNjoMWDHA==", + "node_modules/del/node_modules/globby": { + "version": "6.1.0", "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.15.4", - "ast-types-flow": "^0.0.7", - "jsx-ast-utils": "^3.2.1" + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" }, "engines": { - "node": ">=12.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react-native-globals": { - "version": "0.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", + "node_modules/del/node_modules/globby/node_modules/pify": { + "version": "2.3.0", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", + "node_modules/del/node_modules/p-map": { + "version": "2.1.0", "dev": true, "license": "MIT", - "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" + "engines": { + "node": ">=6" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/del/node_modules/rimraf": { + "version": "2.7.1", "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, "bin": { - "semver": "bin/semver.js" + "rimraf": "bin.js" } }, - "node_modules/eslint-plugin-rulesdir": { - "version": "0.2.1", - "dev": true, + "node_modules/delayed-stream": { + "version": "1.0.0", "license": "MIT", "engines": { - "node": ">=4.0.0" + "node": ">=0.4.0" } }, - "node_modules/eslint-plugin-storybook": { - "version": "0.5.13", + "node_modules/delegate": { + "version": "3.2.0", + "license": "MIT" + }, + "node_modules/delegates": { + "version": "1.0.0", "dev": true, + "license": "MIT" + }, + "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", "license": "MIT", - "dependencies": { - "@storybook/csf": "^0.0.1", - "@typescript-eslint/experimental-utils": "^5.3.0", - "requireindex": "^1.1.0" - }, "engines": { - "node": "12.x || 14.x || >= 16" - }, - "peerDependencies": { - "eslint": ">=6" + "node": ">= 0.8" } }, - "node_modules/eslint-plugin-storybook/node_modules/@storybook/csf": { - "version": "0.0.1", - "dev": true, + "node_modules/deprecated-react-native-prop-types": { + "version": "2.3.0", "license": "MIT", "dependencies": { - "lodash": "^4.17.15" + "@react-native/normalize-color": "*", + "invariant": "*", + "prop-types": "*" } }, - "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/experimental-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", - "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "node_modules/deprecation": { + "version": "2.3.1", "dev": true, - "dependencies": { - "@typescript-eslint/utils": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } + "license": "ISC" }, - "node_modules/eslint-plugin-you-dont-need-lodash-underscore": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-you-dont-need-lodash-underscore/-/eslint-plugin-you-dont-need-lodash-underscore-6.12.0.tgz", - "integrity": "sha512-WF4mNp+k2532iswT6iUd1BX6qjd3AV4cFy/09VC82GY9SsRtvkxhUIx7JNGSe0/bLyd57oTr4inPFiIaENXhGw==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, - "dependencies": { - "kebab-case": "^1.0.0" - }, "engines": { - "node": ">=4.0" + "node": ">=6" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/des.js": { + "version": "1.0.1", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/destroy": { + "version": "1.2.0", + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", + "node_modules/detab": { + "version": "2.0.4", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "repeat-string": "^1.5.4" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "dev": true, - "license": "Apache-2.0", + "optional": true, + "peer": true, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/eslint/node_modules/@babel/code-frame": { - "version": "7.12.11", - "dev": true, + "node_modules/detect-newline": { + "version": "3.1.0", "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" + "engines": { + "node": ">=8" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", + "node_modules/detect-node": { + "version": "2.1.0", "dev": true, - "license": "MIT", - "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" - } + "license": "MIT" }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "dev": true + }, + "node_modules/detect-package-manager": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "execa": "^5.1.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=12" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", + "node_modules/detect-port": { + "version": "1.5.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "address": "^1.0.1", + "debug": "4" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, + "optional": true, + "peer": true, "engines": { - "node": ">=7.0.0" + "node": ">=0.3.1" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" + "node_modules/diff-sequences": { + "version": "29.4.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", + "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/eslint/node_modules/eslint-utils": { - "version": "2.1.0", + "node_modules/diff-so-fancy": { + "version": "1.4.3", "dev": true, "license": "MIT", + "bin": { + "diff-so-fancy": "third_party/build_fatpack/diff-so-fancy" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" } }, - "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/dir-compare": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", + "integrity": "sha512-J7/et3WlGUCxjdnD3HAAzQ6nsnc0WL6DD7WcwJb7c39iH1+AWfg+9OqzJNaI6PkBwBvm1mhZNL9iY/nRiZXlPg==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=4" + "dependencies": { + "buffer-equal": "^1.0.0", + "minimatch": "^3.0.4" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", - "dev": true, + "node_modules/dir-glob": { + "version": "3.0.1", + "license": "MIT", "dependencies": { - "type-fest": "^0.20.2" + "path-type": "^4.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/dmg-builder": { + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.4.tgz", + "integrity": "sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "app-builder-lib": "24.6.4", + "builder-util": "24.5.0", + "builder-util-runtime": "9.2.1", + "fs-extra": "^10.1.0", + "iconv-lite": "^0.6.2", + "js-yaml": "^4.1.0" + }, + "optionalDependencies": { + "dmg-license": "^1.0.11" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", + "node_modules/dmg-builder/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/dmg-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=12" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "node_modules/dmg-builder/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": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">= 0.8.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/dmg-license": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.11.tgz", + "integrity": "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q==", "dev": true, - "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "dependencies": { - "has-flag": "^4.0.0" + "@types/plist": "^3.0.1", + "@types/verror": "^1.10.3", + "ajv": "^6.10.0", + "crc": "^3.8.0", + "iconv-corefoundation": "^1.1.7", + "plist": "^3.0.4", + "smart-buffer": "^4.0.2", + "verror": "^1.10.0" + }, + "bin": { + "dmg-license": "bin/dmg-license.js" }, "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==", + "node_modules/dmg-license/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, - "engines": { - "node": ">=10" + "optional": 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": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/espree": { - "version": "7.3.1", + "node_modules/dmg-license/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, - "license": "BSD-2-Clause", + "optional": true + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/dns-packet": { + "version": "5.4.0", + "dev": true, + "license": "MIT", "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "@leichtgewicht/ip-codec": "^2.0.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=6" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", + "node_modules/doctrine": { + "version": "3.0.0", "dev": true, "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "dependencies": { + "esutils": "^2.0.2" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "node_modules/dom-converter": { + "version": "0.2.0", "dev": true, + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" + "utila": "~0.4" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/dom-serializer": { + "version": "0.2.2", + "license": "MIT", "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" + "domelementtype": "^2.0.1", + "entities": "^2.0.0" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/dom-walk": { + "version": "0.1.2", + "dev": true + }, + "node_modules/domain-browser": { + "version": "1.2.0", + "license": "MIT", "engines": { - "node": ">=4.0" + "node": ">=0.4", + "npm": ">=1.2" } }, - "node_modules/estree-to-babel": { - "version": "3.2.1", + "node_modules/domelementtype": { + "version": "2.3.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "4.0.0", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.1.6", - "@babel/types": "^7.2.0", - "c8": "^7.6.0" + "webidl-conversions": "^7.0.0" }, "engines": { - "node": ">=8.3.0" + "node": ">=12" } }, - "node_modules/estree-util-attach-comments": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", - "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/domhandler": { + "version": "4.3.1", + "license": "BSD-2-Clause", "dependencies": { - "@types/estree": "^1.0.0" + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/estree-util-attach-comments/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true + "node_modules/dommatrix": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dommatrix/-/dommatrix-1.0.3.tgz", + "integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==", + "deprecated": "dommatrix is no longer maintained. Please use @thednp/dommatrix." }, - "node_modules/estree-util-build-jsx": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", - "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/dompurify": { + "version": "2.3.10", + "license": "(MPL-2.0 OR Apache-2.0)" + }, + "node_modules/domutils": { + "version": "2.8.0", + "license": "BSD-2-Clause", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "estree-walker": "^3.0.0" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/estree-util-is-identifier-name": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", - "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/domutils/node_modules/dom-serializer": { + "version": "1.4.1", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/estree-util-to-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz", - "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==", + "node_modules/dot-case": { + "version": "3.0.4", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "astring": "^1.8.0", - "source-map": "^0.7.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/motdotla/dotenv?sponsor=1" } }, - "node_modules/estree-util-to-js/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "node_modules/dotenv-expand": { + "version": "5.1.0", "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 8" + "license": "BSD-2-Clause" + }, + "node_modules/duplexer": { + "version": "0.1.2", + "license": "MIT" + }, + "node_modules/duplexify": { + "version": "3.7.1", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, - "node_modules/estree-util-visit": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", - "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", + "node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, + "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", + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^2.0.0" + "jake": "^10.8.5" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "node_modules/electron": { + "version": "25.8.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.1.tgz", + "integrity": "sha512-GtcP1nMrROZfFg0+mhyj1hamrHvukfF6of2B/pcWxmWkd5FVY1NJib0tlhiorFZRzQN5Z+APLPr7aMolt7i2AQ==", "dev": true, - "optional": true, - "peer": true, + "hasInstallScript": true, "dependencies": { - "@types/estree": "^1.0.0" + "@electron/get": "^2.0.0", + "@types/node": "^18.11.18", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" } }, - "node_modules/estree-walker/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "node_modules/electron-builder": { + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz", + "integrity": "sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==", "dev": true, - "optional": true, - "peer": true - }, - "node_modules/esutils": { - "version": "2.0.3", - "license": "BSD-2-Clause", + "dependencies": { + "app-builder-lib": "24.6.4", + "builder-util": "24.5.0", + "builder-util-runtime": "9.2.1", + "chalk": "^4.1.2", + "dmg-builder": "24.6.4", + "fs-extra": "^10.1.0", + "is-ci": "^3.0.0", + "lazy-val": "^1.0.5", + "read-config-file": "6.3.2", + "simple-update-notifier": "2.0.0", + "yargs": "^17.6.2" + }, + "bin": { + "electron-builder": "cli.js", + "install-app-deps": "install-app-deps.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" } }, - "node_modules/etag": { - "version": "1.8.1", + "node_modules/electron-builder/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/event-stream": { - "version": "4.0.1", + "node_modules/electron-builder/node_modules/chalk": { + "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { - "duplexer": "^0.1.1", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "license": "MIT", + "node_modules/electron-builder/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": ">=6" + "node": ">=12" } }, - "node_modules/eventemitter2": { - "version": "2.2.2", - "license": "MIT" + "node_modules/electron-builder/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/eventemitter3": { - "version": "4.0.7", + "node_modules/electron-builder/node_modules/color-name": { + "version": "1.1.4", "dev": true, "license": "MIT" }, - "node_modules/events": { - "version": "3.3.0", + "node_modules/electron-builder/node_modules/fs-extra": { + "version": "10.1.0", + "dev": true, "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=0.8.x" + "node": ">=12" } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", + "node_modules/electron-builder/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "engines": { + "node": ">=8" } }, - "node_modules/execa": { - "version": "5.1.1", + "node_modules/electron-builder/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, "license": "MIT", "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" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=8" } }, - "node_modules/exit": { - "version": "0.1.2", + "node_modules/electron-builder/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": ">= 0.8.0" + "node": ">=10" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "devOptional": true, - "license": "MIT", + "node_modules/electron-builder/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, "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" + "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": ">=0.10.0" + "node": ">=12" } }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "devOptional": true, - "license": "MIT", + "node_modules/electron-builder/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/electron-publish": { + "version": "24.5.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.5.0.tgz", + "integrity": "sha512-zwo70suH15L15B4ZWNDoEg27HIYoPsGJUF7xevLJLSI7JUPC8l2yLBdLGwqueJ5XkDL7ucYyRZzxJVR8ElV9BA==", + "dev": true, "dependencies": { - "ms": "2.0.0" + "@types/fs-extra": "^9.0.11", + "builder-util": "24.5.0", + "builder-util-runtime": "9.2.1", + "chalk": "^4.1.2", + "fs-extra": "^10.1.0", + "lazy-val": "^1.0.5", + "mime": "^2.5.2" } }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "devOptional": true, - "license": "MIT", + "node_modules/electron-publish/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": { - "is-descriptor": "^0.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "devOptional": true, - "license": "MIT", + "node_modules/electron-publish/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": { - "is-extendable": "^0.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "devOptional": true, - "license": "MIT", + "node_modules/electron-publish/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": { - "kind-of": "^3.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "devOptional": true, - "license": "MIT", + "node_modules/electron-publish/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/electron-publish/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/expand-brackets/node_modules/is-buffer": { - "version": "1.1.6", - "devOptional": true, - "license": "MIT" + "node_modules/electron-publish/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/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "devOptional": true, - "license": "MIT", + "node_modules/electron-publish/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": { - "kind-of": "^3.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "devOptional": true, + "node_modules/electron-to-chromium": { + "version": "1.4.435", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.435.tgz", + "integrity": "sha512-B0CBWVFhvoQCW/XtjRzgrmqcgVWg6RXOEM/dK59+wFV93BFGR6AeNKc4OyhM+T3IhJaOOG8o/V+33Y2mwJWtzw==" + }, + "node_modules/element-resize-detector": { + "version": "1.2.4", + "dev": true, "license": "MIT", "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "batch-processor": "1.0.0" } }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "devOptional": true, + "node_modules/elliptic": { + "version": "6.5.4", "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "devOptional": true, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "license": "MIT" + }, + "node_modules/emittery": { + "version": "0.13.1", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", + "node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", "devOptional": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "devOptional": true, + "node_modules/encode-utf8": { + "version": "1.0.3", "license": "MIT" }, - "node_modules/expect": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.2.tgz", - "integrity": "sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==", - "dependencies": { - "@jest/expect-utils": "^29.6.2", - "@types/node": "*", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2" - }, + "node_modules/encodeurl": { + "version": "1.0.2", + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.8" } }, - "node_modules/expensify-common": { - "version": "1.0.0", - "resolved": "git+ssh://git@github.com/Expensify/expensify-common.git#1609f1848cc0c2528064519c3ea48b4953a708ee", - "integrity": "sha512-sUd/ky6xCB/mShVaD2nVkedGL2xy+h6Jf5MfX9GOiYX8wB2D8uZSpqswz515uwcp8RDWrA5wxM2cR6pBXNfgxw==", - "license": "MIT", + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "peer": true, "dependencies": { - "classnames": "2.3.1", - "clipboard": "2.0.4", - "html-entities": "^2.3.3", - "jquery": "3.6.0", - "localforage": "^1.10.0", - "lodash": "4.17.21", - "prop-types": "15.7.2", - "react": "16.12.0", - "react-dom": "16.12.0", - "semver": "^7.3.5", - "simply-deferred": "git+https://github.com/Expensify/simply-deferred.git#77a08a95754660c7bd6e0b6979fdf84e8e831bf5", - "string.prototype.replaceall": "^1.0.6", - "ua-parser-js": "^1.0.35", - "underscore": "1.13.1" + "iconv-lite": "^0.6.2" } }, - "node_modules/expensify-common/node_modules/prop-types": { - "version": "15.7.2", + "node_modules/end-of-stream": { + "version": "1.4.4", "license": "MIT", "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" + "once": "^1.4.0" } }, - "node_modules/expensify-common/node_modules/react": { - "version": "16.12.0", + "node_modules/endent": { + "version": "2.1.0", + "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" + "dedent": "^0.7.0", + "fast-json-parse": "^1.0.3", + "objectorarray": "^1.0.5" } }, - "node_modules/expensify-common/node_modules/react-dom": { - "version": "16.12.0", + "node_modules/engine.io-client": { + "version": "6.2.2", "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "prop-types": "^15.6.2", - "scheduler": "^0.18.0" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + } + }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "8.2.3", + "license": "MIT", + "engines": { + "node": ">=10.0.0" }, "peerDependencies": { - "react": "^16.0.0" + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/expensify-common/node_modules/scheduler": { - "version": "0.18.0", + "node_modules/engine.io-parser": { + "version": "5.0.4", "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" + "engines": { + "node": ">=10.0.0" } }, - "node_modules/expensify-common/node_modules/ua-parser-js": { - "version": "1.0.35", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "license": "MIT", + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "devOptional": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, "engines": { - "node": "*" + "node": ">=10.13.0" } }, - "node_modules/expensify-common/node_modules/underscore": { - "version": "1.13.1", - "license": "MIT" + "node_modules/enhanced-resolve/node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "devOptional": true, + "engines": { + "node": ">=6" + } }, - "node_modules/express": { - "version": "4.18.1", + "node_modules/enquirer": { + "version": "2.3.6", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.10.3", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "ansi-colors": "^4.1.1" }, "engines": { - "node": ">= 0.10.0" + "node": ">=8.6" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "node_modules/entities": { + "version": "2.2.0", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "dev": true, + "node_modules/enumerate-devices": { + "version": "1.1.1", "license": "MIT" }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.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/env-paths": { + "version": "2.2.1", "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" - } - ], - "license": "MIT" - }, - "node_modules/extend": { - "version": "3.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/extend-shallow": { - "version": "3.0.2", "license": "MIT", - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "dev": true, + "node_modules/envinfo": { + "version": "7.8.1", "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "bin": { + "envinfo": "dist/cli.js" }, "engines": { "node": ">=4" } }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } + "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/external-editor/node_modules/tmp": { - "version": "0.0.33", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true }, - "node_modules/extglob": { - "version": "2.0.4", - "devOptional": true, + "node_modules/errno": { + "version": "0.1.8", "license": "MIT", "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" + "prr": "~1.0.1" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "errno": "cli.js" } }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "devOptional": true, + "node_modules/error-ex": { + "version": "1.3.2", "license": "MIT", "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "is-arrayish": "^0.2.1" } }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "devOptional": true, + "node_modules/error-stack-parser": { + "version": "2.1.4", "license": "MIT", "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "stackframe": "^1.3.4" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/errorhandler": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" + "accepts": "~1.3.7", + "escape-html": "~1.0.3" }, "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "node": ">= 0.8" } }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "dev": true, - "license": "MIT", + "node_modules/es-abstract": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", "dependencies": { - "pump": "^3.0.0" + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "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.1", + "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.5.0", + "safe-array-concat": "^1.0.0", + "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-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/extsprintf": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", - "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "optional": true - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.2.0", + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-equals": { - "version": "4.0.3", "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "node_modules/es-get-iterator": { + "version": "1.1.2", "dev": true, + "license": "MIT", "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" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" }, - "engines": { - "node": ">=8.6.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-json-parse": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-patch": { - "version": "2.2.1", + "node_modules/es-iterator-helpers": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.13.tgz", + "integrity": "sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA==", "dev": true, - "license": "MIT", "dependencies": { - "fast-deep-equal": "^2.0.1" - }, - "engines": { - "node": ">= 0.4.0" + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.21.3", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.0", + "safe-array-concat": "^1.0.0" } }, - "node_modules/fast-json-patch/node_modules/fast-deep-equal": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "dev": true, - "license": "MIT" + "node_modules/es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", + "devOptional": true }, - "node_modules/fast-xml-parser": { - "version": "4.2.7", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.7.tgz", - "integrity": "sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==", - "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], + "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==", "dependencies": { - "strnum": "^1.0.5" + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "dev": true, - "license": "MIT", "engines": { - "node": ">= 4.9.1" + "node": ">= 0.4" } }, - "node_modules/fastq": { - "version": "1.13.0", + "node_modules/es-shim-unscopables": { + "version": "1.0.0", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "reusify": "^1.0.4" + "has": "^1.0.3" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "dev": true, - "license": "Apache-2.0", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "license": "MIT", "dependencies": { - "websocket-driver": ">=0.5.1" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fbjs": { - "version": "3.0.4", + "node_modules/es5-shim": { + "version": "4.6.7", + "dev": true, "license": "MIT", - "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" + "engines": { + "node": ">=0.4.0" } }, - "node_modules/fbjs-css-vars": { - "version": "1.0.2", + "node_modules/es6-error": { + "version": "4.1.1", + "dev": true, "license": "MIT" }, - "node_modules/fd-slicer": { + "node_modules/es6-object-assign": { "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - } + "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", + "integrity": "sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw==", + "dev": true }, - "node_modules/fetch-retry": { - "version": "5.0.3", + "node_modules/es6-shim": { + "version": "0.35.6", "dev": true, "license": "MIT" }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "dev": true, - "license": "ISC" - }, - "node_modules/figures": { - "version": "3.2.0", + "node_modules/esbuild": { + "version": "0.18.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.18.tgz", + "integrity": "sha512-UckDPWvdVJLNT0npk5AMTpVwGRQhS76rWFLmHwEtgNvWlR9sgVV1eyc/oeBtM86q9s8ABBLMmm0CwNxhVemOiw==", "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">=8" + "node": ">=12" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "@esbuild/android-arm": "0.18.18", + "@esbuild/android-arm64": "0.18.18", + "@esbuild/android-x64": "0.18.18", + "@esbuild/darwin-arm64": "0.18.18", + "@esbuild/darwin-x64": "0.18.18", + "@esbuild/freebsd-arm64": "0.18.18", + "@esbuild/freebsd-x64": "0.18.18", + "@esbuild/linux-arm": "0.18.18", + "@esbuild/linux-arm64": "0.18.18", + "@esbuild/linux-ia32": "0.18.18", + "@esbuild/linux-loong64": "0.18.18", + "@esbuild/linux-mips64el": "0.18.18", + "@esbuild/linux-ppc64": "0.18.18", + "@esbuild/linux-riscv64": "0.18.18", + "@esbuild/linux-s390x": "0.18.18", + "@esbuild/linux-x64": "0.18.18", + "@esbuild/netbsd-x64": "0.18.18", + "@esbuild/openbsd-x64": "0.18.18", + "@esbuild/sunos-x64": "0.18.18", + "@esbuild/win32-arm64": "0.18.18", + "@esbuild/win32-ia32": "0.18.18", + "@esbuild/win32-x64": "0.18.18" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", + "node_modules/esbuild-register": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.4.2.tgz", + "integrity": "sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "esbuild": ">=0.12 <1" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "dev": true, + "node_modules/escalade": { + "version": "3.1.1", "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=6" } }, - "node_modules/file-loader": { - "version": "6.2.0", - "devOptional": true, + "node_modules/escape-html": { + "version": "1.0.3", + "license": "MIT" + }, + "node_modules/escape-latex": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/escape-latex/-/escape-latex-1.2.0.tgz", + "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", "license": "MIT", - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, "engines": { - "node": ">= 10.13.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/file-system-cache": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "fs-extra": "^10.1.0", - "ramda": "^0.28.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-system-cache/node_modules/fs-extra": { - "version": "10.1.0", + "node_modules/escodegen": { + "version": "2.0.0", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=12" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/file-system-cache/node_modules/ramda": { - "version": "0.28.0", + "node_modules/eslint": { + "version": "7.32.0", "dev": true, "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ramda" - } - }, - "node_modules/file-type": { - "version": "12.4.2", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", - "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "optional": true + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", "dev": true, "dependencies": { - "minimatch": "^5.0.1" + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" } }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/eslint-config-airbnb-typescript": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", + "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "eslint-config-airbnb-base": "^15.0.0" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0", + "@typescript-eslint/parser": "^5.0.0 || ^6.0.0", + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3" } }, - "node_modules/fill-range": { - "version": "7.0.1", + "node_modules/eslint-config-expensify": { + "version": "2.0.39", + "resolved": "https://registry.npmjs.org/eslint-config-expensify/-/eslint-config-expensify-2.0.39.tgz", + "integrity": "sha512-DIxR3k99ZIDPE2NK+WLLRWpoDq06gTXdY8XZg9Etd1UqZ7fXm/Yz3/QkTxu7CH7UaXbCH3P4PTo023ULQGKOSw==", + "dev": true, + "dependencies": { + "@lwc/eslint-plugin-lwc": "^0.11.0", + "babel-eslint": "^10.1.0", + "eslint": "6.8.0", + "eslint-config-airbnb": "18.0.1", + "eslint-config-airbnb-base": "14.0.0", + "eslint-plugin-es": "^4.1.0", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-jsx-a11y": "6.2.3", + "eslint-plugin-react": "7.18.0", + "eslint-plugin-rulesdir": "^0.2.0", + "lodash": "^4.17.21", + "underscore": "^1.13.1" + } + }, + "node_modules/eslint-config-expensify/node_modules/ajv": { + "version": "6.12.6", + "dev": true, "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "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==", + "node_modules/eslint-config-expensify/node_modules/astral-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/finalhandler": { - "version": "1.2.0", + "node_modules/eslint-config-expensify/node_modules/cross-spawn": { + "version": "6.0.5", "dev": true, "license": "MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" + "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": ">= 0.8" + "node": ">=4.8" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", + "node_modules/eslint-config-expensify/node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" + "bin": { + "semver": "bin/semver" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", + "node_modules/eslint-config-expensify/node_modules/emoji-regex": { + "version": "7.0.3", "dev": true, "license": "MIT" }, - "node_modules/find-babel-config": { - "version": "2.0.0", + "node_modules/eslint-config-expensify/node_modules/eslint": { + "version": "6.8.0", "dev": true, "license": "MIT", "dependencies": { - "json5": "^2.1.1", - "path-exists": "^4.0.0" + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=16.0.0" + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/find-babel-config/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/eslint-config-expensify/node_modules/eslint-config-airbnb": { + "version": "18.0.1", "dev": true, "license": "MIT", + "dependencies": { + "eslint-config-airbnb-base": "^14.0.0", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" + }, "engines": { - "node": ">=8" + "node": ">= 6" + }, + "peerDependencies": { + "eslint": "^5.16.0 || ^6.1.0", + "eslint-plugin-import": "^2.18.2", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.14.3", + "eslint-plugin-react-hooks": "^1.7.0" } }, - "node_modules/find-cache-dir": { - "version": "2.1.0", + "node_modules/eslint-config-expensify/node_modules/eslint-config-airbnb-base": { + "version": "14.0.0", + "dev": true, "license": "MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "confusing-browser-globals": "^1.0.7", + "object.assign": "^4.1.0", + "object.entries": "^1.1.0" }, "engines": { - "node": ">=6" + "node": ">= 6" + }, + "peerDependencies": { + "eslint": "^5.16.0 || ^6.1.0", + "eslint-plugin-import": "^2.18.2" } }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "3.0.0", + "node_modules/eslint-config-expensify/node_modules/eslint-plugin-jsx-a11y": { + "version": "6.2.3", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^3.0.0" + "@babel/runtime": "^7.4.5", + "aria-query": "^3.0.0", + "array-includes": "^3.0.3", + "ast-types-flow": "^0.0.7", + "axobject-query": "^2.0.2", + "damerau-levenshtein": "^1.0.4", + "emoji-regex": "^7.0.2", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.1" }, "engines": { - "node": ">=6" + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6" } }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "3.0.0", + "node_modules/eslint-config-expensify/node_modules/eslint-plugin-react": { + "version": "7.18.0", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.14.2" }, "engines": { - "node": ">=6" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" } }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/eslint-config-expensify/node_modules/eslint-plugin-react-hooks": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=7" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/eslint-config-expensify/node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-config-expensify/node_modules/eslint-utils": { + "version": "1.4.3", + "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "eslint-visitor-keys": "^1.1.0" }, "engines": { "node": ">=6" + } + }, + "node_modules/eslint-config-expensify/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-config-expensify/node_modules/espree": { + "version": "6.2.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "3.0.0", + "node_modules/eslint-config-expensify/node_modules/file-entry-cache": { + "version": "5.0.1", + "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" + "flat-cache": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "3.0.0", + "node_modules/eslint-config-expensify/node_modules/flat-cache": { + "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { - "find-up": "^3.0.0" + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/find-up": { - "version": "5.0.0", + "node_modules/eslint-config-expensify/node_modules/flatted": { + "version": "2.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/eslint-config-expensify/node_modules/globals": { + "version": "12.4.0", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "type-fest": "^0.8.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-up/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/eslint-config-expensify/node_modules/ignore": { + "version": "4.0.6", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/find-yarn-workspace-root": { + "node_modules/eslint-config-expensify/node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "license": "Apache-2.0", - "dependencies": { - "micromatch": "^4.0.2" + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/flat-cache": { - "version": "3.0.4", + "node_modules/eslint-config-expensify/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-config-expensify/node_modules/jsx-ast-utils": { + "version": "2.4.1", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=4.0" } }, - "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-enums-runtime": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.5.tgz", - "integrity": "sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ==" - }, - "node_modules/flow-parser": { - "version": "0.206.0", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz", - "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==", + "node_modules/eslint-config-expensify/node_modules/levn": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, "engines": { - "node": ">=0.4.0" + "node": ">= 0.8.0" } }, - "node_modules/flush-write-stream": { - "version": "1.1.1", + "node_modules/eslint-config-expensify/node_modules/mkdirp": { + "version": "0.5.6", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "node_modules/eslint-config-expensify/node_modules/path-key": { + "version": "2.0.1", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "license": "MIT", "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node": ">=4" } }, - "node_modules/for-each": { - "version": "0.3.3", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" + "node_modules/eslint-config-expensify/node_modules/prelude-ls": { + "version": "1.1.2", + "dev": true, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/for-in": { - "version": "1.0.2", + "node_modules/eslint-config-expensify/node_modules/regexpp": { + "version": "2.0.1", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=6.5.0" } }, - "node_modules/foreground-child": { - "version": "2.0.0", + "node_modules/eslint-config-expensify/node_modules/rimraf": { + "version": "2.6.3", "dev": true, "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" + "glob": "^7.1.3" }, - "engines": { - "node": ">=8.0.0" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/fork-ts-checker-webpack-plugin": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", - "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", + "node_modules/eslint-config-expensify/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "chokidar": "^3.4.2", - "cosmiconfig": "^6.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "glob": "^7.1.6", - "memfs": "^3.1.2", - "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=10", - "yarn": ">=1.0.0" - }, - "peerDependencies": { - "eslint": ">= 6", - "typescript": ">= 2.7", - "vue-template-compiler": "*", - "webpack": ">= 4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - }, - "vue-template-compiler": { - "optional": true - } + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", + "node_modules/eslint-config-expensify/node_modules/shebang-command": { + "version": "1.2.0", "dev": true, "license": "MIT", "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" + "shebang-regex": "^1.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", + "node_modules/eslint-config-expensify/node_modules/shebang-regex": { + "version": "1.0.0", "dev": true, "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/eslint-config-expensify/node_modules/slice-ansi": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { - "version": "4.1.2", + "node_modules/eslint-config-expensify/node_modules/string-width": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/eslint-config-expensify/node_modules/strip-ansi": { + "version": "5.2.0", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { - "version": "1.1.4", + "node_modules/eslint-config-expensify/node_modules/table": { + "version": "5.4.6", "dev": true, - "license": "MIT" + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { - "version": "6.0.0", + "node_modules/eslint-config-expensify/node_modules/type-check": { + "version": "0.3.2", "dev": true, "license": "MIT", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.7.2" + "prelude-ls": "~1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/eslint-config-expensify/node_modules/type-fest": { + "version": "0.8.1", "dev": true, - "license": "MIT", + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", + "node_modules/eslint-config-expensify/node_modules/which": { + "version": "1.3.1", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "isexe": "^2.0.0" }, - "engines": { - "node": ">= 8.9.0" + "bin": { + "which": "bin/which" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "debug": "^3.2.7", + "resolve": "^1.20.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", "dev": true, - "engines": { - "node": ">= 6" + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/form-data": { - "version": "3.0.1", + "node_modules/eslint-module-utils": { + "version": "2.7.4", "dev": true, "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "debug": "^3.2.7" }, "engines": { - "node": ">= 6" + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/forwarded": { - "version": "0.2.0", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "node_modules/eslint-plugin-es": { + "version": "4.1.0", "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, "engines": { - "node": "*" + "node": ">=8.10.0" }, "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "devOptional": true, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "dev": true, "license": "MIT", "dependencies": { - "map-cache": "^0.2.2" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/fresh": { - "version": "0.5.2", - "license": "MIT", + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/from": { - "version": "0.1.7", - "license": "MIT" - }, - "node_modules/from2": { - "version": "2.3.0", + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/fs-extra": { - "version": "9.1.0", - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" }, "engines": { - "node": ">=10" + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", + "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=0.8.0" } }, - "node_modules/fs-monkey": { - "version": "1.0.3", - "dev": true, - "license": "Unlicense" - }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", + "node_modules/eslint-plugin-flowtype": { + "version": "2.50.3", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "lodash": "^4.17.10" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=4" + }, + "peerDependencies": { + "eslint": ">=2.0.0" } }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" }, "engines": { - "node": ">= 0.4" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", "dev": true, - "license": "MIT" - }, - "node_modules/functions-have-names": { - "version": "1.2.3", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/gauge": { - "version": "3.0.2", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" + "esutils": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-jest": { + "version": "24.7.0", + "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/experimental-utils": "^4.0.1" + }, "engines": { - "node": ">=6.9.0" + "node": ">=10" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": ">= 4", + "eslint": ">=5" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } } }, - "node_modules/geojson-rbush": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz", - "integrity": "sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==", + "node_modules/eslint-plugin-jsdoc": { + "version": "46.2.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-46.2.6.tgz", + "integrity": "sha512-zIaK3zbSrKuH12bP+SPybPgcHSM6MFzh3HFeaODzmsF1N8C1l8dzJ22cW1aq4g0+nayU1VMjmNf7hg0dpShLrA==", + "dev": true, "dependencies": { - "@turf/bbox": "*", - "@turf/helpers": "6.x", - "@turf/meta": "6.x", - "@types/geojson": "7946.0.8", - "rbush": "^3.0.1" - } - }, - "node_modules/geojson-vt": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", - "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==" - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "license": "ISC", + "@es-joy/jsdoccomment": "~0.39.4", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.3.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "is-builtin-module": "^3.2.1", + "semver": "^7.5.1", + "spdx-expression-parse": "^3.0.1" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=16" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "dev": true, "dependencies": { - "function-bind": "^1.1.1", + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "dequal": "^2.0.3" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "license": "MIT", - "engines": { - "node": ">=8.0.0" + "node_modules/eslint-plugin-jsx-a11y/node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" } }, - "node_modules/get-stdin": { - "version": "6.0.0", + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-prettier": { + "version": "3.1.2", "dev": true, "license": "MIT", + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "eslint": ">= 5.0.0", + "prettier": ">= 1.13.0" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "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.1", + "string.prototype.matchall": "^4.0.8" + }, "engines": { "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/get-stream": { - "version": "6.0.1", + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "dev": true, "license": "MIT", "engines": { "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", + "node_modules/eslint-plugin-react-native": { + "version": "3.11.0", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "@babel/traverse": "^7.7.4", + "eslint-plugin-react-native-globals": "^0.1.1" + }, + "peerDependencies": { + "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/eslint-plugin-react-native-a11y": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-native-a11y/-/eslint-plugin-react-native-a11y-3.3.0.tgz", + "integrity": "sha512-21bIs/0yROcMq7KtAG+OVNDWAh8M+6scII0iXcO3i9NYHe2xZ443yPs5KSUMSvQJeRLLjuKB7V5saqNjoMWDHA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.15.4", + "ast-types-flow": "^0.0.7", + "jsx-ast-utils": "^3.2.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/get-value": { - "version": "2.0.6", - "license": "MIT", + "node_modules/eslint-plugin-react-native-globals": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/getenv": { - "version": "1.0.0", + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "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/github-slugger": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", - "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/gl-matrix": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", - "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + "node_modules/eslint-plugin-rulesdir": { + "version": "0.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } }, - "node_modules/glob": { - "version": "7.1.6", - "license": "ISC", + "node_modules/eslint-plugin-storybook": { + "version": "0.5.13", + "dev": true, + "license": "MIT", "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" + "@storybook/csf": "^0.0.1", + "@typescript-eslint/experimental-utils": "^5.3.0", + "requireindex": "^1.1.0" }, "engines": { - "node": "*" + "node": "12.x || 14.x || >= 16" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "eslint": ">=6" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "devOptional": true, - "license": "ISC", + "node_modules/eslint-plugin-storybook/node_modules/@storybook/csf": { + "version": "0.0.1", + "dev": true, + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "lodash": "^4.17.15" } }, - "node_modules/glob-promise": { - "version": "3.4.0", + "node_modules/eslint-plugin-storybook/node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", "dev": true, - "license": "ISC", "dependencies": { - "@types/glob": "*" + "@typescript-eslint/utils": "5.62.0" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "glob": "*" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "devOptional": true, - "license": "BSD-2-Clause" - }, - "node_modules/global": { - "version": "4.4.0", + "node_modules/eslint-plugin-you-dont-need-lodash-underscore": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-you-dont-need-lodash-underscore/-/eslint-plugin-you-dont-need-lodash-underscore-6.12.0.tgz", + "integrity": "sha512-WF4mNp+k2532iswT6iUd1BX6qjd3AV4cFy/09VC82GY9SsRtvkxhUIx7JNGSe0/bLyd57oTr4inPFiIaENXhGw==", "dev": true, - "license": "MIT", "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" + "kebab-case": "^1.0.0" + }, + "engines": { + "node": ">=4.0" } }, - "node_modules/global-agent": { - "version": "3.0.0", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/eslint-scope": { + "version": "5.1.1", + "devOptional": true, + "license": "BSD-2-Clause", "dependencies": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=10.0" + "node": ">=8.0.0" } }, - "node_modules/globals": { - "version": "11.12.0", - "license": "MIT", + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "devOptional": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=4" + "node": ">=4.0" } }, - "node_modules/globalthis": { - "version": "1.0.3", + "node_modules/eslint-utils": { + "version": "3.0.0", + "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/globby": { - "version": "11.1.0", + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", "dev": true, - "license": "MIT", - "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" - }, + "license": "Apache-2.0", "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/good-listener": { - "version": "1.2.2", + "node_modules/eslint/node_modules/@babel/code-frame": { + "version": "7.12.11", + "dev": true, "license": "MIT", "dependencies": { - "delegate": "^3.1.2" + "@babel/highlight": "^7.10.4" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.3" + "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": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/got": { - "version": "11.8.6", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10.19.0" + "node": ">=8" }, "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/grid-index": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", - "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==" - }, - "node_modules/gzip-size": { - "version": "6.0.0", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", "dev": true, "license": "MIT", "dependencies": { - "duplexer": "^0.1.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/handle-thing": { + "node_modules/eslint/node_modules/color-convert": { "version": "2.0.1", "dev": true, - "license": "MIT" - }, - "node_modules/handlebars": { - "version": "4.7.7", - "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "node": ">=7.0.0" } }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" }, - "node_modules/has-ansi": { - "version": "2.0.0", + "node_modules/eslint/node_modules/eslint-utils": { + "version": "2.1.0", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", + "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "license": "MIT", + "node_modules/eslint/node_modules/globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-flag": { - "version": "3.0.0", + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/has-glob": { - "version": "1.0.0", + "node_modules/eslint/node_modules/ignore": { + "version": "4.0.6", "dev": true, "license": "MIT", - "dependencies": { - "is-glob": "^3.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/has-glob/node_modules/is-glob": { - "version": "3.1.0", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, - "license": "MIT", "dependencies": { - "is-extglob": "^2.1.0" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "has-flag": "^4.0.0" }, - "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==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "license": "MIT", + "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": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "license": "MIT", + "node_modules/espree": { + "version": "7.3.1", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "has-symbols": "^1.0.2" + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/has-unicode": { - "version": "2.0.1", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", "dev": true, - "license": "ISC" - }, - "node_modules/has-value": { - "version": "1.0.0", - "devOptional": true, - "license": "MIT", - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/has-values": { - "version": "1.0.0", - "devOptional": true, - "license": "MIT", - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "node_modules/esprima": { + "version": "4.0.1", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/has-values/node_modules/is-buffer": { - "version": "1.1.6", - "devOptional": true, - "license": "MIT" - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "devOptional": true, - "license": "MIT", + "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": { - "kind-of": "^3.0.2" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10" } }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", + "node_modules/esrecurse": { + "version": "4.3.0", "devOptional": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "is-buffer": "^1.1.5" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", + "node_modules/estraverse": { + "version": "5.3.0", "devOptional": true, - "license": "MIT", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/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" - }, + "license": "BSD-2-Clause", "engines": { - "node": ">= 6" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/hash.js": { - "version": "1.1.7", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hast-to-hyperscript": { - "version": "9.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.3", - "comma-separated-tokens": "^1.0.0", - "property-information": "^5.3.0", - "space-separated-tokens": "^1.0.0", - "style-to-object": "^0.3.0", - "unist-util-is": "^4.0.0", - "web-namespaces": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/parse5": "^5.0.0", - "hastscript": "^6.0.0", - "property-information": "^5.0.0", - "vfile": "^4.0.0", - "vfile-location": "^3.2.0", - "web-namespaces": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "2.2.5", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node": ">=4.0" } }, - "node_modules/hast-util-raw": { - "version": "6.0.1", + "node_modules/estree-to-babel": { + "version": "3.2.1", "dev": true, "license": "MIT", "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^6.0.0", - "hast-util-to-parse5": "^6.0.0", - "html-void-elements": "^1.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^3.0.0", - "vfile": "^4.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" + "@babel/traverse": "^7.1.6", + "@babel/types": "^7.2.0", + "c8": "^7.6.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8.3.0" } }, - "node_modules/hast-util-to-estree": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz", - "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==", + "node_modules/estree-util-attach-comments": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", + "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==", "dev": true, "optional": true, "peer": true, "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "estree-util-attach-comments": "^2.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.4.1", - "unist-util-position": "^4.0.0", - "zwitch": "^2.0.0" + "@types/estree": "^1.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-estree/node_modules/@types/estree": { + "node_modules/estree-util-attach-comments/node_modules/@types/estree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", @@ -29930,61 +29757,72 @@ "optional": true, "peer": true }, - "node_modules/hast-util-to-estree/node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "node_modules/estree-util-build-jsx": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", + "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", "dev": true, "optional": true, "peer": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-walker": "^3.0.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-estree/node_modules/property-information": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", - "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==", + "node_modules/estree-util-is-identifier-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", + "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", "dev": true, "optional": true, "peer": true, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-estree/node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "node_modules/estree-util-to-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz", + "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==", "dev": true, "optional": true, "peer": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-estree/node_modules/style-to-object": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.2.tgz", - "integrity": "sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==", + "node_modules/estree-util-to-js/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "optional": true, "peer": true, - "dependencies": { - "inline-style-parser": "0.1.1" + "engines": { + "node": ">= 8" } }, - "node_modules/hast-util-to-estree/node_modules/unist-util-position": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "node_modules/estree-util-visit": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", + "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", "dev": true, "optional": true, "peer": true, "dependencies": { + "@types/estree-jsx": "^1.0.0", "@types/unist": "^2.0.0" }, "funding": { @@ -29992,736 +29830,792 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-estree/node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "optional": true, "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/hast-util-to-parse5": { - "version": "6.0.0", - "dev": true, - "license": "MIT", "dependencies": { - "hast-to-hyperscript": "^9.0.0", - "property-information": "^5.0.0", - "web-namespaces": "^1.0.0", - "xtend": "^4.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/estree": "^1.0.0" } }, - "node_modules/hast-util-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "node_modules/estree-walker/node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true, "optional": true, - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "peer": true + }, + "node_modules/esutils": { + "version": "2.0.3", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/hastscript": { - "version": "6.0.0", - "dev": true, + "node_modules/etag": { + "version": "1.8.1", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-stream": { + "version": "4.0.1", "license": "MIT", "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-parse-selector": "^2.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" } }, - "node_modules/he": { - "version": "1.2.0", - "dev": true, + "node_modules/event-target-shim": { + "version": "5.0.1", "license": "MIT", - "bin": { - "he": "bin/he" + "engines": { + "node": ">=6" } }, - "node_modules/hermes-estree": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.12.0.tgz", - "integrity": "sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw==" + "node_modules/eventemitter2": { + "version": "2.2.2", + "license": "MIT" }, - "node_modules/hermes-parser": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.12.0.tgz", - "integrity": "sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==", + "node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "license": "MIT", "dependencies": { - "hermes-estree": "0.12.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "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==", + "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": "5.1.1", + "license": "MIT", "dependencies": { - "source-map": "^0.7.3" + "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": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "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==", + "node_modules/exit": { + "version": "0.1.2", "engines": { - "node": ">= 8" + "node": ">= 0.8.0" } }, - "node_modules/history": { - "version": "4.5.1", + "node_modules/expand-brackets": { + "version": "2.1.4", + "devOptional": true, "license": "MIT", "dependencies": { - "invariant": "^2.2.1", - "loose-envify": "^1.2.0", - "resolve-pathname": "^2.0.0", - "value-equal": "^0.2.0", - "warning": "^3.0.0" + "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/hmac-drbg": { - "version": "1.0.1", + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "devOptional": true, "license": "MIT", "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "ms": "2.0.0" } }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "license": "BSD-3-Clause", + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "devOptional": true, + "license": "MIT", "dependencies": { - "react-is": "^16.7.0" + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "devOptional": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/hpack.js": { - "version": "2.1.6", - "dev": true, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "devOptional": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "dev": true, + "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "devOptional": true, "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/html-entities": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.5.tgz", - "integrity": "sha512-72TJlcMkYsEJASa/3HnX7VT59htM7iSHbH59NSZbtc+22Ap0Txnlx91sfeB+/A7wNZg7UxtZdhAW4y+/jimrdg==" - }, - "node_modules/html-escaper": { - "version": "2.0.2", + "node_modules/expand-brackets/node_modules/is-buffer": { + "version": "1.1.6", + "devOptional": true, "license": "MIT" }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "dev": true, + "node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "devOptional": true, "license": "MIT", "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" + "kind-of": "^3.0.2" }, "engines": { - "node": ">=12" - } - }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" + "node": ">=0.10.0" } }, - "node_modules/html-tags": { - "version": "3.2.0", - "dev": true, + "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "devOptional": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "is-buffer": "^1.1.5" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/html-void-elements": { - "version": "1.0.5", - "dev": true, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "devOptional": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/html-webpack-plugin": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", - "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", - "dev": true, "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" + "node": ">=0.10.0" } }, - "node_modules/html-webpack-plugin/node_modules/tapable": { - "version": "2.2.1", - "dev": true, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/htmlparser2": { - "version": "7.2.0", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], + "node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "devOptional": true, "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.2", - "domutils": "^2.8.0", - "entities": "^3.0.1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "3.0.1", - "license": "BSD-2-Clause", "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "dev": true, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "devOptional": true, "license": "MIT" }, - "node_modules/http-errors": { - "version": "2.0.0", - "license": "MIT", + "node_modules/expect": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.6.2.tgz", + "integrity": "sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA==", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "@jest/expect-utils": "^29.6.2", + "@types/node": "*", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2" }, "engines": { - "node": ">= 0.8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "dev": true, - "license": "MIT" + "node_modules/expensify-common": { + "version": "1.0.0", + "resolved": "git+ssh://git@github.com/Expensify/expensify-common.git#1609f1848cc0c2528064519c3ea48b4953a708ee", + "integrity": "sha512-sUd/ky6xCB/mShVaD2nVkedGL2xy+h6Jf5MfX9GOiYX8wB2D8uZSpqswz515uwcp8RDWrA5wxM2cR6pBXNfgxw==", + "license": "MIT", + "dependencies": { + "classnames": "2.3.1", + "clipboard": "2.0.4", + "html-entities": "^2.3.3", + "jquery": "3.6.0", + "localforage": "^1.10.0", + "lodash": "4.17.21", + "prop-types": "15.7.2", + "react": "16.12.0", + "react-dom": "16.12.0", + "semver": "^7.3.5", + "simply-deferred": "git+https://github.com/Expensify/simply-deferred.git#77a08a95754660c7bd6e0b6979fdf84e8e831bf5", + "string.prototype.replaceall": "^1.0.6", + "ua-parser-js": "^1.0.35", + "underscore": "1.13.1" + } }, - "node_modules/http-proxy": { - "version": "1.18.1", - "dev": true, + "node_modules/expensify-common/node_modules/prop-types": { + "version": "15.7.2", "license": "MIT", "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "dev": true, + "node_modules/expensify-common/node_modules/react": { + "version": "16.12.0", "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" }, "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "dev": true, + "node_modules/expensify-common/node_modules/react-dom": { + "version": "16.12.0", "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.18.0" }, "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } + "react": "^16.0.0" } }, - "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { - "version": "3.0.0", - "dev": true, + "node_modules/expensify-common/node_modules/scheduler": { + "version": "0.18.0", "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" } }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "dev": true, + "node_modules/expensify-common/node_modules/ua-parser-js": { + "version": "1.0.35", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, "engines": { - "node": ">=10.19.0" + "node": "*" } }, - "node_modules/https-browserify": { - "version": "1.0.0", + "node_modules/expensify-common/node_modules/underscore": { + "version": "1.13.1", "license": "MIT" }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "dev": true, - "license": "MIT", + "node_modules/expo": { + "version": "49.0.13", + "resolved": "https://registry.npmjs.org/expo/-/expo-49.0.13.tgz", + "integrity": "sha512-k2QFmT5XN490ksjKJgogfS5SFj6ZKCu1GwWz4VUV4S9gkPjzr8zQAZoVPKaWxUYRb6xDpTJXdhLt7gSnV3bJvw==", "dependencies": { - "agent-base": "6", - "debug": "4" + "@babel/runtime": "^7.20.0", + "@expo/cli": "0.10.13", + "@expo/config": "8.1.2", + "@expo/config-plugins": "7.2.5", + "@expo/vector-icons": "^13.0.0", + "babel-preset-expo": "~9.5.2", + "expo-application": "~5.3.0", + "expo-asset": "~8.10.1", + "expo-constants": "~14.4.2", + "expo-file-system": "~15.4.4", + "expo-font": "~11.4.0", + "expo-keep-awake": "~12.3.0", + "expo-modules-autolinking": "1.5.1", + "expo-modules-core": "1.5.11", + "fbemitter": "^3.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" }, - "engines": { - "node": ">= 6" + "bin": { + "expo": "bin/cli" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" + "node_modules/expo-application": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.3.1.tgz", + "integrity": "sha512-HR2+K+Hm33vLw/TfbFaHrvUbRRNRco8R+3QaCKy7eJC2LFfT05kZ15ynGaKfB5DJ/oqPV3mxXVR/EfwmE++hoA==", + "peerDependencies": { + "expo": "*" } }, - "node_modules/husky": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", - "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", - "dev": true, - "hasInstallScript": true, + "node_modules/expo-asset": { + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.10.1.tgz", + "integrity": "sha512-5VMTESxgY9GBsspO/esY25SKEa7RyascVkLe/OcL1WgblNFm7xCCEEUIW8VWS1nHJQGYxpMZPr3bEfjMpdWdyA==", "dependencies": { - "cosmiconfig": "^5.0.7", - "execa": "^1.0.0", - "find-up": "^3.0.0", - "get-stdin": "^6.0.0", - "is-ci": "^2.0.0", - "pkg-dir": "^3.0.0", - "please-upgrade-node": "^3.1.1", - "read-pkg": "^4.0.1", - "run-node": "^1.0.0", - "slash": "^2.0.0" - }, - "bin": { - "husky-upgrade": "lib/upgrader/bin.js" - }, - "engines": { - "node": ">=6" + "blueimp-md5": "^2.10.0", + "expo-constants": "~14.4.2", + "expo-file-system": "~15.4.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "path-browserify": "^1.0.0", + "url-parse": "^1.5.9" } }, - "node_modules/husky/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==", - "dev": true + "node_modules/expo-asset/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/husky/node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, + "node_modules/expo-constants": { + "version": "14.4.2", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.4.2.tgz", + "integrity": "sha512-nOB122DOAjk+KrJT69lFQAoYVQGQjFHSigCPVBzVdko9S1xGsfiOH9+X5dygTsZTIlVLpQJDdmZ7ONiv3i+26w==", "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "@expo/config": "~8.1.0", + "uuid": "^3.3.2" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "expo": "*" } }, - "node_modules/husky/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==", - "dev": true, - "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-constants/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/husky/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, + "node_modules/expo-file-system": { + "version": "15.4.4", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.4.4.tgz", + "integrity": "sha512-F0xS88D85F7qVQ61r0qBnzh6VW/s6iIl+VaQEEi2nAIOQHw1JIEj4yCXPLTtbyn5VmArbe2dSL3KYz1V+BLkKA==", "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" + "uuid": "^3.4.0" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "expo": "*" } }, - "node_modules/husky/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==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" + "node_modules/expo-file-system/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/husky/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==", - "dev": true, + "node_modules/expo-font": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.4.0.tgz", + "integrity": "sha512-nkmezCFD7gR/I6R+e3/ry18uEfF8uYrr6h+PdBJu+3dawoLOpo+wFb/RG9bHUekU1/cPanR58LR7G5MEMKHR2w==", "dependencies": { - "pump": "^3.0.0" + "fontfaceobserver": "^2.1.0" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "expo": "*" } }, - "node_modules/husky/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==", - "dev": true, - "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" + "node_modules/expo-keep-awake": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.3.0.tgz", + "integrity": "sha512-ujiJg1p9EdCOYS05jh5PtUrfiZnK0yyLy+UewzqrjUqIT8eAGMQbkfOn3C3fHE7AKd5AefSMzJnS3lYZcZYHDw==", + "peerDependencies": { + "expo": "*" } }, - "node_modules/husky/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==", - "dev": true, + "node_modules/expo-modules-autolinking": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.5.1.tgz", + "integrity": "sha512-yt5a1VCp2BF9CrsO689PCD5oXKP14MMhnOanQMvDn4BDpURYfzAlDVGC5fZrNQKtwn/eq3bcrxIwZ7D9QjVVRg==", "dependencies": { - "ci-info": "^2.0.0" + "@expo/config": "~8.1.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0" }, "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/husky/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==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "expo-modules-autolinking": "bin/expo-modules-autolinking.js" } }, - "node_modules/husky/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==", - "dev": true, + "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": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" - } - }, - "node_modules/husky/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==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" + "node": ">=8" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/husky/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==", - "dev": true, + "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": { - "p-try": "^2.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/husky/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==", - "dev": true, + "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": { - "p-limit": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/husky/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==", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, + "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/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": ">=4" + "node": ">= 10" } }, - "node_modules/husky/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==", - "dev": true, + "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": ">=4" + "node": ">=8" } }, - "node_modules/husky/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==", - "dev": true, + "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": { - "find-up": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/husky/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==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/husky/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node_modules/expo-modules-core": { + "version": "1.5.11", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.5.11.tgz", + "integrity": "sha512-1Dj2t74nVjxq6xEQf2b9WFfAMhPzVnR0thY0PfRFgob4STyj3sq1U4PIHVWvKQBtDKIa227DrNRb+Hu+LqKWQg==", + "dependencies": { + "compare-versions": "^3.4.0", + "invariant": "^2.2.4" } }, - "node_modules/husky/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==", - "dev": true, + "node_modules/expo/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": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@babel/highlight": "^7.10.4" } }, - "node_modules/husky/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==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/expo/node_modules/@expo/config-plugins": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz", + "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==", + "dependencies": { + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "~8.2.37", + "@expo/plist": "^0.0.20", + "@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.5.3", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.6.0" } }, - "node_modules/husky/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true, + "node_modules/expo/node_modules/@expo/config-types": { + "version": "49.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz", + "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==" + }, + "node_modules/expo/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/node_modules/@expo/plist": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", + "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", + "dependencies": { + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "node_modules/expo/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": ">=6" + "node": ">=8" } }, - "node_modules/husky/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, + "node_modules/expo/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": { - "isexe": "^2.0.0" + "color-convert": "^2.0.1" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/hyphenate-style-name": { - "version": "1.0.4", - "license": "BSD-3-Clause" + "node_modules/expo/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/iconv-corefoundation": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", - "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", - "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/expo/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": { - "cli-truncate": "^2.1.0", - "node-addon-api": "^1.6.3" + "color-name": "~1.1.4" }, "engines": { - "node": "^8.11.2 || >=10" + "node": ">=7.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "devOptional": true, - "license": "MIT", + "node_modules/expo/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/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/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": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/icss-utils": { - "version": "4.1.1", + "node_modules/expo/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/expo/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/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/expo/node_modules/xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/expo/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/express": { + "version": "4.18.1", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "postcss": "^7.0.14" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.0", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.10.3", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">= 6" + "node": ">= 0.10.0" } }, - "node_modules/idb-keyval": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", - "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==" + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } }, - "node_modules/ieee754": { - "version": "1.2.1", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, "funding": [ { "type": "github", @@ -30736,2827 +30630,2730 @@ "url": "https://feross.org/support" } ], - "license": "BSD-3-Clause" - }, - "node_modules/iferr": { - "version": "0.1.5", - "dev": true, "license": "MIT" }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "node_modules/extend": { + "version": "3.0.2", "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-size": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", - "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", - "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/immediate": { - "version": "3.0.6", "license": "MIT" }, - "node_modules/import-fresh": { - "version": "3.3.0", - "dev": true, + "node_modules/extend-shallow": { + "version": "3.0.2", "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", + "node_modules/external-editor": { + "version": "3.1.0", "dev": true, "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, "engines": { "node": ">=4" } }, - "node_modules/import-local": { - "version": "3.1.0", + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">=8" + "node": ">=0.6.0" } }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/extglob": { + "version": "2.0.4", + "devOptional": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "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": ">=8" + "node": ">=0.10.0" } }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.3.0", + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "devOptional": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "is-descriptor": "^1.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "devOptional": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "is-extendable": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/import-local/node_modules/path-exists": { - "version": "4.0.0", + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "license": "MIT", + "node_modules/extract-zip": { + "version": "2.0.1", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "find-up": "^4.0.0" + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" }, "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "license": "MIT", - "engines": { - "node": ">=0.8.19" + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/indent-string": { - "version": "4.0.0", + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", "dev": true, "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/infer-owner": { - "version": "1.0.4", + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", "dev": true, - "license": "ISC" - }, - "node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } + "engines": [ + "node >=0.6.0" + ], + "optional": true }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" }, - "node_modules/inline-style-parser": { - "version": "0.1.1", + "node_modules/fast-diff": { + "version": "1.2.0", "dev": true, - "license": "MIT" + "license": "Apache-2.0" }, - "node_modules/inline-style-prefixer": { - "version": "6.0.1", - "license": "MIT", - "dependencies": { - "css-in-js-utils": "^2.0.0" - } + "node_modules/fast-equals": { + "version": "4.0.3", + "license": "MIT" }, - "node_modules/inquirer": { - "version": "7.3.3", - "dev": true, - "license": "MIT", + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" + "@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.0.0" + "node": ">=8.6.0" } }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/fast-json-parse": { + "version": "1.0.3", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "license": "MIT" }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", + "node_modules/fast-json-patch": { + "version": "2.2.1", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "fast-deep-equal": "^2.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.4.0" } }, - "node_modules/inquirer/node_modules/color-convert": { + "node_modules/fast-json-patch/node_modules/fast-deep-equal": { "version": "2.0.1", "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "license": "MIT" }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "dev": true, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", "license": "MIT" }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/fast-levenshtein": { + "version": "2.0.6", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "license": "MIT" + }, + "node_modules/fast-xml-parser": { + "version": "4.2.7", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.7.tgz", + "integrity": "sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==", + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" } }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/fastest-levenshtein": { + "version": "1.0.16", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 4.9.1" } }, - "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==", + "node_modules/fastq": { + "version": "1.13.0", + "license": "ISC", "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" + "reusify": "^1.0.4" } }, - "node_modules/interpret": { - "version": "2.2.0", + "node_modules/faye-websocket": { + "version": "0.11.4", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, "engines": { - "node": ">= 0.10" + "node": ">=0.8.0" } }, - "node_modules/invariant": { - "version": "2.2.4", - "license": "MIT", + "node_modules/fb-watchman": { + "version": "2.0.1", + "license": "Apache-2.0", "dependencies": { - "loose-envify": "^1.0.0" + "bser": "2.1.1" } }, - "node_modules/invert-kv": { - "version": "1.0.0", + "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", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "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/ip": { - "version": "2.0.0", - "dev": true, + "node_modules/fbjs-css-vars": { + "version": "1.0.2", "license": "MIT" }, - "node_modules/ipaddr.js": { - "version": "1.9.1", + "node_modules/fd-slicer": { + "version": "1.1.0", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.10" + "dependencies": { + "pend": "~1.2.0" } }, - "node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "node_modules/fetch-retry": { + "version": "5.0.3", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "devOptional": true, + "node_modules/figgy-pudding": { + "version": "3.5.2", + "dev": true, + "license": "ISC" + }, + "node_modules/figures": { + "version": "3.2.0", + "dev": true, "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-alphabetical": { - "version": "1.0.4", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=0.8.0" } }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", + "node_modules/file-entry-cache": { + "version": "6.0.1", "dev": true, "license": "MIT", "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "flat-cache": "^3.0.4" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "dev": true, + "node_modules/file-loader": { + "version": "6.2.0", + "devOptional": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "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==", + "node_modules/file-system-cache": { + "version": "1.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "fs-extra": "^10.1.0", + "ramda": "^0.28.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "node_modules/file-system-cache/node_modules/fs-extra": { + "version": "10.1.0", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-bigint": { - "version": "1.0.4", + "node_modules/file-system-cache/node_modules/ramda": { + "version": "0.28.0", + "dev": true, "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/ramda" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "devOptional": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, + "node_modules/file-type": { + "version": "12.4.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", + "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", "engines": { "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "license": "MIT", - "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": "2.0.5", + "node_modules/file-uri-to-path": { + "version": "1.0.0", "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" - } - ], "license": "MIT", - "engines": { - "node": ">=4" - } + "optional": true }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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" + "minimatch": "^5.0.1" } }, - "node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" + "balanced-match": "^1.0.0" } }, - "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, "dependencies": { - "has": "^1.0.3" + "brace-expansion": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "devOptional": true, + "node_modules/fill-range": { + "version": "7.0.1", "license": "MIT", "dependencies": { - "kind-of": "^6.0.0" + "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/is-date-object": { - "version": "1.0.5", + "node_modules/finalhandler": { + "version": "1.2.0", + "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/is-decimal": { - "version": "1.0.4", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", "dev": true, "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "devOptional": true, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/find-babel-config": { + "version": "2.0.0", "license": "MIT", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "json5": "^2.1.1", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16.0.0" } }, - "node_modules/is-directory": { - "version": "0.3.1", + "node_modules/find-babel-config/node_modules/path-exists": { + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-docker": { - "version": "2.2.1", + "node_modules/find-cache-dir": { + "version": "2.1.0", "license": "MIT", - "bin": { - "is-docker": "cli.js" + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/is-extendable": { - "version": "1.0.1", + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", "license": "MIT", "dependencies": { - "is-plain-object": "^2.0.4" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/is-extendable/node_modules/is-plain-object": { - "version": "2.0.4", + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "devOptional": true, + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", - "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "p-try": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-finite": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "optional": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-fullwidth-code-point": { + "node_modules/find-cache-dir/node_modules/p-locate": { "version": "3.0.0", "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-function": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, "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==", - "dev": true, + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "find-up": "^3.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "devOptional": true, + "node_modules/find-up": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "dev": true, - "license": "MIT", + "node": ">=10" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/find-up/node_modules/path-exists": { + "version": "4.0.0", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/is-map": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2" } }, - "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==", + "node_modules/flat-cache": { + "version": "3.0.4", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "license": "MIT", + "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-enums-runtime": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.5.tgz", + "integrity": "sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ==" + }, + "node_modules/flow-parser": { + "version": "0.206.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz", + "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.4.0" } }, - "node_modules/is-number": { - "version": "7.0.0", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", + "node_modules/flush-write-stream": { + "version": "1.1.1", + "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-path-inside": "^2.1.0" + "node": ">=4.0" }, - "engines": { - "node": ">=6" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "dev": true, + "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", "license": "MIT", "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" + "is-callable": "^1.1.3" } }, - "node_modules/is-plain-obj": { - "version": "2.1.0", + "node_modules/for-in": { + "version": "1.0.2", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", + "node_modules/foreground-child": { + "version": "2.0.0", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/is-reference": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz", - "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", + "integrity": "sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "@types/estree": "*" + "@babel/code-frame": "^7.8.3", + "@types/json-schema": "^7.0.5", + "chalk": "^4.1.0", + "chokidar": "^3.4.2", + "cosmiconfig": "^6.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "memfs": "^3.1.2", + "minimatch": "^3.0.4", + "schema-utils": "2.7.0", + "semver": "^7.3.2", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=10", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "eslint": ">= 6", + "typescript": ">= 2.7", + "vue-template-compiler": "*", + "webpack": ">= 4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } } }, - "node_modules/is-regex": { - "version": "1.1.4", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "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": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/is-set": { - "version": "2.0.2", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "color-convert": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "license": "MIT", "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-string": { - "version": "1.0.7", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-symbol": { - "version": "1.0.4", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=7.0.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { + "version": "6.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.11" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "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==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/is-utf8": { - "version": "0.2.1", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, "license": "MIT" }, - "node_modules/is-weakmap": { - "version": "2.0.1", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "2.7.0", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/is-weakset": { - "version": "2.0.2", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "has-flag": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/is-whitespace-character": { - "version": "1.0.4", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">= 6" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "devOptional": true, + "node_modules/form-data": { + "version": "3.0.1", "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/is-word-character": { - "version": "1.0.4", + "node_modules/forwarded": { + "version": "0.2.0", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "type": "patreon", + "url": "https://www.patreon.com/infusion" } }, - "node_modules/is-wsl": { - "version": "2.2.0", + "node_modules/fragment-cache": { + "version": "0.2.1", + "devOptional": true, "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "map-cache": "^0.2.2" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/isarray": { - "version": "2.0.5", - "license": "MIT" - }, - "node_modules/isbinaryfile": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz", - "integrity": "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==", - "dev": true, + "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": ">= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" + "node": ">=8" } }, - "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/isobject": { - "version": "3.0.1", + "node_modules/fresh": { + "version": "0.5.2", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/isomorphic-unfetch": { - "version": "3.1.0", + "node_modules/from": { + "version": "0.1.7", + "license": "MIT" + }, + "node_modules/from2": { + "version": "2.3.0", "dev": true, "license": "MIT", "dependencies": { - "node-fetch": "^2.6.1", - "unfetch": "^4.2.0" + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "license": "BSD-3-Clause", + "node_modules/fs-extra": { + "version": "9.1.0", + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.0", - "license": "BSD-3-Clause", + "node_modules/fs-minipass": { + "version": "2.1.0", + "license": "ISC", "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" + "minipass": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } + "node_modules/fs-monkey": { + "version": "1.0.3", + "dev": true, + "license": "Unlicense" }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "license": "BSD-3-Clause", + "node_modules/fs-write-stream-atomic": { + "version": "1.0.10", + "dev": true, + "license": "ISC", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", + "node_modules/fs.realpath": { + "version": "1.0.0", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "3.1.0", + "node_modules/function-bind": { + "version": "1.1.1", + "license": "MIT" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "dev": true, + "license": "MIT" }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/functions-have-names": { + "version": "1.2.3", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "license": "BSD-3-Clause", + "node_modules/gauge": { + "version": "3.0.2", + "dev": true, + "license": "ISC", "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" }, "engines": { "node": ">=10" } }, - "node_modules/istanbul-reports": { - "version": "3.1.5", - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/iterate-iterator": { - "version": "1.0.2", - "dev": true, + "node_modules/gensync": { + "version": "1.0.0-beta.2", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/iterate-value": { - "version": "1.0.2", - "dev": true, - "license": "MIT", + "node_modules/geojson-rbush": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz", + "integrity": "sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==", "dependencies": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" + "@turf/bbox": "*", + "@turf/helpers": "6.x", + "@turf/meta": "6.x", + "@types/geojson": "7946.0.8", + "rbush": "^3.0.1" + } + }, + "node_modules/geojson-vt": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", + "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/iterator.prototype": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.0.tgz", - "integrity": "sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==", + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "dev": true, - "dependencies": { - "define-properties": "^1.1.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "has-tostringtag": "^1.0.0", - "reflect.getprototypeof": "^1.0.3" + "engines": { + "node": ">=6" } }, - "node_modules/jackspeak": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", - "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, + "node_modules/get-package-type": { + "version": "0.1.0", + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node": ">=8.0.0" } }, - "node_modules/jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", - "dev": true, - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, + "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": ">=10" + "node": ">=4" } }, - "node_modules/jake/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==", + "node_modules/get-stdin": { + "version": "6.0.0", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/jake/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" - }, + "node_modules/get-stream": { + "version": "6.0.1", + "license": "MIT", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jake/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, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jake/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/jake/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, + "node_modules/get-value": { + "version": "2.0.6", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jake/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" - }, + "node_modules/getenv": { + "version": "1.0.0", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/javascript-natural-sort": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", - "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "node_modules/github-slugger": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz", + "integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==", "dev": true }, - "node_modules/jest": { - "version": "29.4.1", - "license": "MIT", + "node_modules/gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, + "node_modules/glob": { + "version": "7.1.6", + "license": "ISC", "dependencies": { - "@jest/core": "^29.4.1", - "@jest/types": "^29.4.1", - "import-local": "^3.0.2", - "jest-cli": "^29.4.1" - }, - "bin": { - "jest": "bin/jest.js" + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": "*" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-changed-files": { - "version": "29.4.0", - "license": "MIT", + "node_modules/glob-parent": { + "version": "5.1.2", + "license": "ISC", "dependencies": { - "execa": "^5.0.0", - "p-limit": "^3.1.0" + "is-glob": "^4.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/jest-circus": { - "version": "29.4.1", - "license": "MIT", + "node_modules/glob-promise": { + "version": "3.4.0", + "dev": true, + "license": "ISC", "dependencies": { - "@jest/environment": "^29.4.1", - "@jest/expect": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@jest/types": "^29.4.1", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.4.1", - "jest-matcher-utils": "^29.4.1", - "jest-message-util": "^29.4.1", - "jest-runtime": "^29.4.1", - "jest-snapshot": "^29.4.1", - "jest-util": "^29.4.1", - "p-limit": "^3.1.0", - "pretty-format": "^29.4.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@types/glob": "*" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" + }, + "peerDependencies": { + "glob": "*" } }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "devOptional": true, + "license": "BSD-2-Clause" + }, + "node_modules/global": { + "version": "4.4.0", + "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.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" + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.0" } }, - "node_modules/jest-circus/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" + "node_modules/globals": { + "version": "11.12.0", + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/globalthis": { + "version": "1.0.3", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "define-properties": "^1.1.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", + "node_modules/globby": { + "version": "11.1.0", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "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/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/good-listener": { + "version": "1.2.2", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "delegate": "^3.1.2" } }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { - "has-flag": "^4.0.0" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-cli": { - "version": "29.4.1", + "node_modules/got": { + "version": "11.8.6", + "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@jest/types": "^29.4.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.9", - "import-local": "^3.0.2", - "jest-config": "^29.4.1", - "jest-util": "^29.4.1", - "jest-validate": "^29.4.1", - "prompts": "^2.0.1", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.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" + "node": ">=10.19.0" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/jest-cli/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dependencies": { - "@jest/schemas": "^29.6.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" - }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10.x" } }, - "node_modules/jest-cli/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "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": { - "@types/yargs-parser": "*" + "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/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/grid-index": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", + "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==" + }, + "node_modules/gzip-size": { + "version": "6.0.0", + "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "duplexer": "^0.1.2" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", + "node_modules/handle-thing": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.7", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">=10" + "node": ">=0.4.7" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/jest-cli/node_modules/cliui": { - "version": "8.0.1", - "license": "ISC", + "node_modules/has": { + "version": "1.0.3", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "function-bind": "^1.1.1" }, "engines": { - "node": ">=12" + "node": ">= 0.4.0" } }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/has-ansi": { + "version": "2.0.0", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-cli/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/has-bigints": { + "version": "1.0.2", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-cli/node_modules/y18n": { - "version": "5.0.8", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-cli/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "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/jest-cli/node_modules/yargs-parser": { - "version": "21.1.1", - "license": "ISC", + "node_modules/has-flag": { + "version": "3.0.0", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/jest-config": { - "version": "29.4.1", + "node_modules/has-glob": { + "version": "1.0.0", + "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.4.1", - "@jest/types": "^29.4.1", - "babel-jest": "^29.4.1", - "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.4.1", - "jest-environment-node": "^29.4.1", - "jest-get-type": "^29.2.0", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.4.1", - "jest-runner": "^29.4.1", - "jest-util": "^29.4.1", - "jest-validate": "^29.4.1", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.4.1", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "is-glob": "^3.0.0" }, "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": ">=0.10.0" } }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/has-glob/node_modules/is-glob": { + "version": "3.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.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" + "is-extglob": "^2.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-config/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" + "node": ">=0.10.0" } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/has-property-descriptors": { + "version": "1.0.0", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "get-intrinsic": "^1.1.1" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "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==", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/has-symbols": { + "version": "1.0.3", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" - } - }, - "node_modules/jest-diff": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz", - "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.2" + "node": ">= 0.4" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/has-tostringtag": { + "version": "1.0.0", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", + "node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/has-value": { + "version": "1.0.0", + "devOptional": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/has-values": { + "version": "1.0.0", + "devOptional": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", + "node_modules/has-values/node_modules/is-buffer": { + "version": "1.1.6", + "devOptional": true, "license": "MIT" }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "devOptional": true, "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "devOptional": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-docblock": { - "version": "29.2.0", + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "devOptional": true, "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" + "is-buffer": "^1.1.5" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-each": { - "version": "29.4.1", + "node_modules/hash-base": { + "version": "3.1.0", "license": "MIT", "dependencies": { - "@jest/types": "^29.4.1", - "chalk": "^4.0.0", - "jest-get-type": "^29.2.0", - "jest-util": "^29.4.1", - "pretty-format": "^29.4.1" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/hash-base/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": { - "@jest/schemas": "^29.6.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" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/jest-each/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" - } + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/hash.js": { + "version": "1.1.7", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", + "node_modules/hast-to-hyperscript": { + "version": "9.0.1", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "@types/unist": "^2.0.3", + "comma-separated-tokens": "^1.0.0", + "property-information": "^5.3.0", + "space-separated-tokens": "^1.0.0", + "style-to-object": "^0.3.0", + "unist-util-is": "^4.0.0", + "web-namespaces": "^1.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/hast-util-from-parse5": { + "version": "6.0.1", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@types/parse5": "^5.0.0", + "hastscript": "^6.0.0", + "property-information": "^5.0.0", + "vfile": "^4.0.0", + "vfile-location": "^3.2.0", + "web-namespaces": "^1.0.0" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/hast-util-parse-selector": { + "version": "2.2.5", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/hast-util-raw": { + "version": "6.0.1", + "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^6.0.0", + "hast-util-to-parse5": "^6.0.0", + "html-void-elements": "^1.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^3.0.0", + "vfile": "^4.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jest-environment-jsdom": { - "version": "29.4.1", + "node_modules/hast-util-to-estree": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz", + "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==", "dev": true, - "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "@jest/environment": "^29.4.1", - "@jest/fake-timers": "^29.4.1", - "@jest/types": "^29.4.1", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.4.1", - "jest-util": "^29.4.1", - "jsdom": "^20.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "estree-util-attach-comments": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.1", + "unist-util-position": "^4.0.0", + "zwitch": "^2.0.0" }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/hast-util-to-estree/node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.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" - } + "optional": true, + "peer": true }, - "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/hast-util-to-estree/node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", "dev": true, - "dependencies": { - "@types/yargs-parser": "*" + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/hast-util-to-estree/node_modules/property-information": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.2.0.tgz", + "integrity": "sha512-kma4U7AFCTwpqq5twzC1YVIDXSqg6qQK6JN0smOw8fgRy1OkMi0CYSzFmsy6dnqSenamAtj0CyXMUJ1Mf6oROg==", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, + "optional": true, + "peer": true, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-environment-jsdom/node_modules/chalk": { - "version": "4.1.2", + "node_modules/hast-util-to-estree/node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, + "optional": true, + "peer": true, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-environment-jsdom/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/hast-util-to-estree/node_modules/style-to-object": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.2.tgz", + "integrity": "sha512-1JGpfPB3lo42ZX8cuPrheZbfQ6kqPPnPHlKMyeRYtfKD+0jG+QsXgXN57O/dvJlzlB2elI6dGmrPnl5VPQFPaA==", "dev": true, - "license": "MIT", + "optional": true, + "peer": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "inline-style-parser": "0.1.1" } }, - "node_modules/jest-environment-jsdom/node_modules/color-name": { - "version": "1.1.4", + "node_modules/hast-util-to-estree/node_modules/unist-util-position": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", + "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", "dev": true, - "license": "MIT" + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/jest-environment-jsdom/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/hast-util-to-estree/node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-environment-jsdom/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/hast-util-to-parse5": { + "version": "6.0.0", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "hast-to-hyperscript": "^9.0.0", + "property-information": "^5.0.0", + "web-namespaces": "^1.0.0", + "xtend": "^4.0.0", + "zwitch": "^1.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jest-environment-node": { - "version": "29.4.1", + "node_modules/hast-util-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "6.0.0", + "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.4.1", - "@jest/fake-timers": "^29.4.1", - "@jest/types": "^29.4.1", - "@types/node": "*", - "jest-mock": "^29.4.1", - "jest-util": "^29.4.1" + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-parse-selector": "^2.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "29.4.1", + "node_modules/he": { + "version": "1.2.0", + "dev": true, "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.4.0", - "@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" + "bin": { + "he": "bin/he" } }, - "node_modules/jest-environment-node/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/hermes-estree": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.12.0.tgz", + "integrity": "sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw==" + }, + "node_modules/hermes-parser": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.12.0.tgz", + "integrity": "sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==", "dependencies": { - "@types/yargs-parser": "*" + "hermes-estree": "0.12.0" } }, - "node_modules/jest-environment-node/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "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": { - "color-convert": "^2.0.1" + "source-map": "^0.7.3" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-node/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "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": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 8" } }, - "node_modules/jest-environment-node/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/history": { + "version": "4.5.1", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "invariant": "^2.2.1", + "loose-envify": "^1.2.0", + "resolve-pathname": "^2.0.0", + "value-equal": "^0.2.0", + "warning": "^3.0.0" } }, - "node_modules/jest-environment-node/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-environment-node/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/hmac-drbg": { + "version": "1.0.1", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/jest-environment-node/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "license": "BSD-3-Clause", "dependencies": { - "has-flag": "^4.0.0" + "react-is": "^16.7.0" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node_modules/hpack.js": { + "version": "2.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/jest-haste-map": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.2.tgz", - "integrity": "sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==", + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.1", - "@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.6.2", - "jest-worker": "^29.6.2", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "whatwg-encoding": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">=12" } }, - "node_modules/jest-haste-map/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/html-entities": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.5.tgz", + "integrity": "sha512-72TJlcMkYsEJASa/3HnX7VT59htM7iSHbH59NSZbtc+22Ap0Txnlx91sfeB+/A7wNZg7UxtZdhAW4y+/jimrdg==" + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "license": "MIT" + }, + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.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" + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12" } }, - "node_modules/jest-haste-map/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" } }, - "node_modules/jest-haste-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" - }, + "node_modules/html-tags": { + "version": "3.2.0", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-haste-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" - }, + "node_modules/html-void-elements": { + "version": "1.0.5", + "dev": true, + "license": "MIT", "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-haste-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==", + "node_modules/html-webpack-plugin": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "webpack": "^5.20.0" } }, - "node_modules/jest-haste-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/jest-haste-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==", + "node_modules/html-webpack-plugin/node_modules/tapable": { + "version": "2.2.1", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/jest-haste-map/node_modules/jest-worker": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", - "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "node_modules/htmlparser2": { + "version": "7.2.0", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-util": "^29.6.3", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" } }, - "node_modules/jest-haste-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" - }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "3.0.1", + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/jest-haste-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==", + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "dev": true, + "license": "MIT" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/jest-leak-detector": { - "version": "29.4.1", + "node_modules/http-parser-js": { + "version": "0.5.8", + "dev": true, + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "dev": true, "license": "MIT", "dependencies": { - "jest-get-type": "^29.2.0", - "pretty-format": "^29.4.1" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8.0.0" } }, - "node_modules/jest-matcher-utils": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz", - "integrity": "sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==", + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.6.2", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.6.2" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": ">=8" + "node": ">=12.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { + "version": "3.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/http2-wrapper": { + "version": "1.0.3", + "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10.19.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", + "node_modules/https-browserify": { + "version": "1.0.0", "license": "MIT" }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/https-proxy-agent": { + "version": "5.0.1", "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/human-signals": { + "version": "2.1.0", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=10.17.0" } }, - "node_modules/jest-message-util": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz", - "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==", + "node_modules/husky": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", + "integrity": "sha512-86U6sVVVf4b5NYSZ0yvv88dRgBSSXXmHaiq5pP4KDj5JVzdwKgBjEtUPOm8hcoytezFwbU+7gotXNhpHdystlg==", + "dev": true, + "hasInstallScript": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.1", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "cosmiconfig": "^5.0.7", + "execa": "^1.0.0", + "find-up": "^3.0.0", + "get-stdin": "^6.0.0", + "is-ci": "^2.0.0", + "pkg-dir": "^3.0.0", + "please-upgrade-node": "^3.1.1", + "read-pkg": "^4.0.1", + "run-node": "^1.0.0", + "slash": "^2.0.0" + }, + "bin": { + "husky-upgrade": "lib/upgrader/bin.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/husky/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==", + "dev": true + }, + "node_modules/husky/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, "dependencies": { - "@jest/schemas": "^29.6.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" + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" + "node": ">=4" } }, - "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==", + "node_modules/husky/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==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "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": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4.8" } }, - "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==", + "node_modules/husky/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "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": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6" } }, - "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==", + "node_modules/husky/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==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6" } }, - "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==" - }, - "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==", + "node_modules/husky/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==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "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==", + "node_modules/husky/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==", + "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/jest-mock": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz", - "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==", + "node_modules/husky/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==", + "dev": true, "dependencies": { - "@jest/types": "^29.6.1", - "@types/node": "*", - "jest-util": "^29.6.2" + "ci-info": "^2.0.0" }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/husky/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==", + "dev": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/husky/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==", + "dev": true, "dependencies": { - "@jest/schemas": "^29.6.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" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-mock/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/husky/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==", + "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/jest-mock/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==", + "node_modules/husky/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==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "p-try": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-mock/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/husky/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==", + "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" + } + }, + "node_modules/husky/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==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=4" } }, - "node_modules/jest-mock/node_modules/color-convert": { + "node_modules/husky/node_modules/path-key": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/husky/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==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "find-up": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6" } }, - "node_modules/jest-mock/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-mock/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==", + "node_modules/husky/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==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/jest-mock/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==", + "node_modules/husky/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/husky/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==", + "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "shebang-regex": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "license": "MIT", + "node_modules/husky/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/husky/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, "engines": { "node": ">=6" + } + }, + "node_modules/husky/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "bin": { + "which": "bin/which" } }, - "node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/hyphenate-style-name": { + "version": "1.0.4", + "license": "BSD-3-Clause" + }, + "node_modules/iconv-corefoundation": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", + "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "cli-truncate": "^2.1.0", + "node-addon-api": "^1.6.3" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^8.11.2 || >=10" } }, - "node_modules/jest-resolve": { - "version": "29.4.1", + "node_modules/iconv-lite": { + "version": "0.6.3", + "devOptional": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.4.1", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.4.1", - "jest-validate": "^29.4.1", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.4.1", - "license": "MIT", + "node_modules/icss-utils": { + "version": "4.1.1", + "dev": true, + "license": "ISC", "dependencies": { - "jest-regex-util": "^29.2.0", - "jest-snapshot": "^29.4.1" + "postcss": "^7.0.14" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", + "node_modules/idb-keyval": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", + "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/iferr": { + "version": "0.1.5", + "dev": true, + "license": "MIT" + }, + "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": "1.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", "dependencies": { - "color-convert": "^2.0.1" + "queue": "6.0.2" }, - "engines": { - "node": ">=8" + "bin": { + "image-size": "bin/image-size.js" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", + "node_modules/immediate": { + "version": "3.0.6", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=4" } }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/import-local": { + "version": "3.1.0", "license": "MIT", + "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/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/import-local/node_modules/find-up": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest-runner": { - "version": "29.4.1", + "node_modules/import-local/node_modules/locate-path": { + "version": "5.0.0", "license": "MIT", "dependencies": { - "@jest/console": "^29.4.1", - "@jest/environment": "^29.4.1", - "@jest/test-result": "^29.4.1", - "@jest/transform": "^29.4.1", - "@jest/types": "^29.4.1", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.2.0", - "jest-environment-node": "^29.4.1", - "jest-haste-map": "^29.4.1", - "jest-leak-detector": "^29.4.1", - "jest-message-util": "^29.4.1", - "jest-resolve": "^29.4.1", - "jest-runtime": "^29.4.1", - "jest-util": "^29.4.1", - "jest-watcher": "^29.4.1", - "jest-worker": "^29.4.1", - "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/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dependencies": { - "@jest/schemas": "^29.6.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-runner/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" + "p-locate": "^4.1.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", + "node_modules/import-local/node_modules/p-limit": { + "version": "2.3.0", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/import-local/node_modules/p-locate": { + "version": "4.1.0", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest-runner/node_modules/has-flag": { + "node_modules/import-local/node_modules/path-exists": { "version": "4.0.0", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-runner/node_modules/jest-worker": { - "version": "29.6.4", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", - "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-util": "^29.6.3", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "find-up": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/imurmurhash": { + "version": "0.1.4", "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=0.8.19" } }, - "node_modules/jest-runner/node_modules/source-map-support": { - "version": "0.5.13", + "node_modules/indent-string": { + "version": "4.0.0", "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "engines": { + "node": ">=8" } }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "license": "MIT", + "node_modules/infer-owner": { + "version": "1.0.4", + "license": "ISC" + }, + "node_modules/inflight": { + "version": "1.0.6", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/jest-runtime": { - "version": "29.4.1", + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "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/inline-style-parser": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/inline-style-prefixer": { + "version": "6.0.1", "license": "MIT", "dependencies": { - "@jest/environment": "^29.4.1", - "@jest/fake-timers": "^29.4.1", - "@jest/globals": "^29.4.1", - "@jest/source-map": "^29.2.0", - "@jest/test-result": "^29.4.1", - "@jest/transform": "^29.4.1", - "@jest/types": "^29.4.1", - "@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.4.1", - "jest-message-util": "^29.4.1", - "jest-mock": "^29.4.1", - "jest-regex-util": "^29.2.0", - "jest-resolve": "^29.4.1", - "jest-snapshot": "^29.4.1", - "jest-util": "^29.4.1", - "semver": "^7.3.5", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "css-in-js-utils": "^2.0.0" } }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/inquirer": { + "version": "7.3.3", + "dev": true, + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.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" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-runtime/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" + "node": ">=8.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { + "node_modules/inquirer/node_modules/ansi-styles": { "version": "4.3.0", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -33568,8 +33365,9 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/chalk": { + "node_modules/inquirer/node_modules/chalk": { "version": "4.1.2", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -33582,8 +33380,9 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/color-convert": { + "node_modules/inquirer/node_modules/color-convert": { "version": "2.0.1", + "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -33592,19 +33391,22 @@ "node": ">=7.0.0" } }, - "node_modules/jest-runtime/node_modules/color-name": { + "node_modules/inquirer/node_modules/color-name": { "version": "1.1.4", + "dev": true, "license": "MIT" }, - "node_modules/jest-runtime/node_modules/has-flag": { + "node_modules/inquirer/node_modules/has-flag": { "version": "4.0.0", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/supports-color": { + "node_modules/inquirer/node_modules/supports-color": { "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -33613,1247 +33415,1257 @@ "node": ">=8" } }, - "node_modules/jest-snapshot": { - "version": "29.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.2.tgz", - "integrity": "sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==", + "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": { - "@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/types": "^7.3.3", - "@jest/expect-utils": "^29.6.2", - "@jest/transform": "^29.6.2", - "@jest/types": "^29.6.1", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^29.6.2", - "graceful-fs": "^4.2.9", - "jest-diff": "^29.6.2", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.6.2", - "jest-message-util": "^29.6.2", - "jest-util": "^29.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^29.6.2", - "semver": "^7.5.3" + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/internal-ip/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": { - "@jest/schemas": "^29.6.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" + "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": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" + "node": ">=4.8" } }, - "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==", + "node_modules/internal-ip/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": { - "color-convert": "^2.0.1" + "execa": "^1.0.0", + "ip-regex": "^2.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "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==", + "node_modules/internal-ip/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": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "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": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6" } }, - "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==", + "node_modules/internal-ip/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": { - "color-name": "~1.1.4" + "pump": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=6" } }, - "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==" - }, - "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==", + "node_modules/internal-ip/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": ">=8" + "node": ">=0.10.0" } }, - "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==", + "node_modules/internal-ip/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": { - "has-flag": "^4.0.0" + "path-key": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/jest-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", - "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, + "node_modules/internal-ip/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": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/jest-util/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/internal-ip/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/internal-ip/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": { - "@jest/schemas": "^29.6.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" + "shebang-regex": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-util/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", - "dependencies": { - "@types/yargs-parser": "*" + "node_modules/internal-ip/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/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==", + "node_modules/internal-ip/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "isexe": "^2.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "bin": { + "which": "bin/which" } }, - "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==", + "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==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.4" } }, - "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==", + "node_modules/interpret": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, + "loose-envify": "^1.0.0" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "license": "MIT", "engines": { - "node": ">=7.0.0" + "node": ">=0.10.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==" + "node_modules/ip": { + "version": "2.0.0", + "dev": true, + "license": "MIT" }, - "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==", + "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": ">=8" + "node": ">=4" } }, - "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==", - "dependencies": { - "has-flag": "^4.0.0" - }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/jest-validate": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz", - "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==", + "node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "devOptional": true, + "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "leven": "^3.1.0", - "pretty-format": "^29.6.3" + "kind-of": "^6.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dependencies": { - "@jest/schemas": "^29.6.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/is-alphabetical": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-validate/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/is-alphanumerical": { + "version": "1.0.4", + "dev": true, + "license": "MIT", "dependencies": { - "@types/yargs-parser": "*" + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "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==", + "node_modules/is-arguments": { + "version": "1.1.1", + "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==" + "node_modules/is-bigint": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "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==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "devOptional": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, "engines": { "node": ">=8" } }, - "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==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-watcher": { - "version": "29.4.1", + "node_modules/is-buffer": { + "version": "2.0.5", + "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" + } + ], "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, "dependencies": { - "@jest/test-result": "^29.4.1", - "@jest/types": "^29.4.1", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.13.1", - "jest-util": "^29.4.1", - "string-length": "^4.0.1" + "builtin-modules": "^3.3.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "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": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, "dependencies": { - "@jest/schemas": "^29.6.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" + "ci-info": "^3.2.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/jest-watcher/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dependencies": { - "@types/yargs-parser": "*" + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/is-data-descriptor": { + "version": "1.0.0", + "devOptional": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "kind-of": "^6.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", + "node_modules/is-date-object": { + "version": "1.0.5", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/is-decimal": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.2", + "devOptional": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" + "node_modules/is-directory": { + "version": "0.3.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/is-docker": { + "version": "2.2.1", "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/is-extendable": { + "version": "1.0.1", "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "is-plain-object": "^2.0.4" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-when": { - "version": "3.5.2", + "node_modules/is-extendable/node_modules/is-plain-object": { + "version": "2.0.4", "license": "MIT", - "peerDependencies": { - "jest": ">= 25" + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jest-worker": { - "version": "26.6.2", - "dev": true, + "node_modules/is-extglob": { + "version": "2.1.1", "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">= 10.13.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/is-finite": { + "version": "1.1.0", "dev": true, "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/is-function": { + "version": "1.0.2", "dev": true, + "license": "MIT" + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", "license": "MIT", + "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==", + "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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/jest/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "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": { - "@jest/schemas": "^29.6.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" + "is-glob": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest/node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "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": { - "@types/yargs-parser": "*" + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/jest/node_modules/ansi-styles": { - "version": "4.3.0", + "node_modules/is-map": { + "version": "2.0.2", + "dev": true, "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest/node_modules/chalk": { - "version": "4.1.2", + "node_modules/is-negative-zero": { + "version": "2.0.2", "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest/node_modules/color-convert": { - "version": "2.0.1", + "node_modules/is-number": { + "version": "7.0.0", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "node_modules/jest/node_modules/has-flag": { - "version": "4.0.0", + "node_modules/is-path-cwd": { + "version": "2.2.0", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/jest/node_modules/supports-color": { - "version": "7.2.0", + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "is-path-inside": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/joi": { - "version": "17.10.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.10.1.tgz", - "integrity": "sha512-vIiDxQKmRidUVp8KngT8MZSOcmRVm2zV7jbMjNYWuHcJWI0bUck3nRTGQjhpPlQenIQIBC5Vp9AhcnHbWQqafw==", + "node_modules/is-path-inside": { + "version": "2.1.0", + "dev": true, + "license": "MIT", "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" + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" } }, - "node_modules/jquery": { - "version": "3.6.0", - "license": "MIT" - }, - "node_modules/js-cookie": { - "version": "3.0.1", + "node_modules/is-plain-obj": { + "version": "2.1.0", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/js-string-escape": { - "version": "1.0.1", + "node_modules/is-plain-object": { + "version": "5.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/js-tokens": { - "version": "4.0.0", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "dev": true, "license": "MIT" }, - "node_modules/js-yaml": { - "version": "3.14.1", - "license": "MIT", + "node_modules/is-reference": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz", + "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==", + "dev": true, + "optional": true, + "peer": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@types/estree": "*" } }, - "node_modules/jsc-android": { - "version": "250231.0.0", - "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", - "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==" - }, - "node_modules/jsc-safe-url": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", - "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==" - }, - "node_modules/jscodeshift": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", - "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", + "node_modules/is-regex": { + "version": "1.1.4", + "license": "MIT", "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": "^4.0.4", - "neo-async": "^2.5.0", - "node-dir": "^0.1.17", - "recast": "^0.21.0", - "temp": "^0.8.4", - "write-file-atomic": "^2.3.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, - "bin": { - "jscodeshift": "bin/jscodeshift.js" + "engines": { + "node": ">= 0.4" }, - "peerDependencies": { - "@babel/preset-env": "^7.1.6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-set": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bind": "^1.0.2" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "license": "MIT", "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/is-string": { + "version": "1.0.7", + "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-symbol": { + "version": "1.0.4", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "has-symbols": "^1.0.2" }, "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/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": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dependencies": { - "glob": "^7.1.3" + "which-typed-array": "^1.1.11" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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" - }, + "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": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/is-utf8": { + "version": "0.2.1", + "license": "MIT" + }, + "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": { - "rimraf": "~2.6.2" + "is-invalid-path": "^0.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", - "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", + "node_modules/is-weakmap": { + "version": "2.0.1", "dev": true, - "engines": { - "node": ">=12.0.0" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsdom": { - "version": "20.0.3", - "dev": true, + "node_modules/is-weakref": { + "version": "1.0.2", "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" + "call-bind": "^1.0.2" }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsdom/node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "node_modules/is-weakset": { + "version": "2.0.2", "dev": true, - "bin": { - "acorn": "bin/acorn" + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, - "engines": { - "node": ">=0.4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsdom/node_modules/acorn-globals": { - "version": "7.0.1", + "node_modules/is-whitespace-character": { + "version": "1.0.4", "dev": true, "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jsdom/node_modules/acorn-walk": { - "version": "8.2.0", - "dev": true, + "node_modules/is-windows": { + "version": "1.0.2", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=0.10.0" } }, - "node_modules/jsdom/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "node_modules/is-word-character": { + "version": "1.0.4", "dev": true, - "engines": { - "node": ">=0.12" - }, + "license": "MIT", "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jsdom/node_modules/form-data": { - "version": "4.0.0", - "dev": true, + "node_modules/is-wsl": { + "version": "2.2.0", "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "is-docker": "^2.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/jsdom/node_modules/parse5": { - "version": "7.1.2", + "node_modules/isarray": { + "version": "2.0.5", + "license": "MIT" + }, + "node_modules/isbinaryfile": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz", + "integrity": "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==", "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^4.4.0" + "engines": { + "node": ">= 14.0.0" }, "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "url": "https://github.com/sponsors/gjtorikian/" } }, - "node_modules/jsdom/node_modules/saxes": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.7" - } + "node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" }, - "node_modules/jsesc": { - "version": "2.5.2", + "node_modules/isobject": { + "version": "3.0.1", "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" - }, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-loader": { - "version": "0.5.7", - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "license": "MIT" - }, - "node_modules/json-schema-migrate": { - "version": "2.0.0", + "node_modules/isomorphic-unfetch": { + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^8.0.0" + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" } }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "license": "MIT" + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } }, - "node_modules/json-stable-stringify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", - "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "node_modules/istanbul-lib-instrument": { + "version": "5.2.0", + "license": "BSD-3-Clause", "dependencies": { - "jsonify": "^0.0.1" + "@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" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/json-stringify-pretty-compact": { + "node_modules/istanbul-lib-report": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz", - "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==" + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "dev": true, - "license": "ISC" + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/json5": { - "version": "2.2.3", + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "3.1.0", "license": "MIT", - "bin": { - "json5": "lib/cli.js" + "dependencies": { + "semver": "^6.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jsonfile": { - "version": "6.1.0", + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "universalify": "^2.0.0" + "has-flag": "^4.0.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=8" } }, - "node_modules/jsonify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", - "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", - "dev": true, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "license": "BSD-3-Clause", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/junk": { - "version": "3.1.0", + "node_modules/iterate-iterator": { + "version": "1.0.2", "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/kdbush": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", - "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" - }, - "node_modules/kebab-case": { + "node_modules/iterate-value": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/kebab-case/-/kebab-case-1.0.2.tgz", - "integrity": "sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==", - "dev": true - }, - "node_modules/keyv": { - "version": "4.5.2", "dev": true, "license": "MIT", "dependencies": { - "json-buffer": "3.0.1" + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw-sync": { - "version": "6.0.0", - "license": "MIT", + "node_modules/iterator.prototype": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.0.tgz", + "integrity": "sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==", + "dev": true, "dependencies": { - "graceful-fs": "^4.1.11" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "license": "MIT", - "engines": { - "node": ">=6" + "define-properties": "^1.1.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "has-tostringtag": "^1.0.0", + "reflect.getprototypeof": "^1.0.3" } }, - "node_modules/klona": { - "version": "2.0.5", + "node_modules/jackspeak": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.1.tgz", + "integrity": "sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==", "dev": true, - "license": "MIT", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, "engines": { - "node": ">= 8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/language-tags": { - "version": "1.0.5", + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "dev": true, - "license": "MIT", "dependencies": { - "language-subtag-registry": "~0.3.2" - } - }, - "node_modules/lazy-cache": { - "version": "1.0.4", - "license": "MIT", + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/lazy-universal-dotenv": { - "version": "3.0.1", + "node_modules/jake/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, - "license": "Apache-2.0", "dependencies": { - "@babel/runtime": "^7.5.0", - "app-root-dir": "^1.0.2", - "core-js": "^3.0.4", - "dotenv": "^8.0.0", - "dotenv-expand": "^5.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6.0.0", - "npm": ">=6.0.0", - "yarn": ">=1.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/lazy-universal-dotenv/node_modules/dotenv": { - "version": "8.6.0", + "node_modules/jake/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, - "license": "BSD-2-Clause", + "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/lazy-val": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", - "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", - "dev": true - }, - "node_modules/lcid": { - "version": "1.0.0", - "license": "MIT", + "node_modules/jake/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": { - "invert-kv": "^1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/leven": { - "version": "3.1.0", - "license": "MIT", + "node_modules/jake/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/jake/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": ">=6" + "node": ">=8" } }, - "node_modules/levn": { - "version": "0.4.1", + "node_modules/jake/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, - "license": "MIT", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.1.1", - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" + "node": ">=8" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "license": "MIT" + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "dev": true }, - "node_modules/load-json-file": { - "version": "1.1.0", + "node_modules/jest": { + "version": "29.4.1", "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" + "@jest/core": "^29.4.1", + "@jest/types": "^29.4.1", + "import-local": "^3.0.2", + "jest-cli": "^29.4.1" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "error-ex": "^1.2.0" + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "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/load-json-file/node_modules/strip-bom": { - "version": "2.0.0", + "node_modules/jest-changed-files": { + "version": "29.4.0", "license": "MIT", "dependencies": { - "is-utf8": "^0.2.0" + "execa": "^5.0.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/loader-runner": { - "version": "2.4.0", + "node_modules/jest-circus": { + "version": "29.4.1", "license": "MIT", - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "devOptional": true, "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "@jest/environment": "^29.4.1", + "@jest/expect": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/types": "^29.4.1", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.4.1", + "jest-matcher-utils": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-runtime": "^29.4.1", + "jest-snapshot": "^29.4.1", + "jest-util": "^29.4.1", + "p-limit": "^3.1.0", + "pretty-format": "^29.4.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/localforage": { - "version": "1.10.0", - "license": "Apache-2.0", - "dependencies": { - "lie": "3.1.1" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "license": "MIT", + "node_modules/jest-circus/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "p-locate": "^5.0.0" + "@jest/schemas": "^29.6.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": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" - }, - "node_modules/lodash.assign": { - "version": "4.2.0", - "license": "MIT" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "license": "MIT" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "dev": true, - "license": "MIT" - }, - "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/lodash.truncate": { - "version": "4.4.2", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "dev": true, - "license": "MIT" - }, - "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==", + "node_modules/jest-circus/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/yargs-parser": "*" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { + "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==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -34864,10 +34676,9 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-symbols/node_modules/chalk": { + "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==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -34879,10 +34690,9 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/log-symbols/node_modules/color-convert": { + "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==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -34890,23 +34700,20 @@ "node": ">=7.0.0" } }, - "node_modules/log-symbols/node_modules/color-name": { + "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==" + "license": "MIT" }, - "node_modules/log-symbols/node_modules/has-flag": { + "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==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/log-symbols/node_modules/supports-color": { + "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==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -34914,23 +34721,65 @@ "node": ">=8" } }, - "node_modules/logkitty": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", - "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", + "node_modules/jest-cli": { + "version": "29.4.1", + "license": "MIT", "dependencies": { - "ansi-fragments": "^0.2.1", - "dayjs": "^1.8.15", - "yargs": "^15.1.0" + "@jest/core": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/types": "^29.4.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^29.4.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", + "prompts": "^2.0.1", + "yargs": "^17.3.1" }, "bin": { - "logkitty": "bin/logkitty.js" + "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/logkitty/node_modules/ansi-styles": { + "node_modules/jest-cli/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.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-cli/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "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==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -34941,28 +34790,35 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/logkitty/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?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==", + "node_modules/jest-cli/node_modules/cliui": { + "version": "8.0.1", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/logkitty/node_modules/color-convert": { + "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==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -34970,1480 +34826,1441 @@ "node": ">=7.0.0" } }, - "node_modules/logkitty/node_modules/color-name": { + "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==" + "license": "MIT" }, - "node_modules/logkitty/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" - }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/logkitty/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==", + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/logkitty/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==", + "node_modules/jest-cli/node_modules/y18n": { + "version": "5.0.8", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-cli/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dependencies": { - "p-try": "^2.0.0" + "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": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/logkitty/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==", + "node_modules/jest-cli/node_modules/yargs-parser": { + "version": "21.1.1", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-config": { + "version": "29.4.1", + "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.4.1", + "@jest/types": "^29.4.1", + "babel-jest": "^29.4.1", + "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.4.1", + "jest-environment-node": "^29.4.1", + "jest-get-type": "^29.2.0", + "jest-regex-util": "^29.2.0", + "jest-resolve": "^29.4.1", + "jest-runner": "^29.4.1", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.4.1", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=8" + "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/logkitty/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==", + "node_modules/jest-config/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.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": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/jest-config/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", "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" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/long": { - "version": "4.0.0", - "license": "Apache-2.0" + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" }, - "node_modules/longest": { - "version": "1.0.1", + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node": ">=8" } }, - "node_modules/loose-envify": { - "version": "1.4.0", + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "has-flag": "^4.0.0" }, - "bin": { - "loose-envify": "cli.js" + "engines": { + "node": ">=8" } }, - "node_modules/lottie-ios": { - "version": "3.5.0", - "license": "Apache-2.0", - "peer": true - }, - "node_modules/lottie-react-native": { - "version": "5.1.6", - "license": "Apache-2.0", + "node_modules/jest-diff": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.2.tgz", + "integrity": "sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA==", "dependencies": { - "invariant": "^2.2.2", - "react-native-safe-modules": "^1.0.3" - }, - "peerDependencies": { - "lottie-ios": "^3.4.0", - "react": "*", - "react-native": ">=0.46", - "react-native-windows": ">=0.63.x" + "chalk": "^4.0.0", + "diff-sequences": "^29.4.3", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.2" }, - "peerDependenciesMeta": { - "react-native-windows": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/lottie-react-native/node_modules/dedent": { - "version": "0.6.0", - "license": "MIT" - }, - "node_modules/lottie-react-native/node_modules/react-native-safe-modules": { - "version": "1.0.3", + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "dedent": "^0.6.0" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "react-native": "*" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/lottie-web": { - "version": "5.10.2", - "license": "MIT" - }, - "node_modules/loud-rejection": { - "version": "1.6.0", - "dev": true, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", - "optional": true, "dependencies": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/lower-case": { - "version": "2.0.2", - "dev": true, + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", "dependencies": { - "tslib": "^2.0.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "dev": true, + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/make-cancellable-promise": { - "version": "1.1.0", + "node_modules/jest-docblock": { + "version": "29.2.0", "license": "MIT", - "funding": { - "url": "https://github.com/wojtekmaj/make-cancellable-promise?sponsor=1" + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/make-dir": { - "version": "2.1.0", + "node_modules/jest-each": { + "version": "29.4.1", "license": "MIT", "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "@jest/types": "^29.4.1", + "chalk": "^4.0.0", + "jest-get-type": "^29.2.0", + "jest-util": "^29.4.1", + "pretty-format": "^29.4.1" }, "engines": { - "node": ">=6" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/make-event-props": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.6.1.tgz", - "integrity": "sha512-JhvWq/iz1BvlmnPvLJjXv+xnMPJZuychrDC68V+yCGQJn5chcA8rLGKo5EP1XwIKVrigSXKLmbeXAGkf36wdCQ==", - "funding": { - "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" + "node_modules/jest-each/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.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/makeerror": { - "version": "1.0.12", - "license": "BSD-3-Clause", + "node_modules/jest-each/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "tmpl": "1.0.5" + "@types/yargs-parser": "*" } }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "dev": true, + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "p-defer": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/map-cache": { - "version": "0.2.2", - "devOptional": true, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/map-obj": { - "version": "1.0.1", - "dev": true, + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", - "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/map-or-similar": { - "version": "1.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/map-stream": { - "version": "0.0.7", + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", "license": "MIT" }, - "node_modules/map-visit": { - "version": "1.0.0", - "devOptional": true, + "node_modules/jest-each/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", - "dependencies": { - "object-visit": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/mapbox-gl": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-2.15.0.tgz", - "integrity": "sha512-fjv+aYrd5TIHiL7wRa+W7KjtUqKWziJMZUkK5hm8TvJ3OLeNPx4NmW/DgfYhd/jHej8wWL+QJBDbdMMAKvNC0A==", + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "@mapbox/geojson-rewind": "^0.5.2", - "@mapbox/jsonlint-lines-primitives": "^2.0.2", - "@mapbox/mapbox-gl-supported": "^2.0.1", - "@mapbox/point-geometry": "^0.1.0", - "@mapbox/tiny-sdf": "^2.0.6", - "@mapbox/unitbezier": "^0.0.1", - "@mapbox/vector-tile": "^1.3.1", - "@mapbox/whoots-js": "^3.1.0", - "csscolorparser": "~1.0.3", - "earcut": "^2.2.4", - "geojson-vt": "^3.2.1", - "gl-matrix": "^3.4.3", - "grid-index": "^1.1.0", - "kdbush": "^4.0.1", - "murmurhash-js": "^1.0.0", - "pbf": "^3.2.1", - "potpack": "^2.0.0", - "quickselect": "^2.0.0", - "rw": "^1.3.3", - "supercluster": "^8.0.0", - "tinyqueue": "^2.0.3", - "vt-pbf": "^3.1.3" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/markdown-builder": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/markdown-builder/-/markdown-builder-0.9.0.tgz", - "integrity": "sha512-UovCyEEzMeKE7l88fbOk9SIJkOG7KXkg+TdudN8rvOtCtBO5uu1X27HSnM7LS/xH+vaShJLGpkBcYYcojWNx/g==", + "node_modules/jest-environment-jsdom": { + "version": "29.4.1", "dev": true, + "license": "MIT", "dependencies": { - "husky": "^1.0.0-rc.14" + "@jest/environment": "^29.4.1", + "@jest/fake-timers": "^29.4.1", + "@jest/types": "^29.4.1", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.4.1", + "jest-util": "^29.4.1", + "jsdom": "^20.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/markdown-escapes": { - "version": "1.0.4", + "node_modules/jest-environment-jsdom/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "@jest/schemas": "^29.6.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/markdown-extensions": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", - "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", + "node_modules/jest-environment-jsdom/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { + "version": "4.3.0", "dev": true, + "license": "MIT", "dependencies": { - "repeat-string": "^1.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/markdown-to-jsx": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", - "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", + "node_modules/jest-environment-jsdom/node_modules/chalk": { + "version": "4.1.2", "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 10" + "node": ">=10" }, - "peerDependencies": { - "react": ">= 0.14.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/matcher": { - "version": "3.0.0", + "node_modules/jest-environment-jsdom/node_modules/color-convert": { + "version": "2.0.1", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/mathjs": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-11.8.0.tgz", - "integrity": "sha512-I7r8HCoqUGyEiHQdeOCF2m2k9N+tcOHO3cZQ3tyJkMMBQMFqMR7dMQEboBMJAiFW2Um3PEItGPwcOc4P6KRqwg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.21.0", - "complex.js": "^2.1.1", - "decimal.js": "^10.4.3", - "escape-latex": "^1.2.0", - "fraction.js": "^4.2.0", - "javascript-natural-sort": "^0.7.1", - "seedrandom": "^3.0.5", - "tiny-emitter": "^2.1.0", - "typed-function": "^4.1.0" - }, - "bin": { - "mathjs": "bin/cli.js" - }, + "node_modules/jest-environment-jsdom/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-environment-jsdom/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 14" + "node": ">=8" } }, - "node_modules/md5.js": { - "version": "1.3.5", + "node_modules/jest-environment-jsdom/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, "license": "MIT", "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/mdast-squeeze-paragraphs": { - "version": "4.0.0", - "dev": true, + "node_modules/jest-environment-node": { + "version": "29.4.1", "license": "MIT", "dependencies": { - "unist-util-remove": "^2.0.0" + "@jest/environment": "^29.4.1", + "@jest/fake-timers": "^29.4.1", + "@jest/types": "^29.4.1", + "@types/node": "*", + "jest-mock": "^29.4.1", + "jest-util": "^29.4.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/mdast-util-definitions": { - "version": "4.0.0", - "dev": true, + "node_modules/jest-environment-node/node_modules/@jest/types": { + "version": "29.4.1", "license": "MIT", "dependencies": { - "unist-util-visit": "^2.0.0" + "@jest/schemas": "^29.4.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-environment-node/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/yargs-parser": "*" } }, - "node_modules/mdast-util-from-markdown/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-environment-node/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/mdast-util-mdx": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", - "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-environment-node/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", "dependencies": { - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-mdx-expression": "^1.0.0", - "mdast-util-mdx-jsx": "^2.0.0", - "mdast-util-mdxjs-esm": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/mdast-util-mdx-expression": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", - "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-environment-node/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" + "color-name": "~1.1.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/mdast-util-mdx-jsx": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", - "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-environment-node/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-environment-node/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-node/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "ccount": "^2.0.0", - "mdast-util-from-markdown": "^1.1.0", - "mdast-util-to-markdown": "^1.3.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-remove-position": "^4.0.0", - "unist-util-stringify-position": "^3.0.0", - "vfile-message": "^3.0.0" + "has-flag": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/jest-haste-map": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.2.tgz", + "integrity": "sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA==", + "dependencies": { + "@jest/types": "^29.6.1", + "@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.6.2", + "jest-worker": "^29.6.2", + "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/mdast-util-mdx-jsx/node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/jest-haste-map/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.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/mdast-util-mdx-jsx/node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/jest-haste-map/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-haste-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": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-haste-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": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-alphanumerical": { + "node_modules/jest-haste-map/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dev": true, - "optional": true, - "peer": true, + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" + "color-name": "~1.1.4" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/jest-haste-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/jest-haste-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/mdast-util-mdx-jsx/node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", + "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.6.3", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", - "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-haste-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": { - "@types/unist": "^2.0.0", - "character-entities": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-haste-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": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" + "has-flag": "^4.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=8" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-leak-detector": { + "version": "29.4.1", + "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0" + "jest-get-type": "^29.2.0", + "pretty-format": "^29.4.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-remove-position": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", - "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-matcher-utils": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz", + "integrity": "sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-visit": "^4.0.0" + "chalk": "^4.0.0", + "jest-diff": "^29.6.2", + "jest-get-type": "^29.4.3", + "pretty-format": "^29.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit": { + "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "color-name": "~1.1.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/mdast-util-mdx-jsx/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", - "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/mdast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" + "has-flag": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/mdast-util-phrasing/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-message-util": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.2.tgz", + "integrity": "sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ==", "dependencies": { - "@types/unist": "^2.0.0" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.1", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/mdast-util-to-hast": { - "version": "10.0.1", - "dev": true, - "license": "MIT", + "node_modules/jest-message-util/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", - "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" + "@jest/schemas": "^29.6.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" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/mdast-util-to-markdown": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", - "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/jest-message-util/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@types/yargs-parser": "*" } }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dev": true, - "optional": true, - "peer": true, + "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==", "dependencies": { - "@types/unist": "^2.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit": { + "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "dev": true, - "optional": true, - "peer": true, + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown/node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, - "optional": true, - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", - "dev": true, - "optional": true, - "peer": true, + "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==", "dependencies": { - "@types/mdast": "^3.0.0" + "color-name": "~1.1.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/mdn-data": { - "version": "2.0.14", - "license": "CC0-1.0" - }, - "node_modules/mdurl": { - "version": "1.0.1", - "dev": true, - "license": "MIT" + "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==" }, - "node_modules/media-typer": { - "version": "0.3.0", - "dev": true, - "license": "MIT", + "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==", "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/mem": { - "version": "8.1.1", - "dev": true, - "license": "MIT", + "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==", "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/mem?sponsor=1" + "node": ">=8" } }, - "node_modules/mem/node_modules/mimic-fn": { - "version": "3.1.0", - "dev": true, - "license": "MIT", + "node_modules/jest-mock": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.2.tgz", + "integrity": "sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg==", + "dependencies": { + "@jest/types": "^29.6.1", + "@types/node": "*", + "jest-util": "^29.6.2" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/memfs": { - "version": "3.4.7", - "dev": true, - "license": "Unlicense", + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "fs-monkey": "^1.0.3" + "@jest/schemas": "^29.6.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": ">= 4.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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/memoizerific": { - "version": "1.11.3", - "dev": true, - "license": "MIT", + "node_modules/jest-mock/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "map-or-similar": "^1.5.0" + "@types/yargs-parser": "*" } }, - "node_modules/memory-fs": { - "version": "0.4.1", - "license": "MIT", + "node_modules/jest-mock/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": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/meow": { - "version": "3.7.0", - "dev": true, - "license": "MIT", - "optional": true, + "node_modules/jest-mock/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": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/meow/node_modules/find-up": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "optional": true, + "node_modules/jest-mock/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": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/meow/node_modules/get-stdin": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "optional": true, + "node_modules/jest-mock/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-mock/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": ">=0.10.0" + "node": ">=8" } }, - "node_modules/meow/node_modules/indent-string": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "optional": true, + "node_modules/jest-mock/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": { - "repeating": "^2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/meow/node_modules/path-exists": { - "version": "2.1.0", - "dev": true, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", "license": "MIT", - "optional": true, - "dependencies": { - "pinkie-promise": "^2.0.0" + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/meow/node_modules/path-type": { - "version": "1.1.0", - "dev": true, + "node_modules/jest-resolve": { + "version": "29.4.1", "license": "MIT", - "optional": true, "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.4.1", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.4.1", + "jest-validate": "^29.4.1", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/meow/node_modules/pify": { - "version": "2.3.0", - "dev": true, + "node_modules/jest-resolve-dependencies": { + "version": "29.4.1", "license": "MIT", - "optional": true, + "dependencies": { + "jest-regex-util": "^29.2.0", + "jest-snapshot": "^29.4.1" + }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/meow/node_modules/read-pkg": { - "version": "1.1.0", - "dev": true, + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", - "optional": true, "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "1.0.1", - "dev": true, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", "license": "MIT", - "optional": true, "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/meow/node_modules/redent": { - "version": "1.0.0", - "dev": true, + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", - "optional": true, "dependencies": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/meow/node_modules/strip-indent": { - "version": "1.0.1", - "dev": true, + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", "license": "MIT", - "optional": true, "dependencies": { - "get-stdin": "^4.0.1" + "has-flag": "^4.0.0" }, - "bin": { - "strip-indent": "cli.js" + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "29.4.1", + "license": "MIT", + "dependencies": { + "@jest/console": "^29.4.1", + "@jest/environment": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.2.0", + "jest-environment-node": "^29.4.1", + "jest-haste-map": "^29.4.1", + "jest-leak-detector": "^29.4.1", + "jest-message-util": "^29.4.1", + "jest-resolve": "^29.4.1", + "jest-runtime": "^29.4.1", + "jest-util": "^29.4.1", + "jest-watcher": "^29.4.1", + "jest-worker": "^29.4.1", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "dev": true, - "license": "MIT" + "node_modules/jest-runner/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dependencies": { + "@jest/schemas": "^29.6.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/merge-options": { - "version": "3.0.4", + "node_modules/jest-runner/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", "license": "MIT", "dependencies": { - "is-plain-obj": "^2.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/merge-refs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.2.1.tgz", - "integrity": "sha512-pRPz39HQz2xzHdXAGvtJ9S8aEpNgpUjzb5yPC3ytozodmsHg+9nqgRs7/YOmn9fM/TLzntAC8AdGTidKxOq9TQ==", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", "dependencies": { - "@types/react": "*" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "dev": true, + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">= 8" + "node": ">=7.0.0" } }, - "node_modules/methods": { - "version": "1.1.2", - "dev": true, + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/metro": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.8.tgz", - "integrity": "sha512-oQA3gLzrrYv3qKtuWArMgHPbHu8odZOD9AoavrqSFllkPgOtmkBvNNDLCELqv5SjBfqjISNffypg+5UGG3y0pg==", - "dev": true, + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "29.6.4", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.4.tgz", + "integrity": "sha512-6dpvFV4WjcWbDVGgHTWo/aupl8/LbBx2NSKfiwqf79xC/yeJjKHT1+StcKy/2KTmW16hE68ccKVOtXf+WZGz7Q==", "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/parser": "^7.20.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.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", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.12.0", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^27.2.0", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.76.8", - "metro-cache": "0.76.8", - "metro-cache-key": "0.76.8", - "metro-config": "0.76.8", - "metro-core": "0.76.8", - "metro-file-map": "0.76.8", - "metro-inspector-proxy": "0.76.8", - "metro-minify-terser": "0.76.8", - "metro-minify-uglify": "0.76.8", - "metro-react-native-babel-preset": "0.76.8", - "metro-resolver": "0.76.8", - "metro-runtime": "0.76.8", - "metro-source-map": "0.76.8", - "metro-symbolicate": "0.76.8", - "metro-transform-plugins": "0.76.8", - "metro-transform-worker": "0.76.8", - "mime-types": "^2.1.27", - "node-fetch": "^2.2.0", - "nullthrows": "^1.1.1", - "rimraf": "^3.0.2", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "strip-ansi": "^6.0.0", - "throat": "^5.0.0", - "ws": "^7.5.1", - "yargs": "^17.6.2" - }, - "bin": { - "metro": "src/cli.js" + "@types/node": "*", + "jest-util": "^29.6.3", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-babel-transformer": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz", - "integrity": "sha512-Hh6PW34Ug/nShlBGxkwQJSgPGAzSJ9FwQXhUImkzdsDgVu6zj5bx258J8cJVSandjNoQ8nbaHK6CaHlnbZKbyA==", - "dev": true, + "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "license": "MIT", "dependencies": { - "@babel/core": "^7.20.0", - "hermes-parser": "0.12.0", - "nullthrows": "^1.1.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/metro-cache": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.8.tgz", - "integrity": "sha512-QBJSJIVNH7Hc/Yo6br/U/qQDUpiUdRgZ2ZBJmvAbmAKp2XDzsapnMwK/3BGj8JNWJF7OLrqrYHsRsukSbUBpvQ==", - "dev": true, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "license": "MIT", "dependencies": { - "metro-core": "0.76.8", - "rimraf": "^3.0.2" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=8" } }, - "node_modules/metro-cache-key": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.8.tgz", - "integrity": "sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw==", - "dev": true, + "node_modules/jest-runtime": { + "version": "29.4.1", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.4.1", + "@jest/fake-timers": "^29.4.1", + "@jest/globals": "^29.4.1", + "@jest/source-map": "^29.2.0", + "@jest/test-result": "^29.4.1", + "@jest/transform": "^29.4.1", + "@jest/types": "^29.4.1", + "@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.4.1", + "jest-message-util": "^29.4.1", + "jest-mock": "^29.4.1", + "jest-regex-util": "^29.2.0", + "jest-resolve": "^29.4.1", + "jest-snapshot": "^29.4.1", + "jest-util": "^29.4.1", + "semver": "^7.3.5", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-config": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.8.tgz", - "integrity": "sha512-SL1lfKB0qGHALcAk2zBqVgQZpazDYvYFGwCK1ikz0S6Y/CM2i2/HwuZN31kpX6z3mqjv/6KvlzaKoTb1otuSAA==", - "dev": true, + "node_modules/jest-runtime/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "connect": "^3.6.5", - "cosmiconfig": "^5.0.5", - "jest-validate": "^29.2.1", - "metro": "0.76.8", - "metro-cache": "0.76.8", - "metro-core": "0.76.8", - "metro-runtime": "0.76.8" + "@jest/schemas": "^29.6.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": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-config/node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, + "node_modules/jest-runtime/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "@types/yargs-parser": "*" + } + }, + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/metro-config/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==", - "dev": true, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/metro-config/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==", - "dev": true, + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/metro-config/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==", - "dev": true, + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/metro-core": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.8.tgz", - "integrity": "sha512-sl2QLFI3d1b1XUUGxwzw/KbaXXU/bvFYrSKz6Sg19AdYGWFyzsgZ1VISRIDf+HWm4R/TJXluhWMEkEtZuqi3qA==", - "dev": true, + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.76.8" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=8" } }, - "node_modules/metro-file-map": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.8.tgz", - "integrity": "sha512-A/xP1YNEVwO1SUV9/YYo6/Y1MmzhL4ZnVgcJC3VmHp/BYVOXVStzgVbWv2wILe56IIMkfXU+jpXrGKKYhFyHVw==", - "dev": true, + "node_modules/jest-snapshot": { + "version": "29.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.2.tgz", + "integrity": "sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA==", "dependencies": { - "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-util": "^27.2.0", - "jest-worker": "^27.2.0", - "micromatch": "^4.0.4", - "node-abort-controller": "^3.1.1", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" + "@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/types": "^7.3.3", + "@jest/expect-utils": "^29.6.2", + "@jest/transform": "^29.6.2", + "@jest/types": "^29.6.1", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.6.2", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.6.2", + "jest-get-type": "^29.4.3", + "jest-matcher-utils": "^29.6.2", + "jest-message-util": "^29.6.2", + "jest-util": "^29.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^29.6.2", + "semver": "^7.5.3" }, "engines": { - "node": ">=16" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", - "dev": true, + "node_modules/jest-snapshot/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "@types/yargs": "^16.0.0", + "@types/yargs": "^17.0.8", "chalk": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.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==", - "dev": true, + "node_modules/jest-snapshot/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { "@types/yargs-parser": "*" } }, - "node_modules/metro-file-map/node_modules/ansi-styles": { + "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" }, @@ -36454,11 +36271,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/metro-file-map/node_modules/chalk": { + "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" @@ -36470,11 +36286,10 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/metro-file-map/node_modules/color-convert": { + "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" }, @@ -36482,46 +36297,36 @@ "node": ">=7.0.0" } }, - "node_modules/metro-file-map/node_modules/color-name": { + "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/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==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/metro-file-map/node_modules/has-flag": { + "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/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==", - "dev": true, + "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==", + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "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==", - "dev": true, + "node_modules/jest-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.6.3.tgz", + "integrity": "sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==", "dependencies": { - "@jest/types": "^27.5.1", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -36529,49 +36334,90 @@ "picomatch": "^2.2.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.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==", - "dev": true, + "node_modules/jest-util/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.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==", - "dev": true, + "node_modules/jest-util/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "has-flag": "^4.0.0" + "@types/yargs-parser": "*" + } + }, + "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==", + "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==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/chalk/chalk?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==", - "dev": true + "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==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/metro-file-map/node_modules/supports-color": { + "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==" + }, + "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==", + "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" }, @@ -36579,341 +36425,275 @@ "node": ">=8" } }, - "node_modules/metro-inspector-proxy": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.8.tgz", - "integrity": "sha512-Us5o5UEd4Smgn1+TfHX4LvVPoWVo9VsVMn4Ldbk0g5CQx3Gu0ygc/ei2AKPGTwsOZmKxJeACj7yMH2kgxQP/iw==", - "dev": true, + "node_modules/jest-validate": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.3.tgz", + "integrity": "sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==", "dependencies": { - "connect": "^3.6.5", - "debug": "^2.2.0", - "node-fetch": "^2.2.0", - "ws": "^7.5.1", - "yargs": "^17.6.2" - }, - "bin": { - "metro-inspector-proxy": "src/cli.js" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.6.3" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-inspector-proxy/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, + "node_modules/jest-validate/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "@jest/schemas": "^29.6.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": ">=12" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", - "dev": true, + "node_modules/jest-validate/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", "dependencies": { - "ms": "2.0.0" + "@types/yargs-parser": "*" } }, - "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==", - "dev": true - }, - "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==", - "dev": true, - "engines": { - "node": ">=8.3.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==", + "dependencies": { + "color-convert": "^2.0.1" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "engines": { + "node": ">=8" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/metro-inspector-proxy/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, + "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==", + "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-inspector-proxy/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, + "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==", "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" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/metro-inspector-proxy/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, + "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==" + }, + "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==", "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/metro-minify-terser": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.8.tgz", - "integrity": "sha512-Orbvg18qXHCrSj1KbaeSDVYRy/gkro2PC7Fy2tDSH1c9RB4aH8tuMOIXnKJE+1SXxBtjWmQ5Yirwkth2DyyEZA==", - "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==", "dependencies": { - "terser": "^5.15.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=8" } }, - "node_modules/metro-minify-uglify": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.8.tgz", - "integrity": "sha512-6l8/bEvtVaTSuhG1FqS0+Mc8lZ3Bl4RI8SeRIifVLC21eeSDp4CEBUWSGjpFyUDfi6R5dXzYaFnSgMNyfxADiQ==", - "dev": true, + "node_modules/jest-watcher": { + "version": "29.4.1", + "license": "MIT", "dependencies": { - "uglify-es": "^3.1.9" + "@jest/test-result": "^29.4.1", + "@jest/types": "^29.4.1", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.4.1", + "string-length": "^4.0.1" }, "engines": { - "node": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-react-native-babel-preset": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz", - "integrity": "sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg==", - "dev": true, + "node_modules/jest-watcher/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "@babel/core": "^7.20.0", - "@babel/plugin-proposal-async-generator-functions": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.18.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", - "@babel/plugin-proposal-numeric-separator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.20.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.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.20.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.20.0", - "@babel/plugin-transform-flow-strip-types": "^7.20.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" + "@jest/schemas": "^29.6.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": ">=16" - }, - "peerDependencies": { - "@babel/core": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro-react-native-babel-preset/node_modules/react-refresh": { - "version": "0.4.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/jest-watcher/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" } }, - "node_modules/metro-react-native-babel-transformer": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.8.tgz", - "integrity": "sha512-3h+LfS1WG1PAzhq8QF0kfXjxuXetbY/lgz8vYMQhgrMMp17WM1DNJD0gjx8tOGYbpbBC1qesJ45KMS4o5TA73A==", - "dev": true, + "node_modules/jest-watcher/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", "dependencies": { - "@babel/core": "^7.20.0", - "babel-preset-fbjs": "^3.4.0", - "hermes-parser": "0.12.0", - "metro-react-native-babel-preset": "0.76.8", - "nullthrows": "^1.1.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=16" + "node": ">=8" }, - "peerDependencies": { - "@babel/core": "*" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/metro-resolver": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.8.tgz", - "integrity": "sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ==", - "dev": true, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=16" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/metro-runtime": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.8.tgz", - "integrity": "sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg==", + "node_modules/jest-watcher/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.0.0", - "react-refresh": "^0.4.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=16" + "node": ">=7.0.0" } }, - "node_modules/metro-runtime/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==", + "node_modules/jest-watcher/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest-watcher/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/metro-source-map": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.8.tgz", - "integrity": "sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw==", + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.20.0", - "@babel/types": "^7.20.0", - "invariant": "^2.2.4", - "metro-symbolicate": "0.76.8", - "nullthrows": "^1.1.1", - "ob1": "0.76.8", - "source-map": "^0.5.6", - "vlq": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=8" } }, - "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/jest-when": { + "version": "3.5.2", + "license": "MIT", + "peerDependencies": { + "jest": ">= 25" } }, - "node_modules/metro-symbolicate": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz", - "integrity": "sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w==", + "node_modules/jest-worker": { + "version": "26.6.2", + "dev": true, + "license": "MIT", "dependencies": { - "invariant": "^2.2.4", - "metro-source-map": "0.76.8", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "through2": "^2.0.1", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" }, "engines": { - "node": ">=16" + "node": ">= 10.13.0" } }, - "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==", + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/metro-transform-plugins": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.8.tgz", - "integrity": "sha512-PlkGTQNqS51Bx4vuufSQCdSn2R2rt7korzngo+b5GCkeX5pjinPjnO2kNhQ8l+5bO0iUD/WZ9nsM2PGGKIkWFA==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", "dev": true, + "license": "MIT", "dependencies": { - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/template": "^7.0.0", - "@babel/traverse": "^7.20.0", - "nullthrows": "^1.1.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=16" + "node": ">=8" } }, - "node_modules/metro-transform-worker": { - "version": "0.76.8", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.8.tgz", - "integrity": "sha512-mE1fxVAnJKmwwJyDtThildxxos9+DGs9+vTrx2ktSFMEVTtXS/bIv2W6hux1pqivqAfyJpTeACXHk5u2DgGvIQ==", - "dev": true, + "node_modules/jest/node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { - "@babel/core": "^7.20.0", - "@babel/generator": "^7.20.0", - "@babel/parser": "^7.20.0", - "@babel/types": "^7.20.0", - "babel-preset-fbjs": "^3.4.0", - "metro": "0.76.8", - "metro-babel-transformer": "0.76.8", - "metro-cache": "0.76.8", - "metro-cache-key": "0.76.8", - "metro-source-map": "0.76.8", - "metro-transform-plugins": "0.76.8", - "nullthrows": "^1.1.1" + "@jest/schemas": "^29.6.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": ">=16" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/metro/node_modules/ansi-styles": { + "node_modules/jest/node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/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, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -36924,11 +36704,9 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/metro/node_modules/chalk": { + "node_modules/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, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -36940,120 +36718,203 @@ "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==", - "dev": true - }, - "node_modules/metro/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, + "node_modules/jest/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.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==", - "dev": true, + "node_modules/jest/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "node_modules/jest/node_modules/has-flag": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest/node_modules/supports-color": { + "version": "7.2.0", + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "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==", - "dev": true + "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/metro/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, + "node_modules/joi": { + "version": "17.10.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.10.1.tgz", + "integrity": "sha512-vIiDxQKmRidUVp8KngT8MZSOcmRVm2zV7jbMjNYWuHcJWI0bUck3nRTGQjhpPlQenIQIBC5Vp9AhcnHbWQqafw==", "dependencies": { - "ms": "2.0.0" + "@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/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==", - "dev": true, + "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/jquery": { + "version": "3.6.0", + "license": "MIT" + }, + "node_modules/js-cookie": { + "version": "3.0.1", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" } }, - "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==", + "node_modules/js-string-escape": { + "version": "1.0.1", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "license": "MIT", "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsc-android": { + "version": "250231.0.0", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", + "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==" + }, + "node_modules/jsc-safe-url": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==" + }, + "node_modules/jscodeshift": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", + "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", + "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": "^4.0.4", + "neo-async": "^2.5.0", + "node-dir": "^0.1.17", + "recast": "^0.21.0", + "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": ">= 10.13.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", - "dev": true, + "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": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "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==", - "dev": true - }, - "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==", - "dev": true, + "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": ">=0.10.0" + "node": ">=7.0.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==", - "dev": true, + "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/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": ">=0.10.0" + "node": ">=8" } }, - "node_modules/metro/node_modules/supports-color": { + "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==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -37061,253 +36922,3256 @@ "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==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "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" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=6.0.0" } }, - "node_modules/metro/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.0.0.tgz", + "integrity": "sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12.0.0" } }, - "node_modules/metro/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "node_modules/jsdom": { + "version": "20.0.3", "dev": true, + "license": "MIT", "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" + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/metro/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==", + "node_modules/jsdom/node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=12" + "node": ">=0.4.0" } }, - "node_modules/microevent.ts": { - "version": "0.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "node_modules/jsdom/node_modules/acorn-globals": { + "version": "7.0.1", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" } }, - "node_modules/micromark-core-commonmark": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", - "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "node_modules/jsdom/node_modules/acorn-walk": { + "version": "8.2.0", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" + "license": "MIT", + "engines": { + "node": ">=0.4.0" } }, - "node_modules/micromark-extension-mdx-expression": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", - "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", + "node_modules/jsdom/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "optional": true, - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-events-to-acorn": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/micromark-extension-mdx-expression/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/micromark-extension-mdx-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", - "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", + "node_modules/jsdom/node_modules/form-data": { + "version": "4.0.0", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "@types/acorn": "^4.0.0", - "@types/estree": "^1.0.0", - "estree-util-is-identifier-name": "^2.0.0", - "micromark-factory-mdx-expression": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0", - "vfile-message": "^3.0.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 6" } }, - "node_modules/micromark-extension-mdx-jsx/node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/micromark-extension-mdx-jsx/node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "node_modules/jsdom/node_modules/parse5": { + "version": "7.1.2", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0" + "entities": "^4.4.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/micromark-extension-mdx-jsx/node_modules/vfile-message": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "node_modules/jsdom/node_modules/saxes": { + "version": "6.0.0", "dev": true, - "optional": true, - "peer": true, + "license": "ISC", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^3.0.0" + "xmlchars": "^2.2.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=v12.22.7" } }, - "node_modules/micromark-extension-mdx-md": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", - "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "micromark-util-types": "^1.0.0" + "node_modules/jsesc": { + "version": "2.5.2", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-loader": { + "version": "0.5.7", + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "license": "MIT" + }, + "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/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/json-schema-deref-sync/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/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-migrate": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/json-stable-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.2.tgz", + "integrity": "sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==", + "dependencies": { + "jsonify": "^0.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stringify-pretty-compact": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-3.0.0.tgz", + "integrity": "sha512-Rc2suX5meI0S3bfdZuA7JMFBGkJ875ApfVyq2WHELjBiiG22My/l7/8zPpH/CfFVQHuVLd8NLR0nv6vi0BYYKA==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.3", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/kdbush": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" + }, + "node_modules/kebab-case": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/kebab-case/-/kebab-case-1.0.2.tgz", + "integrity": "sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.2", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/lazy-cache": { + "version": "1.0.4", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lazy-universal-dotenv": { + "version": "3.0.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.5.0", + "app-root-dir": "^1.0.2", + "core-js": "^3.0.4", + "dotenv": "^8.0.0", + "dotenv-expand": "^5.1.0" + }, + "engines": { + "node": ">=6.0.0", + "npm": ">=6.0.0", + "yarn": ">=1.0.0" + } + }, + "node_modules/lazy-universal-dotenv/node_modules/dotenv": { + "version": "8.6.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/lazy-val": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", + "integrity": "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==", + "dev": true + }, + "node_modules/lcid": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.1.1", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lightningcss": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz", + "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==", + "dependencies": { + "detect-libc": "^1.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.19.0", + "lightningcss-darwin-x64": "1.19.0", + "lightningcss-linux-arm-gnueabihf": "1.19.0", + "lightningcss-linux-arm64-gnu": "1.19.0", + "lightningcss-linux-arm64-musl": "1.19.0", + "lightningcss-linux-x64-gnu": "1.19.0", + "lightningcss-linux-x64-musl": "1.19.0", + "lightningcss-win32-x64-msvc": "1.19.0" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz", + "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz", + "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz", + "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz", + "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz", + "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz", + "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz", + "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz", + "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "license": "MIT" + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "2.2.0", + "license": "MIT", + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "2.3.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loader-runner": { + "version": "2.4.0", + "license": "MIT", + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "devOptional": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/localforage": { + "version": "1.10.0", + "license": "Apache-2.0", + "dependencies": { + "lie": "3.1.1" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "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/lodash.truncate": { + "version": "4.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "dev": true, + "license": "MIT" + }, + "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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/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/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/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/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/logkitty/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/logkitty/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/logkitty/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/logkitty/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/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/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/long": { + "version": "4.0.0", + "license": "Apache-2.0" + }, + "node_modules/longest": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lottie-ios": { + "version": "3.5.0", + "license": "Apache-2.0", + "peer": true + }, + "node_modules/lottie-react-native": { + "version": "5.1.6", + "license": "Apache-2.0", + "dependencies": { + "invariant": "^2.2.2", + "react-native-safe-modules": "^1.0.3" + }, + "peerDependencies": { + "lottie-ios": "^3.4.0", + "react": "*", + "react-native": ">=0.46", + "react-native-windows": ">=0.63.x" + }, + "peerDependenciesMeta": { + "react-native-windows": { + "optional": true + } + } + }, + "node_modules/lottie-react-native/node_modules/dedent": { + "version": "0.6.0", + "license": "MIT" + }, + "node_modules/lottie-react-native/node_modules/react-native-safe-modules": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "dedent": "^0.6.0" + }, + "peerDependencies": { + "react-native": "*" + } + }, + "node_modules/lottie-web": { + "version": "5.10.2", + "license": "MIT" + }, + "node_modules/loud-rejection": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-cancellable-promise": { + "version": "1.1.0", + "license": "MIT", + "funding": { + "url": "https://github.com/wojtekmaj/make-cancellable-promise?sponsor=1" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/make-event-props": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.6.1.tgz", + "integrity": "sha512-JhvWq/iz1BvlmnPvLJjXv+xnMPJZuychrDC68V+yCGQJn5chcA8rLGKo5EP1XwIKVrigSXKLmbeXAGkf36wdCQ==", + "funding": { + "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-age-cleaner": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "p-defer": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-obj": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-or-similar": { + "version": "1.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/map-stream": { + "version": "0.0.7", + "license": "MIT" + }, + "node_modules/map-visit": { + "version": "1.0.0", + "devOptional": true, + "license": "MIT", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mapbox-gl": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-2.15.0.tgz", + "integrity": "sha512-fjv+aYrd5TIHiL7wRa+W7KjtUqKWziJMZUkK5hm8TvJ3OLeNPx4NmW/DgfYhd/jHej8wWL+QJBDbdMMAKvNC0A==", + "dependencies": { + "@mapbox/geojson-rewind": "^0.5.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^2.0.1", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^2.0.6", + "@mapbox/unitbezier": "^0.0.1", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "csscolorparser": "~1.0.3", + "earcut": "^2.2.4", + "geojson-vt": "^3.2.1", + "gl-matrix": "^3.4.3", + "grid-index": "^1.1.0", + "kdbush": "^4.0.1", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^2.0.0", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "supercluster": "^8.0.0", + "tinyqueue": "^2.0.3", + "vt-pbf": "^3.1.3" + } + }, + "node_modules/markdown-builder": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/markdown-builder/-/markdown-builder-0.9.0.tgz", + "integrity": "sha512-UovCyEEzMeKE7l88fbOk9SIJkOG7KXkg+TdudN8rvOtCtBO5uu1X27HSnM7LS/xH+vaShJLGpkBcYYcojWNx/g==", + "dev": true, + "dependencies": { + "husky": "^1.0.0-rc.14" + } + }, + "node_modules/markdown-escapes": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/markdown-extensions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", + "dev": true, + "optional": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/markdown-to-jsx": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", + "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", + "dev": true, + "engines": { + "node": ">= 10" + }, + "peerDependencies": { + "react": ">= 0.14.0" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mathjs": { + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/mathjs/-/mathjs-11.8.0.tgz", + "integrity": "sha512-I7r8HCoqUGyEiHQdeOCF2m2k9N+tcOHO3cZQ3tyJkMMBQMFqMR7dMQEboBMJAiFW2Um3PEItGPwcOc4P6KRqwg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0", + "complex.js": "^2.1.1", + "decimal.js": "^10.4.3", + "escape-latex": "^1.2.0", + "fraction.js": "^4.2.0", + "javascript-natural-sort": "^0.7.1", + "seedrandom": "^3.0.5", + "tiny-emitter": "^2.1.0", + "typed-function": "^4.1.0" + }, + "bin": { + "mathjs": "bin/cli.js" + }, + "engines": { + "node": ">= 14" + } + }, + "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/md5.js": { + "version": "1.3.5", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/md5/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/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/mdast-squeeze-paragraphs": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "unist-util-remove": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", + "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdx-jsx": "^2.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", + "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", + "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "ccount": "^2.0.0", + "mdast-util-from-markdown": "^1.1.0", + "mdast-util-to-markdown": "^1.3.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^4.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/parse-entities": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", + "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/stringify-entities": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", + "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-remove-position": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", + "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", + "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "10.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", + "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown/node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "optional": true, + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "license": "CC0-1.0" + }, + "node_modules/mdurl": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mem": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "map-age-cleaner": "^0.1.3", + "mimic-fn": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/mem?sponsor=1" + } + }, + "node_modules/mem/node_modules/mimic-fn": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/memfs": { + "version": "3.4.7", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "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/memoizerific": { + "version": "1.11.3", + "dev": true, + "license": "MIT", + "dependencies": { + "map-or-similar": "^1.5.0" + } + }, + "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/memory-fs": { + "version": "0.4.1", + "license": "MIT", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "node_modules/meow": { + "version": "3.7.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/find-up": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/get-stdin": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/indent-string": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/path-exists": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/path-type": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/read-pkg": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/read-pkg-up": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/redent": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/meow/node_modules/strip-indent": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "get-stdin": "^4.0.1" + }, + "bin": { + "strip-indent": "cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/merge-options": { + "version": "3.0.4", + "license": "MIT", + "dependencies": { + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge-refs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.2.1.tgz", + "integrity": "sha512-pRPz39HQz2xzHdXAGvtJ9S8aEpNgpUjzb5yPC3ytozodmsHg+9nqgRs7/YOmn9fM/TLzntAC8AdGTidKxOq9TQ==", + "dependencies": { + "@types/react": "*" + }, + "funding": { + "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/metro": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.8.tgz", + "integrity": "sha512-oQA3gLzrrYv3qKtuWArMgHPbHu8odZOD9AoavrqSFllkPgOtmkBvNNDLCELqv5SjBfqjISNffypg+5UGG3y0pg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.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", + "graceful-fs": "^4.2.4", + "hermes-parser": "0.12.0", + "image-size": "^1.0.2", + "invariant": "^2.2.4", + "jest-worker": "^27.2.0", + "jsc-safe-url": "^0.2.2", + "lodash.throttle": "^4.1.1", + "metro-babel-transformer": "0.76.8", + "metro-cache": "0.76.8", + "metro-cache-key": "0.76.8", + "metro-config": "0.76.8", + "metro-core": "0.76.8", + "metro-file-map": "0.76.8", + "metro-inspector-proxy": "0.76.8", + "metro-minify-terser": "0.76.8", + "metro-minify-uglify": "0.76.8", + "metro-react-native-babel-preset": "0.76.8", + "metro-resolver": "0.76.8", + "metro-runtime": "0.76.8", + "metro-source-map": "0.76.8", + "metro-symbolicate": "0.76.8", + "metro-transform-plugins": "0.76.8", + "metro-transform-worker": "0.76.8", + "mime-types": "^2.1.27", + "node-fetch": "^2.2.0", + "nullthrows": "^1.1.1", + "rimraf": "^3.0.2", + "serialize-error": "^2.1.0", + "source-map": "^0.5.6", + "strip-ansi": "^6.0.0", + "throat": "^5.0.0", + "ws": "^7.5.1", + "yargs": "^17.6.2" + }, + "bin": { + "metro": "src/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-babel-transformer": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz", + "integrity": "sha512-Hh6PW34Ug/nShlBGxkwQJSgPGAzSJ9FwQXhUImkzdsDgVu6zj5bx258J8cJVSandjNoQ8nbaHK6CaHlnbZKbyA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.0", + "hermes-parser": "0.12.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-cache": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.8.tgz", + "integrity": "sha512-QBJSJIVNH7Hc/Yo6br/U/qQDUpiUdRgZ2ZBJmvAbmAKp2XDzsapnMwK/3BGj8JNWJF7OLrqrYHsRsukSbUBpvQ==", + "dev": true, + "dependencies": { + "metro-core": "0.76.8", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-cache-key": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.8.tgz", + "integrity": "sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-config": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.8.tgz", + "integrity": "sha512-SL1lfKB0qGHALcAk2zBqVgQZpazDYvYFGwCK1ikz0S6Y/CM2i2/HwuZN31kpX6z3mqjv/6KvlzaKoTb1otuSAA==", + "dev": true, + "dependencies": { + "connect": "^3.6.5", + "cosmiconfig": "^5.0.5", + "jest-validate": "^29.2.1", + "metro": "0.76.8", + "metro-cache": "0.76.8", + "metro-core": "0.76.8", + "metro-runtime": "0.76.8" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-config/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "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/metro-config/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==", + "dev": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/metro-config/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==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/metro-config/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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/metro-core": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.8.tgz", + "integrity": "sha512-sl2QLFI3d1b1XUUGxwzw/KbaXXU/bvFYrSKz6Sg19AdYGWFyzsgZ1VISRIDf+HWm4R/TJXluhWMEkEtZuqi3qA==", + "dev": true, + "dependencies": { + "lodash.throttle": "^4.1.1", + "metro-resolver": "0.76.8" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-file-map": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.8.tgz", + "integrity": "sha512-A/xP1YNEVwO1SUV9/YYo6/Y1MmzhL4ZnVgcJC3VmHp/BYVOXVStzgVbWv2wILe56IIMkfXU+jpXrGKKYhFyHVw==", + "dev": true, + "dependencies": { + "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-util": "^27.2.0", + "jest-worker": "^27.2.0", + "micromatch": "^4.0.4", + "node-abort-controller": "^3.1.1", + "nullthrows": "^1.1.1", + "walker": "^1.0.7" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "^2.3.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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "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/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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/metro-inspector-proxy": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.8.tgz", + "integrity": "sha512-Us5o5UEd4Smgn1+TfHX4LvVPoWVo9VsVMn4Ldbk0g5CQx3Gu0ygc/ei2AKPGTwsOZmKxJeACj7yMH2kgxQP/iw==", + "dev": true, + "dependencies": { + "connect": "^3.6.5", + "debug": "^2.2.0", + "node-fetch": "^2.2.0", + "ws": "^7.5.1", + "yargs": "^17.6.2" + }, + "bin": { + "metro-inspector-proxy": "src/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-inspector-proxy/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/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==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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": "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/metro-inspector-proxy/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "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/metro-inspector-proxy/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/metro-minify-terser": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.8.tgz", + "integrity": "sha512-Orbvg18qXHCrSj1KbaeSDVYRy/gkro2PC7Fy2tDSH1c9RB4aH8tuMOIXnKJE+1SXxBtjWmQ5Yirwkth2DyyEZA==", + "dev": true, + "dependencies": { + "terser": "^5.15.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-minify-uglify": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.8.tgz", + "integrity": "sha512-6l8/bEvtVaTSuhG1FqS0+Mc8lZ3Bl4RI8SeRIifVLC21eeSDp4CEBUWSGjpFyUDfi6R5dXzYaFnSgMNyfxADiQ==", + "dev": true, + "dependencies": { + "uglify-es": "^3.1.9" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-react-native-babel-preset": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz", + "integrity": "sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg==", + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/plugin-proposal-async-generator-functions": "^7.0.0", + "@babel/plugin-proposal-class-properties": "^7.18.0", + "@babel/plugin-proposal-export-default-from": "^7.0.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.0", + "@babel/plugin-proposal-numeric-separator": "^7.0.0", + "@babel/plugin-proposal-object-rest-spread": "^7.20.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.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.20.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.20.0", + "@babel/plugin-transform-flow-strip-types": "^7.20.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": ">=16" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro-react-native-babel-preset/node_modules/react-refresh": { + "version": "0.4.3", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/metro-react-native-babel-transformer": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.8.tgz", + "integrity": "sha512-3h+LfS1WG1PAzhq8QF0kfXjxuXetbY/lgz8vYMQhgrMMp17WM1DNJD0gjx8tOGYbpbBC1qesJ45KMS4o5TA73A==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.0", + "babel-preset-fbjs": "^3.4.0", + "hermes-parser": "0.12.0", + "metro-react-native-babel-preset": "0.76.8", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@babel/core": "*" + } + }, + "node_modules/metro-resolver": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.8.tgz", + "integrity": "sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-runtime": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.8.tgz", + "integrity": "sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg==", + "dependencies": { + "@babel/runtime": "^7.0.0", + "react-refresh": "^0.4.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-runtime/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/metro-source-map": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.8.tgz", + "integrity": "sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw==", + "dependencies": { + "@babel/traverse": "^7.20.0", + "@babel/types": "^7.20.0", + "invariant": "^2.2.4", + "metro-symbolicate": "0.76.8", + "nullthrows": "^1.1.1", + "ob1": "0.76.8", + "source-map": "^0.5.6", + "vlq": "^1.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "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.76.8", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz", + "integrity": "sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w==", + "dependencies": { + "invariant": "^2.2.4", + "metro-source-map": "0.76.8", + "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": ">=16" + } + }, + "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.76.8", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.8.tgz", + "integrity": "sha512-PlkGTQNqS51Bx4vuufSQCdSn2R2rt7korzngo+b5GCkeX5pjinPjnO2kNhQ8l+5bO0iUD/WZ9nsM2PGGKIkWFA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.20.0", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/metro-transform-worker": { + "version": "0.76.8", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.8.tgz", + "integrity": "sha512-mE1fxVAnJKmwwJyDtThildxxos9+DGs9+vTrx2ktSFMEVTtXS/bIv2W6hux1pqivqAfyJpTeACXHk5u2DgGvIQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.20.0", + "@babel/generator": "^7.20.0", + "@babel/parser": "^7.20.0", + "@babel/types": "^7.20.0", + "babel-preset-fbjs": "^3.4.0", + "metro": "0.76.8", + "metro-babel-transformer": "0.76.8", + "metro-cache": "0.76.8", + "metro-cache-key": "0.76.8", + "metro-source-map": "0.76.8", + "metro-transform-plugins": "0.76.8", + "nullthrows": "^1.1.1" + }, + "engines": { + "node": ">=16" + } + }, + "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==", + "dev": true, + "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==", + "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/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==", + "dev": true + }, + "node_modules/metro/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/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==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "ms": "2.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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "has-flag": "^4.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==", + "dev": true, + "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": "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/metro/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "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/metro/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/microevent.ts": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "peer": true, + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "peer": true, + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", + "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "optional": true, + "peer": true, + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/micromark-extension-mdx-expression/node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", + "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true, + "optional": true, + "peer": true + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-jsx/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", + "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", + "dev": true, + "optional": true, + "peer": true, + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/micromark-extension-mdxjs": { @@ -38070,7 +40934,6 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -38080,7 +40943,6 @@ }, "node_modules/minipass-collect": { "version": "1.0.2", - "dev": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -38091,7 +40953,6 @@ }, "node_modules/minipass-flush": { "version": "1.0.5", - "dev": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -38102,7 +40963,6 @@ }, "node_modules/minipass-pipeline": { "version": "1.2.4", - "dev": true, "license": "ISC", "dependencies": { "minipass": "^3.0.0" @@ -38113,7 +40973,6 @@ }, "node_modules/minizlib": { "version": "2.1.2", - "dev": true, "license": "MIT", "dependencies": { "minipass": "^3.0.0", @@ -38198,7 +41057,6 @@ }, "node_modules/mkdirp": { "version": "1.0.4", - "dev": true, "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" @@ -38309,6 +41167,70 @@ "dev": true, "license": "ISC" }, + "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/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "optional": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "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/nan": { "version": "2.17.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", @@ -38358,6 +41280,15 @@ "version": "1.4.0", "license": "MIT" }, + "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", "license": "MIT", @@ -38376,7 +41307,6 @@ }, "node_modules/nice-try": { "version": "1.0.5", - "dev": true, "license": "MIT" }, "node_modules/no-case": { @@ -38469,7 +41399,6 @@ }, "node_modules/node-forge": { "version": "1.3.1", - "dev": true, "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" @@ -38603,6 +41532,36 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.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/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/npm-package-arg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "license": "MIT", @@ -39002,7 +41961,6 @@ "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -39168,9 +42126,7 @@ }, "node_modules/os-homedir": { "version": "1.0.2", - "dev": true, "license": "MIT", - "optional": true, "engines": { "node": ">=0.10.0" } @@ -39192,6 +42148,15 @@ "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-all": { "version": "2.1.0", "dev": true, @@ -39262,7 +42227,6 @@ }, "node_modules/p-finally": { "version": "1.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -39296,7 +42260,6 @@ }, "node_modules/p-map": { "version": "4.0.0", - "dev": true, "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" @@ -39416,6 +42379,25 @@ "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/parse5": { "version": "6.0.1", "dev": true, @@ -39445,6 +42427,15 @@ "node": ">=0.10.0" } }, + "node_modules/password-prompt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", + "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", + "dependencies": { + "ansi-escapes": "^4.3.2", + "cross-spawn": "^7.0.3" + } + }, "node_modules/patch-package": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", @@ -39653,7 +42644,6 @@ }, "node_modules/path-type": { "version": "4.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -39801,7 +42791,6 @@ }, "node_modules/pkg-up": { "version": "3.1.0", - "dev": true, "license": "MIT", "dependencies": { "find-up": "^3.0.0" @@ -39812,7 +42801,6 @@ }, "node_modules/pkg-up/node_modules/find-up": { "version": "3.0.0", - "dev": true, "license": "MIT", "dependencies": { "locate-path": "^3.0.0" @@ -39823,7 +42811,6 @@ }, "node_modules/pkg-up/node_modules/locate-path": { "version": "3.0.0", - "dev": true, "license": "MIT", "dependencies": { "p-locate": "^3.0.0", @@ -39835,7 +42822,6 @@ }, "node_modules/pkg-up/node_modules/p-limit": { "version": "2.3.0", - "dev": true, "license": "MIT", "dependencies": { "p-try": "^2.0.0" @@ -39849,7 +42835,6 @@ }, "node_modules/pkg-up/node_modules/p-locate": { "version": "3.0.0", - "dev": true, "license": "MIT", "dependencies": { "p-limit": "^2.0.0" @@ -40119,6 +43104,17 @@ "node": ">=6.0.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-error": { "version": "4.0.0", "dev": true, @@ -40176,7 +43172,6 @@ }, "node_modules/progress": { "version": "2.0.3", - "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -40191,7 +43186,6 @@ }, "node_modules/promise-inflight": { "version": "1.0.1", - "dev": true, "license": "ISC" }, "node_modules/promise-retry": { @@ -40336,7 +43330,6 @@ }, "node_modules/pump": { "version": "3.0.0", - "dev": true, "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -40402,6 +43395,14 @@ "node": ">=10.13.0" } }, + "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/qrcode/node_modules/ansi-styles": { "version": "4.3.0", "license": "MIT", @@ -40585,7 +43586,6 @@ }, "node_modules/querystringify": { "version": "2.2.0", - "dev": true, "license": "MIT" }, "node_modules/queue": { @@ -40598,7 +43598,6 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", - "dev": true, "funding": [ { "type": "github", @@ -40723,6 +43722,28 @@ "quickselect": "^2.0.0" } }, + "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.2.0", "license": "MIT", @@ -43149,6 +46170,11 @@ "license": "ISC", "optional": true }, + "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/renderkid": { "version": "3.0.0", "dev": true, @@ -43239,6 +46265,32 @@ "version": "2.0.0", "license": "ISC" }, + "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/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/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/requireindex": { "version": "1.2.0", "dev": true, @@ -43249,12 +46301,10 @@ }, "node_modules/requires-port": { "version": "1.0.0", - "dev": true, "license": "MIT" }, "node_modules/reselect": { "version": "4.1.7", - "dev": true, "license": "MIT" }, "node_modules/resolve": { @@ -43359,7 +46409,6 @@ }, "node_modules/reusify": { "version": "1.0.4", - "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -43440,7 +46489,6 @@ }, "node_modules/run-parallel": { "version": "1.2.0", - "dev": true, "funding": [ { "type": "github", @@ -43524,6 +46572,12 @@ "version": "5.1.2", "license": "MIT" }, + "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", "devOptional": true, @@ -44207,6 +47261,14 @@ "dev": true, "optional": true }, + "node_modules/slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -44495,7 +47557,6 @@ }, "node_modules/source-map-js": { "version": "1.0.2", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -44640,7 +47701,6 @@ }, "node_modules/ssri": { "version": "8.0.1", - "dev": true, "license": "ISC", "dependencies": { "minipass": "^3.1.1" @@ -45116,7 +48176,6 @@ }, "node_modules/strip-eof": { "version": "1.0.0", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -45155,6 +48214,11 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, + "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/style-loader": { "version": "2.0.0", "dev": true, @@ -45186,6 +48250,48 @@ "version": "0.1.2", "license": "MIT" }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "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/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "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/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/sudo-prompt": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", @@ -45287,6 +48393,37 @@ "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", "license": "MIT", @@ -45407,7 +48544,6 @@ "version": "6.1.15", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", - "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -45424,7 +48560,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -45452,6 +48587,14 @@ "node": ">=0.10.0" } }, + "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-file": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", @@ -45476,6 +48619,79 @@ "node": ">=12" } }, + "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/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/tempy/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/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/terser": { "version": "5.19.2", "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", @@ -45654,9 +48870,27 @@ }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, "license": "MIT" }, + "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", @@ -45941,6 +49175,14 @@ "node": ">=12" } }, + "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/tree-kill": { "version": "1.2.2", "dev": true, @@ -46021,6 +49263,11 @@ "node": ">=6.10" } }, + "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-pnp": { "version": "1.2.0", "dev": true, @@ -46140,7 +49387,6 @@ }, "node_modules/type-is": { "version": "1.6.18", - "dev": true, "license": "MIT", "dependencies": { "media-typer": "0.3.0", @@ -46419,7 +49665,6 @@ }, "node_modules/unique-filename": { "version": "1.1.1", - "dev": true, "license": "ISC", "dependencies": { "unique-slug": "^2.0.0" @@ -46427,12 +49672,22 @@ }, "node_modules/unique-slug": { "version": "2.0.2", - "dev": true, "license": "ISC", "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/unist-builder": { "version": "2.0.3", "dev": true, @@ -46733,6 +49988,11 @@ "querystring": "0.2.0" } }, + "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-loader": { "version": "4.1.1", "dev": true, @@ -46761,7 +50021,6 @@ }, "node_modules/url-parse": { "version": "1.5.10", - "dev": true, "license": "MIT", "dependencies": { "querystringify": "^2.1.1", @@ -46954,6 +50213,11 @@ "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", "license": "Apache-2.0", @@ -46962,6 +50226,14 @@ "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/value-equal": { "version": "0.2.1", "license": "MIT" @@ -48330,6 +51602,11 @@ "node": ">= 0.8.0" } }, + "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", "dev": true, @@ -48491,7 +51768,6 @@ "version": "8.13.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, "engines": { "node": ">=10.0.0" }, @@ -49247,7 +52523,6 @@ }, "@babel/plugin-proposal-decorators": { "version": "7.19.1", - "dev": true, "requires": { "@babel/helper-create-class-features-plugin": "^7.19.0", "@babel/helper-plugin-utils": "^7.19.0", @@ -49265,7 +52540,6 @@ }, "@babel/plugin-proposal-export-namespace-from": { "version": "7.18.9", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.18.9", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -49369,7 +52643,6 @@ }, "@babel/plugin-syntax-decorators": { "version": "7.19.0", - "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.19.0" } @@ -50840,74 +54113,628 @@ } } }, - "@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", - "dev": true + "@eslint-community/regexpp": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "dev": true + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "ignore": { + "version": "4.0.6", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "dev": true + }, + "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 + } + } + }, + "@expensify/react-native-web": { + "version": "0.18.15", + "requires": { + "@babel/runtime": "^7.18.6", + "create-react-class": "^15.7.0", + "fbjs": "^3.0.4", + "inline-style-prefixer": "^6.0.1", + "normalize-css-color": "^1.0.2", + "postcss-value-parser": "^4.2.0", + "styleq": "^0.1.2" + } + }, + "@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==", + "requires": { + "mv": "~2", + "safe-json-stringify": "~1", + "uuid": "^8.0.0" + } + }, + "@expo/cli": { + "version": "0.10.13", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.10.13.tgz", + "integrity": "sha512-8ciyz+yIDih6zCNMWK0IyEv411W7vej/TaWIFGarogPVbFokXrUKr0aKoQG1RU1SLlY4eUpHakbIzqog+rhJdQ==", + "requires": { + "@babel/runtime": "^7.20.0", + "@expo/code-signing-certificates": "0.0.5", + "@expo/config": "~8.1.0", + "@expo/config-plugins": "~7.2.0", + "@expo/dev-server": "0.5.5", + "@expo/devcert": "^1.0.0", + "@expo/env": "0.0.5", + "@expo/json-file": "^8.2.37", + "@expo/metro-config": "~0.10.0", + "@expo/osascript": "^2.0.31", + "@expo/package-manager": "~1.1.0", + "@expo/plist": "^0.0.20", + "@expo/prebuild-config": "6.2.6", + "@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", + "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", + "require-from-string": "^2.0.2", + "requireg": "^0.2.2", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "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", + "wrap-ansi": "^7.0.0", + "ws": "^8.12.1" + }, + "dependencies": { + "@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==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@expo/config-plugins": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz", + "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==", + "requires": { + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "~8.2.37", + "@expo/plist": "^0.0.20", + "@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.5.3", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "@expo/config-types": { + "version": "49.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz", + "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==" + }, + "@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==", + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" + } + }, + "@expo/plist": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", + "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", + "requires": { + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "arg": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz", + "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==" + }, + "better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "requires": { + "open": "^8.0.4" + } + }, + "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==", + "requires": { + "big-integer": "1.6.x" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "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==" + }, + "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==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "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==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "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==" + }, + "minipass": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", + "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "requires": { + "yallist": "^4.0.0" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "ora": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", + "requires": { + "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" + }, + "dependencies": { + "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==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "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==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "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==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "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==", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + } + } + } + } + }, + "@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==", + "requires": { + "node-forge": "^1.2.1", + "nullthrows": "^1.1.1" + } }, - "@eslint/eslintrc": { - "version": "0.4.3", - "dev": true, + "@expo/config": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@expo/config/-/config-8.1.2.tgz", + "integrity": "sha512-4e7hzPj50mQIlsrzOH6XZ36O094mPfPTIDIH4yv49bWNMc7GFLTofB/lcT+QyxiLaJuC0Wlk9yOLB8DIqmtwug==", "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" + "@babel/code-frame": "~7.10.4", + "@expo/config-plugins": "~7.2.0", + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "^8.2.37", + "getenv": "^1.0.0", + "glob": "7.1.6", + "require-from-string": "^2.0.2", + "resolve-from": "^5.0.0", + "semver": "7.5.3", + "slugify": "^1.3.4", + "sucrase": "^3.20.0" }, "dependencies": { - "ajv": { - "version": "6.12.6", - "dev": true, + "@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==", "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@babel/highlight": "^7.10.4" } }, - "globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", - "dev": true, + "@expo/config-plugins": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz", + "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==", "requires": { - "type-fest": "^0.20.2" + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "~8.2.37", + "@expo/plist": "^0.0.20", + "@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.5.3", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.6.0" } }, - "ignore": { - "version": "4.0.6", - "dev": true + "@expo/config-types": { + "version": "49.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz", + "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==" }, - "json-schema-traverse": { - "version": "0.4.1", - "dev": true + "@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==", + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" + } }, - "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 + "@expo/plist": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", + "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", + "requires": { + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + } + } } } }, - "@expensify/react-native-web": { - "version": "0.18.15", - "requires": { - "@babel/runtime": "^7.18.6", - "create-react-class": "^15.7.0", - "fbjs": "^3.0.4", - "inline-style-prefixer": "^6.0.1", - "normalize-css-color": "^1.0.2", - "postcss-value-parser": "^4.2.0", - "styleq": "^0.1.2" - } - }, "@expo/config-plugins": { "version": "4.1.5", "requires": { @@ -50964,6 +54791,409 @@ "@expo/config-types": { "version": "45.0.0" }, + "@expo/dev-server": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@expo/dev-server/-/dev-server-0.5.5.tgz", + "integrity": "sha512-t0fT8xH1exwYsH5hh7bAt85VF+gXxg24qrbny2rR/iKoPTWFCd2JNQV8pvfLg51hvrywQ3YCBuT3lU1w7aZxFA==", + "requires": { + "@expo/bunyan": "4.0.0", + "@expo/metro-config": "~0.10.0", + "@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", + "serialize-error": "6.0.0", + "temp-dir": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "requires": { + "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" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "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==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "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==", + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "serialize-error": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-6.0.0.tgz", + "integrity": "sha512-3vmBkMZLQO+BR4RPHcyRGdE09XCF6cvxzk2N2qn8Er3F91cy8Qt7VvEbZBOpaL53qsBbe2cFOefU6tRY6WDelA==", + "requires": { + "type-fest": "^0.12.0" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-fest": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz", + "integrity": "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==" + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + } + } + }, + "@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==", + "requires": { + "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" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "requires": { + "minimist": "^1.2.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "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==" + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "@expo/env": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.0.5.tgz", + "integrity": "sha512-UXuKAqyXfhMQC3gP0OyjXmFX08Z1fkVWiGBN7bYzfoX8LHatjeHrDtI6w5nDvd8XPxPvmqaZoEDw1lW3+dz3oQ==", + "requires": { + "chalk": "^4.0.0", + "debug": "^4.3.4", + "dotenv": "~16.0.3", + "dotenv-expand": "~10.0.0", + "getenv": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" + }, + "dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@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==", + "requires": { + "@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" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "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==" + }, + "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==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "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==" + }, + "tempy": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.3.0.tgz", + "integrity": "sha512-WrH/pui8YCwmeiAoxV+lpRH9HpRtgBhSR2ViBPgpGb/wnYDzp21R4MN45fsCGvLROvY67o3byhJRYRONJyImVQ==", + "requires": { + "temp-dir": "^1.0.0", + "type-fest": "^0.3.1", + "unique-string": "^1.0.0" + } + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==" + }, + "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==", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + } + } + }, "@expo/json-file": { "version": "8.2.36", "requires": { @@ -50988,6 +55218,203 @@ } } }, + "@expo/metro-config": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.10.7.tgz", + "integrity": "sha512-uACymEiyX0447hI4unt+2cemLQkTZXKvTev936NhtsgVnql45EP0V0pzmo/0H0WlHaAGXgvOBZJl8wFqcJ3CbQ==", + "requires": { + "@expo/config": "~8.1.0", + "@expo/env": "0.0.5", + "@expo/json-file": "~8.2.37", + "chalk": "^4.1.0", + "debug": "^4.3.2", + "find-yarn-workspace-root": "~2.0.0", + "getenv": "^1.0.0", + "jsc-safe-url": "^0.2.4", + "lightningcss": "~1.19.0", + "postcss": "~8.4.21", + "resolve-from": "^5.0.0", + "sucrase": "^3.20.0" + }, + "dependencies": { + "@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==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@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==", + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "postcss": { + "version": "8.4.30", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", + "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@expo/osascript": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.0.33.tgz", + "integrity": "sha512-FQinlwHrTlJbntp8a7NAlCKedVXe06Va/0DSLXRO8lZVtgbEMrYYSUZWQNcOlNtc58c2elNph6z9dMOYwSo3JQ==", + "requires": { + "@expo/spawn-async": "^1.5.0", + "exec-async": "^2.2.0" + } + }, + "@expo/package-manager": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.1.2.tgz", + "integrity": "sha512-JI9XzrxB0QVXysyuJ996FPCJGDCYRkbUvgG4QmMTTMFA1T+mv8YzazC3T9C1pHQUAAveVCre1+Pqv0nZXN24Xg==", + "requires": { + "@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", + "js-yaml": "^3.13.1", + "micromatch": "^4.0.2", + "npm-package-arg": "^7.0.0", + "split": "^1.0.1", + "sudo-prompt": "9.1.1" + }, + "dependencies": { + "@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==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@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==", + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "sudo-prompt": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz", + "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "@expo/plist": { "version": "0.0.18", "requires": { @@ -50996,9 +55423,306 @@ "xmlbuilder": "^14.0.0" } }, + "@expo/prebuild-config": { + "version": "6.2.6", + "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-6.2.6.tgz", + "integrity": "sha512-uFVvDAm9dPg9p1qpnr4CVnpo2hmkZIL5FQz+VlIdXXJpe7ySh/qTGHtKWY/lWUshQkAJ0nwbKGPztGWdABns/Q==", + "requires": { + "@expo/config": "~8.1.0", + "@expo/config-plugins": "~7.2.0", + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/image-utils": "0.3.22", + "@expo/json-file": "^8.2.37", + "debug": "^4.3.1", + "fs-extra": "^9.0.0", + "resolve-from": "^5.0.0", + "semver": "7.5.3", + "xml2js": "0.6.0" + }, + "dependencies": { + "@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==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@expo/config-plugins": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz", + "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==", + "requires": { + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "~8.2.37", + "@expo/plist": "^0.0.20", + "@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.5.3", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "@expo/config-types": { + "version": "49.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz", + "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==" + }, + "@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==", + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" + } + }, + "@expo/plist": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", + "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", + "requires": { + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + } + } + } + } + }, + "@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==", + "requires": { + "@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" + }, + "dependencies": { + "fetch-retry": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz", + "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==" + } + } + }, "@expo/sdk-runtime-versions": { "version": "1.0.0" }, + "@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==", + "requires": { + "cross-spawn": "^6.0.5" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "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==" + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "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==", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@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==" + }, + "@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==", + "requires": { + "@babel/code-frame": "7.10.4", + "chalk": "^4.1.0", + "find-up": "^5.0.0", + "js-yaml": "^4.1.0" + }, + "dependencies": { + "@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==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "@floating-ui/core": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz", @@ -51121,8 +55845,7 @@ } }, "@gar/promisify": { - "version": "1.1.3", - "dev": true + "version": "1.1.3" }, "@gorhom/portal": { "version": "1.0.14", @@ -51130,6 +55853,12 @@ "nanoid": "^3.3.1" } }, + "@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==", + "requires": {} + }, "@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -52506,19 +57235,16 @@ }, "@nodelib/fs.scandir": { "version": "2.1.5", - "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true + "version": "2.0.5" }, "@nodelib/fs.walk": { "version": "1.2.8", - "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -52526,7 +57252,6 @@ }, "@npmcli/fs": { "version": "1.1.1", - "dev": true, "requires": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" @@ -52534,7 +57259,6 @@ }, "@npmcli/move-file": { "version": "1.1.2", - "dev": true, "requires": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -53148,7 +57872,9 @@ } }, "@react-native-async-storage/async-storage": { - "version": "1.17.11", + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.19.3.tgz", + "integrity": "sha512-CwGfoHCWdPOTPS+2fW6YRE1fFBpT9++ahLEroX5hkgwyoQ+TkmjOaUxixdEIoVua9Pz5EF2pGOIJzqOTMWfBlA==", "requires": { "merge-options": "^3.0.4" } @@ -54651,6 +59377,15 @@ "debounce": "^1.2.0" } }, + "@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==", + "requires": { + "component-type": "^1.2.1", + "join-component": "^1.1.0" + } + }, "@sentry/browser": { "version": "7.11.1", "requires": { @@ -62273,6 +67008,24 @@ "integrity": "sha512-dVlBPPYXD/4SEshv/X7mmt3xF8WfnNqiSNzCyqJSLAZ1aJuPpP9Z5WemCYsa2iv6goRZvtJSE4P79QKlfoTwXw==", "requires": {} }, + "@urql/core": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/@urql/core/-/core-2.3.6.tgz", + "integrity": "sha512-PUxhtBh7/8167HJK6WqBv6Z0piuiaZHQGYbhwpNL9aIQmLROPEdaUYkY4wh45wPQXcTpnd11l0q3Pw+TI11pdw==", + "requires": { + "@graphql-typed-document-node/core": "^3.1.0", + "wonka": "^4.0.14" + } + }, + "@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==", + "requires": { + "@urql/core": ">=2.3.1", + "wonka": "^4.0.14" + } + }, "@vercel/ncc": { "version": "0.27.0", "dev": true @@ -62606,7 +67359,9 @@ } }, "@xmldom/xmldom": { - "version": "0.7.5" + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.13.tgz", + "integrity": "sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==" }, "@xtuc/ieee754": { "version": "1.2.0", @@ -62694,14 +67449,12 @@ }, "agent-base": { "version": "6.0.2", - "dev": true, "requires": { "debug": "4" } }, "aggregate-error": { "version": "3.1.0", - "dev": true, "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -62876,6 +67629,11 @@ "entities": "^2.0.0" } }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -63018,6 +67776,11 @@ "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==" }, + "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==" + }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", @@ -63127,8 +67890,7 @@ } }, "array-union": { - "version": "2.1.0", - "dev": true + "version": "2.1.0" }, "array-uniq": { "version": "1.0.3", @@ -63313,8 +68075,7 @@ } }, "asynckit": { - "version": "0.4.0", - "dev": true + "version": "0.4.0" }, "at-least-node": { "version": "1.0.0" @@ -63658,7 +68419,6 @@ }, "babel-plugin-module-resolver": { "version": "5.0.0", - "dev": true, "requires": { "find-babel-config": "^2.0.0", "glob": "^8.0.3", @@ -63669,7 +68429,6 @@ "dependencies": { "brace-expansion": { "version": "2.0.1", - "dev": true, "requires": { "balanced-match": "^1.0.0" } @@ -63678,7 +68437,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -63691,7 +68449,6 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, "requires": { "brace-expansion": "^2.0.1" } @@ -63740,8 +68497,9 @@ } }, "babel-plugin-react-native-web": { - "version": "0.18.7", - "dev": true + "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==" }, "babel-plugin-syntax-class-properties": { "version": "6.13.0", @@ -63805,6 +68563,21 @@ "@babel/plugin-syntax-top-level-await": "^7.8.3" } }, + "babel-preset-expo": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-9.5.2.tgz", + "integrity": "sha512-hU1G1TDiikuXV6UDZjPnX+WdbjbtidDiYhftMEVrZQSst45pDPVBWbM41TUKrpJMwv4FypsLzK+378gnMPRVWQ==", + "requires": { + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-object-rest-spread": "^7.12.13", + "@babel/plugin-transform-react-jsx": "^7.12.17", + "@babel/preset-env": "^7.20.0", + "babel-plugin-module-resolver": "^5.0.0", + "babel-plugin-react-native-web": "~0.18.10", + "metro-react-native-babel-preset": "0.76.8" + } + }, "babel-preset-fbjs": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", @@ -64075,6 +68848,11 @@ "blueimp-load-image": { "version": "2.29.0" }, + "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==" + }, "bn.js": { "version": "5.2.1" }, @@ -64338,6 +69116,20 @@ "ieee754": "^1.1.13" } }, + "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==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "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==" + }, "buffer-crc32": { "version": "0.2.13", "dev": true @@ -64348,6 +69140,11 @@ "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", "dev": true }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + }, "buffer-from": { "version": "1.1.2" }, @@ -64474,6 +69271,11 @@ "builtin-status-codes": { "version": "3.0.0" }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==" + }, "bytes": { "version": "3.0.0" }, @@ -64542,7 +69344,6 @@ }, "cacache": { "version": "15.3.0", - "dev": true, "requires": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", @@ -64742,6 +69543,11 @@ "version": "0.7.0", "dev": true }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==" + }, "chokidar": { "version": "3.5.3", "devOptional": true, @@ -64757,8 +69563,7 @@ } }, "chownr": { - "version": "2.0.0", - "dev": true + "version": "2.0.0" }, "chrome-trace-event": { "version": "1.0.3", @@ -64866,8 +69671,7 @@ } }, "clean-stack": { - "version": "2.2.0", - "dev": true + "version": "2.2.0" }, "clean-webpack-plugin": { "version": "3.0.0", @@ -65070,7 +69874,6 @@ }, "combined-stream": { "version": "1.0.8", - "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -65109,6 +69912,11 @@ "integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==", "dev": true }, + "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==" + }, "complex.js": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/complex.js/-/complex.js-2.1.1.tgz", @@ -65119,6 +69927,11 @@ "version": "1.3.0", "devOptional": true }, + "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==" + }, "compressible": { "version": "2.0.18", "requires": { @@ -65288,8 +70101,9 @@ } }, "content-type": { - "version": "1.0.4", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" }, "convert-source-map": { "version": "1.9.0", @@ -65752,6 +70566,11 @@ "which": "^2.0.1" } }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==" + }, "crypto-browserify": { "version": "3.12.0", "requires": { @@ -65771,6 +70590,11 @@ "crypto-js": { "version": "3.3.0" }, + "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==" + }, "css-color-keywords": { "version": "1.0.0" }, @@ -65956,6 +70780,11 @@ "version": "1.0.1", "dev": true }, + "dag-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", + "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==" + }, "damerau-levenshtein": { "version": "1.0.8", "dev": true @@ -66069,6 +70898,11 @@ "which-typed-array": "^1.1.2" } }, + "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==" + }, "deep-is": { "version": "0.1.4", "dev": true @@ -66106,8 +70940,7 @@ "dev": true }, "define-lazy-prop": { - "version": "2.0.0", - "dev": true + "version": "2.0.0" }, "define-properties": { "version": "1.2.0", @@ -66177,8 +71010,7 @@ } }, "delayed-stream": { - "version": "1.0.0", - "dev": true + "version": "1.0.0" }, "delegate": { "version": "3.2.0" @@ -66311,7 +71143,6 @@ }, "dir-glob": { "version": "3.0.1", - "dev": true, "requires": { "path-type": "^4.0.0" } @@ -66783,7 +71614,6 @@ }, "end-of-stream": { "version": "1.4.4", - "dev": true, "requires": { "once": "^1.4.0" } @@ -66847,6 +71677,11 @@ "enumerate-devices": { "version": "1.1.1" }, + "env-editor": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.2.tgz", + "integrity": "sha512-ObFo8v4rQJAE59M69QzwloxPZtd33TpYEIjtKD1rrFDcM1Gd7IkDxEBU+HriziN6HSHQnBJi8Dmy+JWkav5HKA==" + }, "env-paths": { "version": "2.2.1", "dev": true @@ -66854,6 +71689,11 @@ "envinfo": { "version": "7.8.1" }, + "eol": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/eol/-/eol-0.9.1.tgz", + "integrity": "sha512-Ds/TEoZjwggRoz/Q2O7SE3i4Jm66mqTDfmdHdq/7DKVk3bro9Q8h6WdXKdPqFLMoqxrDK5SVRzHVPOS6uuGtrg==" + }, "err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", @@ -68134,6 +72974,11 @@ "safe-buffer": "^5.1.1" } }, + "exec-async": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", + "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==" + }, "execa": { "version": "5.1.1", "requires": { @@ -68318,6 +73163,319 @@ } } }, + "expo": { + "version": "49.0.13", + "resolved": "https://registry.npmjs.org/expo/-/expo-49.0.13.tgz", + "integrity": "sha512-k2QFmT5XN490ksjKJgogfS5SFj6ZKCu1GwWz4VUV4S9gkPjzr8zQAZoVPKaWxUYRb6xDpTJXdhLt7gSnV3bJvw==", + "requires": { + "@babel/runtime": "^7.20.0", + "@expo/cli": "0.10.13", + "@expo/config": "8.1.2", + "@expo/config-plugins": "7.2.5", + "@expo/vector-icons": "^13.0.0", + "babel-preset-expo": "~9.5.2", + "expo-application": "~5.3.0", + "expo-asset": "~8.10.1", + "expo-constants": "~14.4.2", + "expo-file-system": "~15.4.4", + "expo-font": "~11.4.0", + "expo-keep-awake": "~12.3.0", + "expo-modules-autolinking": "1.5.1", + "expo-modules-core": "1.5.11", + "fbemitter": "^3.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" + }, + "dependencies": { + "@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==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@expo/config-plugins": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-7.2.5.tgz", + "integrity": "sha512-w+5ccu1IxBHgyQk9CPFKLZOk8yZQEyTjbJwOzESK1eR7QwosbcsLkN1c1WWUZYiCXwORu3UTwJYll4+X2xxJhQ==", + "requires": { + "@expo/config-types": "^49.0.0-alpha.1", + "@expo/json-file": "~8.2.37", + "@expo/plist": "^0.0.20", + "@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.5.3", + "slash": "^3.0.0", + "xcode": "^3.0.1", + "xml2js": "0.6.0" + } + }, + "@expo/config-types": { + "version": "49.0.0", + "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-49.0.0.tgz", + "integrity": "sha512-8eyREVi+K2acnMBe/rTIu1dOfyR2+AMnTLHlut+YpMV9OZPdeKV0Bs9BxAewGqBA2slslbQ9N39IS2CuTKpXkA==" + }, + "@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==", + "requires": { + "@babel/code-frame": "~7.10.4", + "json5": "^2.2.2", + "write-file-atomic": "^2.3.0" + } + }, + "@expo/plist": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.0.20.tgz", + "integrity": "sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==", + "requires": { + "@xmldom/xmldom": "~0.7.7", + "base64-js": "^1.2.3", + "xmlbuilder": "^14.0.0" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + } + }, + "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==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "xml2js": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.0.tgz", + "integrity": "sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + } + } + } + } + }, + "expo-application": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-5.3.1.tgz", + "integrity": "sha512-HR2+K+Hm33vLw/TfbFaHrvUbRRNRco8R+3QaCKy7eJC2LFfT05kZ15ynGaKfB5DJ/oqPV3mxXVR/EfwmE++hoA==", + "requires": {} + }, + "expo-asset": { + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-8.10.1.tgz", + "integrity": "sha512-5VMTESxgY9GBsspO/esY25SKEa7RyascVkLe/OcL1WgblNFm7xCCEEUIW8VWS1nHJQGYxpMZPr3bEfjMpdWdyA==", + "requires": { + "blueimp-md5": "^2.10.0", + "expo-constants": "~14.4.2", + "expo-file-system": "~15.4.0", + "invariant": "^2.2.4", + "md5-file": "^3.2.3", + "path-browserify": "^1.0.0", + "url-parse": "^1.5.9" + }, + "dependencies": { + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + } + } + }, + "expo-constants": { + "version": "14.4.2", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.4.2.tgz", + "integrity": "sha512-nOB122DOAjk+KrJT69lFQAoYVQGQjFHSigCPVBzVdko9S1xGsfiOH9+X5dygTsZTIlVLpQJDdmZ7ONiv3i+26w==", + "requires": { + "@expo/config": "~8.1.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "expo-file-system": { + "version": "15.4.4", + "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-15.4.4.tgz", + "integrity": "sha512-F0xS88D85F7qVQ61r0qBnzh6VW/s6iIl+VaQEEi2nAIOQHw1JIEj4yCXPLTtbyn5VmArbe2dSL3KYz1V+BLkKA==", + "requires": { + "uuid": "^3.4.0" + }, + "dependencies": { + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + } + } + }, + "expo-font": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-11.4.0.tgz", + "integrity": "sha512-nkmezCFD7gR/I6R+e3/ry18uEfF8uYrr6h+PdBJu+3dawoLOpo+wFb/RG9bHUekU1/cPanR58LR7G5MEMKHR2w==", + "requires": { + "fontfaceobserver": "^2.1.0" + } + }, + "expo-keep-awake": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-12.3.0.tgz", + "integrity": "sha512-ujiJg1p9EdCOYS05jh5PtUrfiZnK0yyLy+UewzqrjUqIT8eAGMQbkfOn3C3fHE7AKd5AefSMzJnS3lYZcZYHDw==", + "requires": {} + }, + "expo-modules-autolinking": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-1.5.1.tgz", + "integrity": "sha512-yt5a1VCp2BF9CrsO689PCD5oXKP14MMhnOanQMvDn4BDpURYfzAlDVGC5fZrNQKtwn/eq3bcrxIwZ7D9QjVVRg==", + "requires": { + "@expo/config": "~8.1.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "fast-glob": "^3.2.5", + "find-up": "^5.0.0", + "fs-extra": "^9.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "requires": { + "color-name": "~1.1.4" + } + }, + "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==" + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "expo-modules-core": { + "version": "1.5.11", + "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-1.5.11.tgz", + "integrity": "sha512-1Dj2t74nVjxq6xEQf2b9WFfAMhPzVnR0thY0PfRFgob4STyj3sq1U4PIHVWvKQBtDKIa227DrNRb+Hu+LqKWQg==", + "requires": { + "compare-versions": "^3.4.0", + "invariant": "^2.2.4" + } + }, "express": { "version": "4.18.1", "dev": true, @@ -68482,7 +73640,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -68529,7 +73686,6 @@ }, "fastq": { "version": "1.13.0", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -68547,6 +73703,14 @@ "bser": "2.1.1" } }, + "fbemitter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", + "requires": { + "fbjs": "^3.0.0" + } + }, "fbjs": { "version": "3.0.4", "requires": { @@ -68706,15 +73870,13 @@ }, "find-babel-config": { "version": "2.0.0", - "dev": true, "requires": { "json5": "^2.1.1", "path-exists": "^4.0.0" }, "dependencies": { "path-exists": { - "version": "4.0.0", - "dev": true + "version": "4.0.0" } } }, @@ -68815,6 +73977,11 @@ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, + "fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==" + }, "for-each": { "version": "0.3.3", "requires": { @@ -68939,7 +74106,6 @@ }, "form-data": { "version": "3.0.1", - "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -68963,6 +74129,11 @@ "map-cache": "^0.2.2" } }, + "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==" + }, "fresh": { "version": "0.5.2" }, @@ -68988,7 +74159,6 @@ }, "fs-minipass": { "version": "2.1.0", - "dev": true, "requires": { "minipass": "^3.0.0" } @@ -69093,6 +74263,11 @@ "get-package-type": { "version": "0.1.0" }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==" + }, "get-stdin": { "version": "6.0.0", "dev": true @@ -69137,7 +74312,6 @@ }, "glob-parent": { "version": "5.1.2", - "devOptional": true, "requires": { "is-glob": "^4.0.1" } @@ -69184,7 +74358,6 @@ }, "globby": { "version": "11.1.0", - "dev": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -69234,6 +74407,19 @@ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, + "graphql": { + "version": "15.8.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", + "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==" + }, + "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==", + "requires": { + "tslib": "^2.1.0" + } + }, "grid-index": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", @@ -69786,7 +74972,6 @@ }, "https-proxy-agent": { "version": "5.0.1", - "dev": true, "requires": { "agent-base": "6", "debug": "4" @@ -70051,8 +75236,7 @@ "ignore": { "version": "5.2.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" }, "image-size": { "version": "1.0.2", @@ -70126,12 +75310,10 @@ "version": "0.1.4" }, "indent-string": { - "version": "4.0.0", - "dev": true + "version": "4.0.0" }, "infer-owner": { - "version": "1.0.4", - "dev": true + "version": "1.0.4" }, "inflight": { "version": "1.0.6", @@ -70143,6 +75325,11 @@ "inherits": { "version": "2.0.4" }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, "inline-style-parser": { "version": "0.1.1", "dev": true @@ -70211,6 +75398,104 @@ } } }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "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" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" + }, + "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==", + "requires": { + "path-key": "^2.0.0" + } + }, + "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==" + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "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==", + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -70238,9 +75523,13 @@ "version": "2.0.0", "dev": true }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==" + }, "ipaddr.js": { - "version": "1.9.1", - "dev": true + "version": "1.9.1" }, "is-absolute-url": { "version": "3.0.3", @@ -70399,8 +75688,7 @@ } }, "is-extglob": { - "version": "2.1.1", - "devOptional": true + "version": "2.1.1" }, "is-finalizationregistry": { "version": "1.0.2", @@ -70437,7 +75725,6 @@ }, "is-glob": { "version": "4.0.3", - "devOptional": true, "requires": { "is-extglob": "^2.1.1" } @@ -70451,6 +75738,29 @@ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" }, + "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==", + "requires": { + "is-glob": "^2.0.0" + }, + "dependencies": { + "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==" + }, + "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==", + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, "is-map": { "version": "2.0.2", "dev": true @@ -70478,8 +75788,7 @@ } }, "is-path-cwd": { - "version": "2.2.0", - "dev": true + "version": "2.2.0" }, "is-path-in-cwd": { "version": "2.1.0", @@ -70565,6 +75874,14 @@ "is-utf8": { "version": "0.2.1" }, + "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==", + "requires": { + "is-invalid-path": "^0.1.0" + } + }, "is-weakmap": { "version": "2.0.1", "dev": true @@ -72289,6 +77606,11 @@ } } }, + "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==" + }, "joi": { "version": "17.10.1", "resolved": "https://registry.npmjs.org/joi/-/joi-17.10.1.tgz", @@ -72301,6 +77623,11 @@ "@sideway/pinpoint": "^2.0.0" } }, + "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==" + }, "jquery": { "version": "3.6.0" }, @@ -72521,6 +77848,43 @@ "json-parse-even-better-errors": { "version": "2.3.1" }, + "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==", + "requires": { + "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" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", + "requires": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + } + } + }, "json-schema-migrate": { "version": "2.0.0", "dev": true, @@ -72677,6 +78041,77 @@ "immediate": "~3.0.5" } }, + "lightningcss": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.19.0.tgz", + "integrity": "sha512-yV5UR7og+Og7lQC+70DA7a8ta1uiOPnWPJfxa0wnxylev5qfo4P+4iMpzWAdYWOca4jdNQZii+bDL/l+4hUXIA==", + "requires": { + "detect-libc": "^1.0.3", + "lightningcss-darwin-arm64": "1.19.0", + "lightningcss-darwin-x64": "1.19.0", + "lightningcss-linux-arm-gnueabihf": "1.19.0", + "lightningcss-linux-arm64-gnu": "1.19.0", + "lightningcss-linux-arm64-musl": "1.19.0", + "lightningcss-linux-x64-gnu": "1.19.0", + "lightningcss-linux-x64-musl": "1.19.0", + "lightningcss-win32-x64-msvc": "1.19.0" + }, + "dependencies": { + "detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==" + } + } + }, + "lightningcss-darwin-arm64": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.19.0.tgz", + "integrity": "sha512-wIJmFtYX0rXHsXHSr4+sC5clwblEMji7HHQ4Ub1/CznVRxtCFha6JIt5JZaNf8vQrfdZnBxLLC6R8pC818jXqg==", + "optional": true + }, + "lightningcss-darwin-x64": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.19.0.tgz", + "integrity": "sha512-Lif1wD6P4poaw9c/4Uh2z+gmrWhw/HtXFoeZ3bEsv6Ia4tt8rOJBdkfVaUJ6VXmpKHALve+iTyP2+50xY1wKPw==", + "optional": true + }, + "lightningcss-linux-arm-gnueabihf": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.19.0.tgz", + "integrity": "sha512-P15VXY5682mTXaiDtbnLYQflc8BYb774j2R84FgDLJTN6Qp0ZjWEFyN1SPqyfTj2B2TFjRHRUvQSSZ7qN4Weig==", + "optional": true + }, + "lightningcss-linux-arm64-gnu": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.19.0.tgz", + "integrity": "sha512-zwXRjWqpev8wqO0sv0M1aM1PpjHz6RVIsBcxKszIG83Befuh4yNysjgHVplF9RTU7eozGe3Ts7r6we1+Qkqsww==", + "optional": true + }, + "lightningcss-linux-arm64-musl": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.19.0.tgz", + "integrity": "sha512-vSCKO7SDnZaFN9zEloKSZM5/kC5gbzUjoJQ43BvUpyTFUX7ACs/mDfl2Eq6fdz2+uWhUh7vf92c4EaaP4udEtA==", + "optional": true + }, + "lightningcss-linux-x64-gnu": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.19.0.tgz", + "integrity": "sha512-0AFQKvVzXf9byrXUq9z0anMGLdZJS+XSDqidyijI5njIwj6MdbvX2UZK/c4FfNmeRa2N/8ngTffoIuOUit5eIQ==", + "optional": true + }, + "lightningcss-linux-x64-musl": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.19.0.tgz", + "integrity": "sha512-SJoM8CLPt6ECCgSuWe+g0qo8dqQYVcPiW2s19dxkmSI5+Uu1GIRzyKA0b7QqmEXolA+oSJhQqCmJpzjY4CuZAg==", + "optional": true + }, + "lightningcss-win32-x64-msvc": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.19.0.tgz", + "integrity": "sha512-C+VuUTeSUOAaBZZOPT7Etn/agx/MatzJzGRkeV+zEABmPuntv1zihncsi+AyGmjkkzq3wVedEy7h0/4S84mUtg==", + "optional": true + }, "lines-and-columns": { "version": "1.2.4" }, @@ -73158,6 +78593,31 @@ "typed-function": "^4.1.0" } }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + } + } + }, + "md5-file": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz", + "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==", + "requires": { + "buffer-alloc": "^1.1.0" + } + }, "md5.js": { "version": "1.3.5", "requires": { @@ -73166,6 +78626,11 @@ "safe-buffer": "^5.1.2" } }, + "md5hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/md5hex/-/md5hex-1.0.0.tgz", + "integrity": "sha512-c2YOUbp33+6thdCUi34xIyOU/a7bvGKj/3DB1iaPMTuPHf/Q2d5s4sn1FaCOO43XkXggnb08y5W2PU8UNYNLKQ==" + }, "mdast-squeeze-paragraphs": { "version": "4.0.0", "dev": true, @@ -73583,8 +79048,7 @@ "dev": true }, "media-typer": { - "version": "0.3.0", - "dev": true + "version": "0.3.0" }, "mem": { "version": "8.1.1", @@ -73619,6 +79083,11 @@ "map-or-similar": "^1.5.0" } }, + "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==" + }, "memory-fs": { "version": "0.4.1", "requires": { @@ -73748,8 +79217,7 @@ "version": "2.0.0" }, "merge2": { - "version": "1.4.1", - "dev": true + "version": "1.4.1" }, "methods": { "version": "1.1.2", @@ -74302,7 +79770,6 @@ "version": "0.76.8", "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz", "integrity": "sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg==", - "dev": true, "requires": { "@babel/core": "^7.20.0", "@babel/plugin-proposal-async-generator-functions": "^7.0.0", @@ -74346,8 +79813,7 @@ }, "dependencies": { "react-refresh": { - "version": "0.4.3", - "dev": true + "version": "0.4.3" } } }, @@ -75086,35 +80552,30 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, "requires": { "yallist": "^4.0.0" } }, "minipass-collect": { "version": "1.0.2", - "dev": true, "requires": { "minipass": "^3.0.0" } }, "minipass-flush": { "version": "1.0.5", - "dev": true, "requires": { "minipass": "^3.0.0" } }, "minipass-pipeline": { "version": "1.2.4", - "dev": true, "requires": { "minipass": "^3.0.0" } }, "minizlib": { "version": "2.1.2", - "dev": true, "requires": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -75176,8 +80637,7 @@ } }, "mkdirp": { - "version": "1.0.4", - "dev": true + "version": "1.0.4" }, "mock-fs": { "version": "4.14.0", @@ -75252,6 +80712,60 @@ "version": "0.0.8", "dev": true }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", + "optional": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "optional": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "optional": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "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, + "requires": { + "glob": "^6.0.1" + } + } + } + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "nan": { "version": "2.17.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", @@ -75284,6 +80798,12 @@ "natural-compare": { "version": "1.4.0" }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "optional": true + }, "negotiator": { "version": "0.6.3" }, @@ -75295,8 +80815,7 @@ "dev": true }, "nice-try": { - "version": "1.0.5", - "dev": true + "version": "1.0.5" }, "no-case": { "version": "3.0.4", @@ -75363,8 +80882,7 @@ } }, "node-forge": { - "version": "1.3.1", - "dev": true + "version": "1.3.1" }, "node-int64": { "version": "0.4.0" @@ -75462,6 +80980,32 @@ "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", "dev": true }, + "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==", + "requires": { + "hosted-git-info": "^3.0.2", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "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==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + } + } + }, "npm-run-path": { "version": "4.0.1", "requires": { @@ -75735,7 +81279,6 @@ "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dev": true, "requires": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -75847,9 +81390,7 @@ "version": "0.3.0" }, "os-homedir": { - "version": "1.0.2", - "dev": true, - "optional": true + "version": "1.0.2" }, "os-locale": { "version": "1.4.0", @@ -75860,6 +81401,15 @@ "os-tmpdir": { "version": "1.0.2" }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-all": { "version": "2.1.0", "dev": true, @@ -75902,8 +81452,7 @@ } }, "p-finally": { - "version": "1.0.0", - "dev": true + "version": "1.0.0" }, "p-limit": { "version": "3.1.0", @@ -75919,7 +81468,6 @@ }, "p-map": { "version": "4.0.0", - "dev": true, "requires": { "aggregate-error": "^3.0.0" } @@ -76000,6 +81548,21 @@ "lines-and-columns": "^1.1.6" } }, + "parse-png": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-png/-/parse-png-2.1.0.tgz", + "integrity": "sha512-Nt/a5SfCLiTnQAjx3fHlqp8hRgTL3z7kTQZzvIMS9uCAepnCyjpdEc6M/sz69WqMBdaDBw9sF1F1UaHROYzGkQ==", + "requires": { + "pngjs": "^3.3.0" + }, + "dependencies": { + "pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==" + } + } + }, "parse5": { "version": "6.0.1", "dev": true @@ -76019,6 +81582,15 @@ "version": "0.1.1", "devOptional": true }, + "password-prompt": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/password-prompt/-/password-prompt-1.1.3.tgz", + "integrity": "sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==", + "requires": { + "ansi-escapes": "^4.3.2", + "cross-spawn": "^7.0.3" + } + }, "patch-package": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", @@ -76148,8 +81720,7 @@ "dev": true }, "path-type": { - "version": "4.0.0", - "dev": true + "version": "4.0.0" }, "pause-stream": { "version": "0.0.11", @@ -76246,21 +81817,18 @@ }, "pkg-up": { "version": "3.1.0", - "dev": true, "requires": { "find-up": "^3.0.0" }, "dependencies": { "find-up": { "version": "3.0.0", - "dev": true, "requires": { "locate-path": "^3.0.0" } }, "locate-path": { "version": "3.0.0", - "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -76268,14 +81836,12 @@ }, "p-limit": { "version": "2.3.0", - "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { "version": "3.0.0", - "dev": true, "requires": { "p-limit": "^2.0.0" } @@ -76453,6 +82019,11 @@ "fast-diff": "^1.1.2" } }, + "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==" + }, "pretty-error": { "version": "4.0.0", "dev": true, @@ -76490,8 +82061,7 @@ "version": "2.0.1" }, "progress": { - "version": "2.0.3", - "dev": true + "version": "2.0.3" }, "promise": { "version": "7.3.1", @@ -76500,8 +82070,7 @@ } }, "promise-inflight": { - "version": "1.0.1", - "dev": true + "version": "1.0.1" }, "promise-retry": { "version": "2.0.1", @@ -76608,7 +82177,6 @@ }, "pump": { "version": "3.0.0", - "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -76746,6 +82314,11 @@ } } }, + "qrcode-terminal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.11.0.tgz", + "integrity": "sha512-Uu7ii+FQy4Qf82G4xu7ShHhjhGahEpCWc3x8UavY3CTcWV+ufmmCtwkr7ZKsX42jdL0kr1B5FKUeqJvAn51jzQ==" + }, "qs": { "version": "6.10.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", @@ -76773,8 +82346,7 @@ "version": "0.2.1" }, "querystringify": { - "version": "2.2.0", - "dev": true + "version": "2.2.0" }, "queue": { "version": "6.0.2", @@ -76785,8 +82357,7 @@ } }, "queue-microtask": { - "version": "1.2.3", - "dev": true + "version": "1.2.3" }, "quick-lru": { "version": "5.1.1", @@ -76858,6 +82429,24 @@ "quickselect": "^2.0.0" } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "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==" + } + } + }, "react": { "version": "18.2.0", "requires": { @@ -78486,6 +84075,11 @@ "version": "1.1.0", "optional": true }, + "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==" + }, "renderkid": { "version": "3.0.0", "dev": true, @@ -78544,17 +84138,40 @@ "require-main-filename": { "version": "2.0.0" }, + "requireg": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/requireg/-/requireg-0.2.2.tgz", + "integrity": "sha512-nYzyjnFcPNGR3lx9lwPPPnuQxv6JWEZd2Ci0u9opN7N5zUEPIhY/GbL3vMGOr2UXwEg9WwSyV9X9Y/kLFgPsOg==", + "requires": { + "nested-error-stacks": "~2.0.1", + "rc": "~1.2.7", + "resolve": "~1.7.1" + }, + "dependencies": { + "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==" + }, + "resolve": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "requires": { + "path-parse": "^1.0.5" + } + } + } + }, "requireindex": { "version": "1.2.0", "dev": true }, "requires-port": { - "version": "1.0.0", - "dev": true + "version": "1.0.0" }, "reselect": { - "version": "4.1.7", - "dev": true + "version": "4.1.7" }, "resolve": { "version": "1.22.4", @@ -78620,8 +84237,7 @@ "dev": true }, "reusify": { - "version": "1.0.4", - "dev": true + "version": "1.0.4" }, "right-align": { "version": "0.1.3", @@ -78672,7 +84288,6 @@ }, "run-parallel": { "version": "1.2.0", - "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -78727,6 +84342,12 @@ "safe-buffer": { "version": "5.1.2" }, + "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 + }, "safe-regex": { "version": "1.1.0", "devOptional": true, @@ -79218,6 +84839,11 @@ } } }, + "slugify": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==" + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -79423,8 +85049,7 @@ "version": "0.6.1" }, "source-map-js": { - "version": "1.0.2", - "dev": true + "version": "1.0.2" }, "source-map-resolve": { "version": "0.5.3", @@ -79534,7 +85159,6 @@ }, "ssri": { "version": "8.0.1", - "dev": true, "requires": { "minipass": "^3.1.1" } @@ -79868,8 +85492,7 @@ "version": "4.0.0" }, "strip-eof": { - "version": "1.0.0", - "dev": true + "version": "1.0.0" }, "strip-final-newline": { "version": "2.0.0" @@ -79889,6 +85512,11 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, + "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==" + }, "style-loader": { "version": "2.0.0", "dev": true, @@ -79907,6 +85535,37 @@ "styleq": { "version": "0.1.2" }, + "sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.2", + "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" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + } + } + }, "sudo-prompt": { "version": "9.2.1", "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", @@ -79979,6 +85638,30 @@ "has-flag": "^3.0.0" } }, + "supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "supports-preserve-symlinks-flag": { "version": "1.0.0" }, @@ -80057,7 +85740,6 @@ "version": "6.1.15", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", - "dev": true, "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -80070,8 +85752,7 @@ "minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" } } }, @@ -80095,6 +85776,11 @@ } } }, + "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==" + }, "temp-file": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.4.0.tgz", @@ -80118,6 +85804,54 @@ } } }, + "tempy": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz", + "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==", + "requires": { + "del": "^6.0.0", + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "del": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", + "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", + "requires": { + "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" + } + }, + "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==" + }, + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==" + } + } + }, + "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==", + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, "terser": { "version": "5.19.2", "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", @@ -80229,8 +85963,23 @@ } }, "text-table": { - "version": "0.2.0", - "dev": true + "version": "0.2.0" + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "requires": { + "any-promise": "^1.0.0" + } + }, + "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==", + "requires": { + "thenify": ">= 3.1.0 < 4" + } }, "throat": { "version": "5.0.0", @@ -80427,6 +86176,11 @@ "punycode": "^2.1.1" } }, + "traverse": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", + "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==" + }, "tree-kill": { "version": "1.2.2", "dev": true @@ -80476,6 +86230,11 @@ "version": "2.2.0", "dev": true }, + "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==" + }, "ts-pnp": { "version": "1.2.0", "dev": true @@ -80552,7 +86311,6 @@ }, "type-is": { "version": "1.6.18", - "dev": true, "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -80740,18 +86498,24 @@ }, "unique-filename": { "version": "1.1.1", - "dev": true, "requires": { "unique-slug": "^2.0.0" } }, "unique-slug": { "version": "2.0.2", - "dev": true, "requires": { "imurmurhash": "^0.1.4" } }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, "unist-builder": { "version": "2.0.3", "dev": true @@ -80948,6 +86712,11 @@ } } }, + "url-join": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.0.tgz", + "integrity": "sha512-EGXjXJZhIHiQMK2pQukuFcL303nskqIRzWvPvV5O8miOfwoUb9G+a/Cld60kUyeaybEI94wvVClT10DtfeAExA==" + }, "url-loader": { "version": "4.1.1", "dev": true, @@ -80959,7 +86728,6 @@ }, "url-parse": { "version": "1.5.10", - "dev": true, "requires": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -81088,6 +86856,11 @@ "convert-source-map": "^1.6.0" } }, + "valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" + }, "validate-npm-package-license": { "version": "3.0.4", "requires": { @@ -81095,6 +86868,14 @@ "spdx-expression-parse": "^3.0.0" } }, + "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==", + "requires": { + "builtins": "^1.0.3" + } + }, "value-equal": { "version": "0.2.1" }, @@ -82025,6 +87806,11 @@ "window-size": { "version": "0.1.0" }, + "wonka": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/wonka/-/wonka-4.0.15.tgz", + "integrity": "sha512-U0IUQHKXXn6PFo9nqsHphVCE5m3IntqZNB9Jjn7EB1lrR7YTDY3YWgFvEvwniTzXSvOH/XMzAZaIfJF/LvHYXg==" + }, "word-wrap": { "version": "1.2.3", "dev": true @@ -82140,7 +87926,6 @@ "version": "8.13.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, "requires": {} }, "x-default-browser": { From 63405faec4eeeed987b4bfb8974fcc8b57f5329b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Czernek?= Date: Fri, 29 Sep 2023 16:22:31 +0200 Subject: [PATCH 003/701] Bump kotlin to 1.8.20 to make it compatible with expo-modules. --- android/build.gradle | 2 +- .../react-native-vision-camera+2.15.4.patch | 25 ++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index d7e9529ae6dd..789104556b1b 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -13,7 +13,7 @@ buildscript { androidXCore = "1.0.2" multiDexEnabled = true googlePlayServicesVersion = "17.0.0" - kotlinVersion = '1.6.20' + kotlinVersion = '1.8.10' // This property configures the type of Mapbox SDK used by the @rnmapbox/maps library. // "mapbox" indicates the usage of the Mapbox SDK. diff --git a/patches/react-native-vision-camera+2.15.4.patch b/patches/react-native-vision-camera+2.15.4.patch index 0c80d6a8ce55..0585754ba274 100644 --- a/patches/react-native-vision-camera+2.15.4.patch +++ b/patches/react-native-vision-camera+2.15.4.patch @@ -1,11 +1,30 @@ +diff --git a/node_modules/react-native-vision-camera/android/build.gradle b/node_modules/react-native-vision-camera/android/build.gradle +index 91e64d9..8094ea3 100644 +--- a/node_modules/react-native-vision-camera/android/build.gradle ++++ b/node_modules/react-native-vision-camera/android/build.gradle +@@ -83,14 +83,12 @@ buildscript { + classpath 'de.undercouch:gradle-download-task:4.1.2' + // noinspection DifferentKotlinGradleVersion + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" +- classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" + } + } + + apply plugin: 'com.android.library' + apply plugin: 'de.undercouch.download' + apply plugin: 'kotlin-android' +-apply plugin: 'kotlin-android-extensions' + + def getExtOrDefault(name) { + return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['VisionCamera_' + name] diff --git a/node_modules/react-native-vision-camera/ios/Frame Processor/FrameProcessorRuntimeManager.mm b/node_modules/react-native-vision-camera/ios/Frame Processor/FrameProcessorRuntimeManager.mm index 3841b20..687ea94 100644 ---- a/node_modules/react-native-vision-camera/ios/Frame Processor/FrameProcessorRuntimeManager.mm -+++ b/node_modules/react-native-vision-camera/ios/Frame Processor/FrameProcessorRuntimeManager.mm +--- a/node_modules/react-native-vision-camera/ios/Frame Processor/FrameProcessorRuntimeManager.mm ++++ b/node_modules/react-native-vision-camera/ios/Frame Processor/FrameProcessorRuntimeManager.mm @@ -19,6 +19,8 @@ #import #import - + +#define VISION_CAMERA_DISABLE_FRAME_PROCESSORS 1 + #ifndef VISION_CAMERA_DISABLE_FRAME_PROCESSORS From 2d00d23a4e27dea61fb9a037a6d456ffa8c806f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Czernek?= Date: Mon, 2 Oct 2023 15:49:43 +0200 Subject: [PATCH 004/701] Prettier on metro.config.js --- metro.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/metro.config.js b/metro.config.js index 30f609f8a223..80d1db3f4be2 100644 --- a/metro.config.js +++ b/metro.config.js @@ -1,5 +1,5 @@ -const { getDefaultConfig } = require('expo/metro-config'); -const { mergeConfig } = require('@react-native/metro-config'); +const {getDefaultConfig} = require('expo/metro-config'); +const {mergeConfig} = require('@react-native/metro-config'); const defaultAssetExts = require('metro-config/src/defaults/defaults').assetExts; const defaultSourceExts = require('metro-config/src/defaults/defaults').sourceExts; const _ = require('underscore'); From a951a319b46982afe3eac82e254112f97a46fbf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Czernek?= Date: Tue, 3 Oct 2023 10:41:15 +0200 Subject: [PATCH 005/701] Add patch for plaid-sdk --- patches/react-native-plaid-link-sdk+10.0.0.patch | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 patches/react-native-plaid-link-sdk+10.0.0.patch diff --git a/patches/react-native-plaid-link-sdk+10.0.0.patch b/patches/react-native-plaid-link-sdk+10.0.0.patch new file mode 100644 index 000000000000..1fd8634ab80e --- /dev/null +++ b/patches/react-native-plaid-link-sdk+10.0.0.patch @@ -0,0 +1,12 @@ +diff --git a/node_modules/react-native-plaid-link-sdk/android/build.gradle b/node_modules/react-native-plaid-link-sdk/android/build.gradle +index 5fa85a5..0b28564 100644 +--- a/node_modules/react-native-plaid-link-sdk/android/build.gradle ++++ b/node_modules/react-native-plaid-link-sdk/android/build.gradle +@@ -27,7 +27,6 @@ buildscript { + + apply plugin: 'com.android.library' + apply plugin: "kotlin-android" +-apply plugin: "kotlin-android-extensions" + + android { + compileSdkVersion 31 From 11ac0d0143d49bb8e16dd88babf2643172dcb2a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 21 Aug 2023 20:22:07 +0200 Subject: [PATCH 006/701] Add Video Player --- config/webpack/webpack.common.js | 1 + package-lock.json | 23 ++++ package.json | 3 +- patches/expensify-common+1.0.0.patch | 15 +++ src/App.js | 2 + .../BaseAnchorForAttachmentsOnly.js | 69 ++++++---- .../extractAttachmentsFromReport.js | 13 ++ .../Attachments/AttachmentCarousel/index.js | 2 + .../AttachmentViewVideo/index.js | 46 +++++++ .../Attachments/AttachmentView/index.js | 27 +++- src/components/PlaybackContext.js | 48 +++++++ src/components/VideoPlayer/IconButton.js | 53 ++++++++ src/components/VideoPlayer/ProgressBar.js | 52 ++++++++ .../VideoPlayer/VideoPlayerControls.js | 90 +++++++++++++ src/components/VideoPlayer/index.js | 119 ++++++++++++++++++ src/components/VideoPlayer/utils.js | 16 +++ .../VideoPlayerThumbnail.js | 42 +++++++ src/components/VideoPlayerPreview/index.js | 109 ++++++++++++++++ 18 files changed, 705 insertions(+), 25 deletions(-) create mode 100644 patches/expensify-common+1.0.0.patch create mode 100644 src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js create mode 100644 src/components/PlaybackContext.js create mode 100644 src/components/VideoPlayer/IconButton.js create mode 100644 src/components/VideoPlayer/ProgressBar.js create mode 100644 src/components/VideoPlayer/VideoPlayerControls.js create mode 100644 src/components/VideoPlayer/index.js create mode 100644 src/components/VideoPlayer/utils.js create mode 100644 src/components/VideoPlayerPreview/VideoPlayerThumbnail.js create mode 100644 src/components/VideoPlayerPreview/index.js diff --git a/config/webpack/webpack.common.js b/config/webpack/webpack.common.js index 7dc851c95c9e..8668e3074467 100644 --- a/config/webpack/webpack.common.js +++ b/config/webpack/webpack.common.js @@ -22,6 +22,7 @@ const includeModules = [ 'react-native-google-places-autocomplete', 'react-native-qrcode-svg', 'react-native-view-shot', + '@react-native/assets', ].join('|'); const envToLogoSuffixMap = { diff --git a/package-lock.json b/package-lock.json index 7100102db0d6..b4e525604d04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,6 +52,7 @@ "domhandler": "^4.3.0", "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#ab4895807dd9a26f64bfaee80db15ee2c48a5124", "expo": "^49.0.0", + "expo-av": "~13.4.1", "fbjs": "^3.0.2", "htmlparser2": "^7.2.0", "idb-keyval": "^6.2.1", @@ -23509,6 +23510,7 @@ }, "node_modules/bindings": { "version": "1.5.0", + "dev": true, "license": "MIT", "optional": true, "dependencies": { @@ -29827,6 +29829,14 @@ "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" }, + "node_modules/expo-av": { + "version": "13.4.1", + "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-13.4.1.tgz", + "integrity": "sha512-0K8QEFzZeNGrppzYUs8wOtjOyPPkxzlVYbEHM6WzIQOG1uYYNOJkJB3aQHVFXHmz+AzoHwMrUjcschofwaMNeg==", + "peerDependencies": { + "expo": "*" + } + }, "node_modules/expo-constants": { "version": "14.4.2", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.4.2.tgz", @@ -30622,6 +30632,7 @@ }, "node_modules/file-uri-to-path": { "version": "1.0.0", + "dev": true, "license": "MIT", "optional": true }, @@ -40701,6 +40712,7 @@ "version": "2.17.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, "optional": true }, "node_modules/nanoid": { @@ -49995,6 +50007,7 @@ }, "node_modules/watchpack-chokidar2/node_modules/fsevents": { "version": "1.2.13", + "dev": true, "hasInstallScript": true, "license": "MIT", "optional": true, @@ -68114,6 +68127,7 @@ }, "bindings": { "version": "1.5.0", + "dev": true, "optional": true, "requires": { "file-uri-to-path": "1.0.0" @@ -72655,6 +72669,12 @@ } } }, + "expo-av": { + "version": "13.4.1", + "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-13.4.1.tgz", + "integrity": "sha512-0K8QEFzZeNGrppzYUs8wOtjOyPPkxzlVYbEHM6WzIQOG1uYYNOJkJB3aQHVFXHmz+AzoHwMrUjcschofwaMNeg==", + "requires": {} + }, "expo-constants": { "version": "14.4.2", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-14.4.2.tgz", @@ -73095,6 +73115,7 @@ }, "file-uri-to-path": { "version": "1.0.0", + "dev": true, "optional": true }, "filelist": { @@ -80023,6 +80044,7 @@ "version": "2.17.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, "optional": true }, "nanoid": { @@ -86366,6 +86388,7 @@ }, "fsevents": { "version": "1.2.13", + "dev": true, "optional": true, "requires": { "bindings": "^1.5.0", diff --git a/package.json b/package.json index e61fd289259d..f2a39b67e8b5 100644 --- a/package.json +++ b/package.json @@ -164,7 +164,8 @@ "save": "^2.4.0", "semver": "^7.5.2", "shim-keyboard-event-key": "^1.0.3", - "underscore": "^1.13.1" + "underscore": "^1.13.1", + "expo-av": "~13.4.1" }, "devDependencies": { "@actions/core": "1.10.0", diff --git a/patches/expensify-common+1.0.0.patch b/patches/expensify-common+1.0.0.patch new file mode 100644 index 000000000000..2ff5acf759be --- /dev/null +++ b/patches/expensify-common+1.0.0.patch @@ -0,0 +1,15 @@ +diff --git a/node_modules/expensify-common/lib/str.js b/node_modules/expensify-common/lib/str.js +index ad48560..60dc8af 100644 +--- a/node_modules/expensify-common/lib/str.js ++++ b/node_modules/expensify-common/lib/str.js +@@ -1088,6 +1088,10 @@ const Str = { + return _.contains(['jpeg', 'jpg', 'gif', 'png', 'bmp', 'webp'], this.getExtension(url)); + }, + ++ isVideo(url) { ++ return _.contains(['mov', 'mp4'], this.getExtension(url)); ++ }, ++ + /** + * Checks whether the given string is a +@ domain email account, such as + * +@domain.com diff --git a/src/App.js b/src/App.js index 1d2e07345c24..a225887daae3 100644 --- a/src/App.js +++ b/src/App.js @@ -26,6 +26,7 @@ import {ReportAttachmentsProvider} from './pages/home/report/ReportAttachmentsCo import * as Session from './libs/actions/Session'; import useDefaultDragAndDrop from './hooks/useDefaultDragAndDrop'; import OnyxUpdateManager from './libs/actions/OnyxUpdateManager'; +import {PlaybackContextProvider} from './components/PlaybackContext'; // For easier debugging and development, when we are in web we expose Onyx to the window, so you can more easily set data into Onyx if (window && Environment.isDevelopment()) { @@ -64,6 +65,7 @@ function App() { EnvironmentProvider, ThemeProvider, ThemeStylesProvider, + PlaybackContextProvider, ]} > diff --git a/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.js b/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.js index 46576bc62e7a..e0546688c19a 100644 --- a/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.js +++ b/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.js @@ -1,6 +1,7 @@ import React from 'react'; import {withOnyx} from 'react-native-onyx'; import PropTypes from 'prop-types'; +import Str from 'expensify-common/lib/str'; import {propTypes as anchorForAttachmentsOnlyPropTypes, defaultProps as anchorForAttachmentsOnlyDefaultProps} from './anchorForAttachmentsOnlyPropTypes'; import CONST from '../../CONST'; import ONYXKEYS from '../../ONYXKEYS'; @@ -11,6 +12,8 @@ import addEncryptedAuthTokenToURL from '../../libs/addEncryptedAuthTokenToURL'; import {ShowContextMenuContext, showContextMenuForReport} from '../ShowContextMenuContext'; import * as ReportUtils from '../../libs/ReportUtils'; import PressableWithoutFeedback from '../Pressable/PressableWithoutFeedback'; +import AttachmentModal from '../AttachmentModal'; +import VideoPlayerPreview from '../VideoPlayerPreview'; const propTypes = { /** Press in handler for the link */ @@ -39,35 +42,55 @@ function BaseAnchorForAttachmentsOnly(props) { const sourceURLWithAuth = addEncryptedAuthTokenToURL(sourceURL); const sourceID = (sourceURL.match(CONST.REGEX.ATTACHMENT_ID) || [])[1]; const fileName = props.displayName; + const isVideo = Str.isVideo(sourceURL); const isDownloading = props.download && props.download.isDownloading; return ( - {({anchor, report, action, checkIfContextMenuActive}) => ( - { - if (isDownloading) { - return; - } - Download.setDownload(sourceID, true); - fileDownload(sourceURLWithAuth, fileName).then(() => Download.setDownload(sourceID, false)); - }} - onPressIn={props.onPressIn} - onPressOut={props.onPressOut} - onLongPress={(event) => showContextMenuForReport(event, anchor, report.reportID, action, checkIfContextMenuActive, ReportUtils.isArchivedRoom(report))} - accessibilityLabel={fileName} - accessibilityRole={CONST.ACCESSIBILITY_ROLE.BUTTON} - > - + isVideo ? ( + - - )} + isAuthTokenRequired={props.isAuthTokenRequired} + originalFileName={props.displayName} + > + {({show}) => ( + + )} + + ) : ( + { + if (isDownloading) { + return; + } + Download.setDownload(sourceID, true); + fileDownload(sourceURLWithAuth, fileName).then(() => Download.setDownload(sourceID, false)); + }} + onPressIn={props.onPressIn} + onPressOut={props.onPressOut} + onLongPress={(event) => showContextMenuForReport(event, anchor, report.reportID, action, checkIfContextMenuActive, ReportUtils.isArchivedRoom(report))} + accessibilityLabel={fileName} + accessibilityRole={CONST.ACCESSIBILITY_ROLE.BUTTON} + > + + + ) + } ); } diff --git a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js index 8a623a44709f..427f63ca4dbb 100644 --- a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js +++ b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js @@ -1,11 +1,13 @@ import {Parser as HtmlParser} from 'htmlparser2'; import _ from 'underscore'; import lodashGet from 'lodash/get'; +import Str from 'expensify-common/lib/str'; import * as ReportActionsUtils from '../../../libs/ReportActionsUtils'; import * as TransactionUtils from '../../../libs/TransactionUtils'; import * as ReceiptUtils from '../../../libs/ReceiptUtils'; import CONST from '../../../CONST'; import tryResolveUrlFromApiRoot from '../../../libs/tryResolveUrlFromApiRoot'; +import addEncryptedAuthTokenToURL from '../../../libs/addEncryptedAuthTokenToURL'; /** * Constructs the initial component state from report actions @@ -19,6 +21,17 @@ function extractAttachmentsFromReport(report, reportActions) { const htmlParser = new HtmlParser({ onopentag: (name, attribs) => { + const isVideo = Boolean(Str.isVideo(attribs['data-expensify-source'] || '')); + if (isVideo) { + const splittedUrl = attribs['data-expensify-source'].split('/'); + attachments.unshift({ + source: addEncryptedAuthTokenToURL(tryResolveUrlFromApiRoot(attribs['data-expensify-source'])), + isAuthTokenRequired: true, + file: {name: splittedUrl[splittedUrl.length - 1]}, + }); + return; + } + if (name !== 'img' || !attribs.src) { return; } diff --git a/src/components/Attachments/AttachmentCarousel/index.js b/src/components/Attachments/AttachmentCarousel/index.js index 00b603cdd7d9..96177fe1e3f9 100644 --- a/src/components/Attachments/AttachmentCarousel/index.js +++ b/src/components/Attachments/AttachmentCarousel/index.js @@ -55,6 +55,8 @@ function AttachmentCarousel({report, reportActions, source, onNavigate, setDownl const initialPage = _.findIndex(attachmentsFromReport, compareImage); + console.log(page, attachmentsFromReport, source); + // Dismiss the modal when deleting an attachment during its display in preview. if (initialPage === -1 && _.find(attachments, compareImage)) { Navigation.dismissModal(); diff --git a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js new file mode 100644 index 000000000000..1b2f18f39eee --- /dev/null +++ b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js @@ -0,0 +1,46 @@ +import React, {memo, useEffect, useRef} from 'react'; + +import {View} from 'react-native'; +import styles from '../../../../styles/styles'; +import VideoPlayer from '../../../VideoPlayer'; +import withLocalize, {withLocalizePropTypes} from '../../../withLocalize'; +import compose from '../../../../libs/compose'; +import useWindowDimensions from '../../../../hooks/useWindowDimensions'; +import {usePlaybackContext} from '../../../PlaybackContext'; + +const propTypes = { + ...withLocalizePropTypes, +}; + +function AttachmentViewVideo({source, file, loadComplete, onPress, translate}) { + const {currentlyPlayingURL, originalParent, sharedElement} = usePlaybackContext(); + const {isSmallScreenWidth} = useWindowDimensions(); + const videoPlayerParentRef = useRef(null); + + useEffect(() => { + if (isSmallScreenWidth) return; + const ref = videoPlayerParentRef.current; + if (currentlyPlayingURL === source) ref.appendChild(sharedElement); + return () => { + if (!ref.childNodes[0]) return; + originalParent.appendChild(sharedElement); + }; + }, [currentlyPlayingURL, originalParent, sharedElement, source]); + + return !isSmallScreenWidth ? ( + + ) : ( + + ); +} + +AttachmentViewVideo.propTypes = propTypes; +AttachmentViewVideo.defaultProps = {}; + +export default compose(memo, withLocalize)(AttachmentViewVideo); diff --git a/src/components/Attachments/AttachmentView/index.js b/src/components/Attachments/AttachmentView/index.js index 1fc579977c9d..613cf8875898 100755 --- a/src/components/Attachments/AttachmentView/index.js +++ b/src/components/Attachments/AttachmentView/index.js @@ -1,4 +1,4 @@ -import React, {memo, useState} from 'react'; +import React, {memo, useState, useEffect} from 'react'; import {View, ActivityIndicator} from 'react-native'; import _ from 'underscore'; import PropTypes from 'prop-types'; @@ -14,10 +14,12 @@ import themeColors from '../../../styles/themes/default'; import variables from '../../../styles/variables'; import AttachmentViewImage from './AttachmentViewImage'; import AttachmentViewPdf from './AttachmentViewPdf'; +import AttachmentViewVideo from './AttachmentViewVideo'; import addEncryptedAuthTokenToURL from '../../../libs/addEncryptedAuthTokenToURL'; import * as StyleUtils from '../../../styles/StyleUtils'; import {attachmentViewPropTypes, attachmentViewDefaultProps} from './propTypes'; import useNetwork from '../../../hooks/useNetwork'; +import {usePlaybackContext} from '../../PlaybackContext'; const propTypes = { ...attachmentViewPropTypes, @@ -65,7 +67,14 @@ function AttachmentView({ isWorkspaceAvatar, fallbackSource, }) { + const {updateCurrentlyPlayingURL} = usePlaybackContext(); const [loadComplete, setLoadComplete] = useState(false); + const isVideo = Str.isVideo(source); + + useEffect(() => { + if (!isFocused) return; + updateCurrentlyPlayingURL(isVideo ? source : null); + }, [isFocused, isVideo, source, updateCurrentlyPlayingURL]); const [imageError, setImageError] = useState(false); @@ -135,6 +144,22 @@ function AttachmentView({ ); } + if (isVideo || (file && Str.isVideo(file.name))) { + return ( + + ); + } + return ( diff --git a/src/components/PlaybackContext.js b/src/components/PlaybackContext.js new file mode 100644 index 000000000000..e0a6c209d3fa --- /dev/null +++ b/src/components/PlaybackContext.js @@ -0,0 +1,48 @@ +import React, {useMemo, useState, useCallback} from 'react'; +import PropTypes from 'prop-types'; + +const PlaybackContext = React.createContext(null); + +function PlaybackContextProvider({children}) { + const [currentlyPlayingURL, setCurrentlyPlayingURL] = useState(null); + const [sharedElement, setSharedElement] = useState(null); + const [originalParent, setOriginalParent] = useState(null); + + const updateCurrentlyPlayingURL = useCallback((url) => { + setCurrentlyPlayingURL(url); + }, []); + + const updateSharedElements = (parent, child) => { + setOriginalParent(parent); + setSharedElement(child); + console.log(parent, child); + }; + + const contextValue = useMemo( + () => ({ + updateCurrentlyPlayingURL, + currentlyPlayingURL, + originalParent, + sharedElement, + updateSharedElements, + }), + [currentlyPlayingURL, originalParent, sharedElement, updateCurrentlyPlayingURL], + ); + return {children}; +} + +function usePlaybackContext() { + const context = React.useContext(PlaybackContext); + if (context === undefined) { + throw new Error('usePlaybackContext must be used within a PlaybackContextProvider'); + } + return context; +} + +PlaybackContextProvider.displayName = 'EnvironmentProvider'; +PlaybackContextProvider.propTypes = { + /** Actual content wrapped by this component */ + children: PropTypes.node.isRequired, +}; + +export {PlaybackContextProvider, usePlaybackContext}; diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js new file mode 100644 index 000000000000..7c75de3a96c3 --- /dev/null +++ b/src/components/VideoPlayer/IconButton.js @@ -0,0 +1,53 @@ +import React, {forwardRef} from 'react'; +import {View, Text} from 'react-native'; +import PropTypes from 'prop-types'; +import {Video, ResizeMode} from 'expo-av'; +import Slider from '../AvatarCropModal/Slider'; +import styles from '../../styles/styles'; +import themeColors from '../../styles/themes/default'; +import PressableWithoutFeedback from '../Pressable/PressableWithoutFeedback'; +import Icon from '../Icon'; +import * as Expensicons from '../Icon/Expensicons'; +import CONST from '../../CONST'; + +const propTypes = { + // eslint-disable-next-line react/forbid-prop-types + src: PropTypes.any.isRequired, + + onPress: PropTypes.func, + + fill: PropTypes.string, + + accessibilityLabel: PropTypes.string.isRequired, + + // eslint-disable-next-line react/forbid-prop-types, + style: PropTypes.object, +}; + +const defaultProps = { + fill: 'white', + onPress: () => {}, + style: {}, +}; + +function IconButton({src, fill, onPress, style, accessibilityLabel}) { + return ( + + + + ); +} + +IconButton.propTypes = propTypes; +IconButton.defaultProps = defaultProps; +IconButton.displayName = 'IconButton'; + +export default IconButton; diff --git a/src/components/VideoPlayer/ProgressBar.js b/src/components/VideoPlayer/ProgressBar.js new file mode 100644 index 000000000000..cc0eda1350e7 --- /dev/null +++ b/src/components/VideoPlayer/ProgressBar.js @@ -0,0 +1,52 @@ +import React, {useEffect, useState} from 'react'; +import PropTypes from 'prop-types'; +import {Gesture, GestureDetector} from 'react-native-gesture-handler'; +import Animated, {useAnimatedStyle, useSharedValue, withTiming, runOnJS} from 'react-native-reanimated'; + +const propTypes = { + // eslint-disable-next-line react/forbid-prop-types + duration: PropTypes.number.isRequired, + + position: PropTypes.number.isRequired, + + updatePostiion: PropTypes.func.isRequired, +}; + +const defaultProps = {}; + +function ProgressBar({duration, position, updatePostiion}) { + const [sliderWidth, setSliderWidth] = useState(1); + const progressWidth = useSharedValue(0); + + const onSliderLayout = (e) => { + setSliderWidth(e.nativeEvent.layout.width); + }; + + const pan = Gesture.Pan().onChange((event) => { + progressWidth.value = (event.x / sliderWidth) * 100; + runOnJS(updatePostiion)((event.x / sliderWidth) * duration); + }); + + useEffect(() => { + progressWidth.value = withTiming((position / duration) * 100, {duration: 270}); + }, [duration, position, progressWidth]); + + const progressBarStyle = useAnimatedStyle(() => ({width: `${progressWidth.value}%`})); + + return ( + + + + + + ); +} + +ProgressBar.propTypes = propTypes; +ProgressBar.defaultProps = defaultProps; +ProgressBar.displayName = 'ProgressBar'; + +export default ProgressBar; diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js new file mode 100644 index 000000000000..a2296173e4bc --- /dev/null +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -0,0 +1,90 @@ +import React, {useEffect} from 'react'; +import {View, Text} from 'react-native'; +import Animated, {FadeIn} from 'react-native-reanimated'; +import PropTypes from 'prop-types'; +import IconButton from './IconButton'; +import * as Expensicons from '../Icon/Expensicons'; +import ProgressBar from './ProgressBar'; +import convertMillisecondsToTime from './utils'; + +const propTypes = { + // eslint-disable-next-line react/forbid-prop-types + duration: PropTypes.number.isRequired, + + position: PropTypes.number.isRequired, + + updatePostiion: PropTypes.func.isRequired, + + togglePlay: PropTypes.func.isRequired, + + enterFullScreenMode: PropTypes.func.isRequired, +}; + +const defaultProps = {}; + +function VideoPlayerControls({duration, position, updatePostiion, togglePlay, enterFullScreenMode}) { + const [durationFormatted, setDurationFormatted] = React.useState('0:00'); + + useEffect(() => { + setDurationFormatted(convertMillisecondsToTime(duration)); + }, [duration]); + + return ( + + + + + {convertMillisecondsToTime(position)} + / + {durationFormatted} + + + + + + + + + + + ); +} + +VideoPlayerControls.propTypes = propTypes; +VideoPlayerControls.defaultProps = defaultProps; +VideoPlayerControls.displayName = 'VideoPlayerControls'; + +export default VideoPlayerControls; diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js new file mode 100644 index 000000000000..7768305a60ae --- /dev/null +++ b/src/components/VideoPlayer/index.js @@ -0,0 +1,119 @@ +import React, {useRef} from 'react'; +import {View} from 'react-native'; +import PropTypes from 'prop-types'; +import {Video, ResizeMode} from 'expo-av'; +import _ from 'underscore'; +import styles from '../../styles/styles'; +import IconButton from './IconButton'; +import * as Expensicons from '../Icon/Expensicons'; +import Hoverable from '../Hoverable'; +import FullScreenLoadingIndicator from '../FullscreenLoadingIndicator'; +import {usePlaybackContext} from '../PlaybackContext'; +import useWindowDimensions from '../../hooks/useWindowDimensions'; +import VideoPlayerControls from './VideoPlayerControls'; + +const propTypes = { + url: PropTypes.string.isRequired, + + shouldPlay: PropTypes.bool, + + onVideoLoaded: PropTypes.func, + + resizeMode: PropTypes.string, + + isLooping: PropTypes.bool, + + onOpenInModalButtonPress: PropTypes.func, + + // eslint-disable-next-line react/forbid-prop-types + style: PropTypes.arrayOf(PropTypes.object), + + // eslint-disable-next-line react/forbid-prop-types + videoStyle: PropTypes.arrayOf(PropTypes.object), +}; + +const defaultProps = { + shouldPlay: false, + onVideoLoaded: () => {}, + onOpenInModalButtonPress: () => {}, + resizeMode: ResizeMode.CONTAIN, + isLooping: false, + style: [styles.w100, styles.h100], + videoStyle: [styles.w100, styles.h100], +}; + +function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, onOpenInModalButtonPress}) { + const {isSmallScreenWidth} = useWindowDimensions(); + const {updateCurrentlyPlayingURL} = usePlaybackContext(); + const [isVideoPlaying, setIsVideoPlaying] = React.useState(false); + const [isVideoLoading, setIsVideoLoading] = React.useState(true); + const [duration, setDuration] = React.useState(0); + const [position, setPosition] = React.useState(0); + + const ref = useRef(null); + + const togglePlay = () => { + updateCurrentlyPlayingURL(url); + ref.current.setStatusAsync({shouldPlay: !isVideoPlaying}); + setIsVideoPlaying(!isVideoPlaying); + }; + + const updatePostiion = (newPosition) => { + ref.current.setStatusAsync({positionMillis: newPosition}); + }; + + const enterFullScreenMode = () => { + ref.current.presentFullscreenPlayer(); + }; + + return ( + + {(isHovered) => ( + + + )} + + ); +} + +VideoPlayer.propTypes = propTypes; +VideoPlayer.defaultProps = defaultProps; +VideoPlayer.displayName = 'VideoPlayer'; + +export default VideoPlayer; diff --git a/src/components/VideoPlayer/utils.js b/src/components/VideoPlayer/utils.js new file mode 100644 index 000000000000..6b422eab720d --- /dev/null +++ b/src/components/VideoPlayer/utils.js @@ -0,0 +1,16 @@ +const convertMillisecondsToTime = (milliseconds) => { + if (milliseconds <= 0) { + return '0:00'; // Handle negative input if needed + } + + const totalSeconds = Math.floor(milliseconds / 1000); + const minutes = Math.floor(totalSeconds / 60); + const seconds = totalSeconds % 60; + + const formattedMinutes = String(minutes); + const formattedSeconds = String(seconds).padStart(2, '0'); + + return `${formattedMinutes}:${formattedSeconds}`; +}; + +export default convertMillisecondsToTime; diff --git a/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js b/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js new file mode 100644 index 000000000000..f33aae1fb80c --- /dev/null +++ b/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js @@ -0,0 +1,42 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ImageWithSizeCalculation from '../Image'; +import styles from '../../styles/styles'; +import PressableWithoutFeedback from '../Pressable/PressableWithoutFeedback'; +import CONST from '../../CONST'; + +const propTypes = { + thumbnailUrl: PropTypes.string.isRequired, + + onPress: PropTypes.func.isRequired, + + accessibilityLabel: PropTypes.string.isRequired, +}; + +const defaultProps = {}; + +function VideoPlayerThumbnail({thumbnailUrl, onPress, accessibilityLabel}) { + const updateImageSize = () => {}; + + return ( + + + + ); +} + +VideoPlayerThumbnail.propTypes = propTypes; +VideoPlayerThumbnail.defaultProps = defaultProps; +VideoPlayerThumbnail.displayName = 'AttachmentView'; + +export default VideoPlayerThumbnail; diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js new file mode 100644 index 000000000000..a8544c528cd3 --- /dev/null +++ b/src/components/VideoPlayerPreview/index.js @@ -0,0 +1,109 @@ +import React, {useState, useRef, useMemo, useEffect} from 'react'; +import {View} from 'react-native'; +import PropTypes from 'prop-types'; +import VideoPlayer from '../VideoPlayer'; +import styles from '../../styles/styles'; +import VideoPlayerThumbnail from './VideoPlayerThumbnail'; +import useWindowDimensions from '../../hooks/useWindowDimensions'; +import {usePlaybackContext} from '../PlaybackContext'; +import IconButton from '../VideoPlayer/IconButton'; +import * as Expensicons from '../Icon/Expensicons'; + +const propTypes = { + videoUrl: PropTypes.string.isRequired, + + // eslint-disable-next-line react/forbid-prop-types + videoDimensions: PropTypes.object, + + thumbnailUrl: PropTypes.stridg, + + fileName: PropTypes.string.isRequired, + + showModal: PropTypes.func.isRequired, +}; + +const defaultProps = { + videoDimensions: {width: 1900, height: 1400}, + thumbnailUrl: 'https://d33v4339jhl8k0.cloudfront.net/docs/assets/591c8a010428634b4a33375c/images/5ab4866b2c7d3a56d8873f4c/file-MrylO8jADD.png', +}; + +function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, showModal}) { + const {currentlyPlayingURL, updateCurrentlyPlayingURL, updateSharedElements} = usePlaybackContext(); + const {isSmallScreenWidth} = useWindowDimensions(); + const [isThumbnail, setIsThumbnail] = useState(true); + const [measuredDimenstions, setMeasuredDimenstions] = useState(null); + const videoPlayerRef = useRef(null); + const videoPlayerParentRef = useRef(null); + + const videoStyles = useMemo(() => { + const {width, height} = measuredDimenstions || videoDimensions; + const aspectRatio = width / height; + if (width > height) return {width: 350, aspectRatio}; + return {height: 350, aspectRatio}; + }, [videoDimensions, measuredDimenstions]); + + const onVideoLoaded = (e) => { + setMeasuredDimenstions({width: e.srcElement.videoWidth, height: e.srcElement.videoHeight}); + }; + + const handleOnPress = () => { + updateCurrentlyPlayingURL(videoUrl); + if (isSmallScreenWidth) { + showModal(); + } + }; + + useEffect(() => { + if (videoUrl !== currentlyPlayingURL) return; + setIsThumbnail(false); + }, [currentlyPlayingURL, videoUrl]); + + useEffect(() => { + if (isThumbnail || videoUrl !== currentlyPlayingURL) return; + updateSharedElements(videoPlayerParentRef.current, videoPlayerRef.current); + }, [currentlyPlayingURL, isThumbnail, updateSharedElements, videoUrl]); + + return ( + + {isSmallScreenWidth || isThumbnail ? ( + + ) : ( + { + if (!el) return; + videoPlayerParentRef.current = el; + if (el.childNodes[0]) videoPlayerRef.current = el.childNodes[0]; + }} + style={styles.flex1} + > + + + + + + )} + + ); +} + +VideoPlayerPreview.propTypes = propTypes; +VideoPlayerPreview.defaultProps = defaultProps; +VideoPlayerPreview.displayName = 'VideoPlayerPreview'; + +export default VideoPlayerPreview; From 6c49f76e71be7be0784f8adba81789bfd760f115 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 5 Oct 2023 13:04:08 +0200 Subject: [PATCH 007/701] clear code --- src/components/VideoPlayer/IconButton.js | 8 +-- src/components/VideoPlayer/index.js | 7 +-- src/components/VideoPlayerPreview/index.js | 66 +++++++++++++--------- 3 files changed, 41 insertions(+), 40 deletions(-) diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js index 7c75de3a96c3..d5307f557c17 100644 --- a/src/components/VideoPlayer/IconButton.js +++ b/src/components/VideoPlayer/IconButton.js @@ -1,13 +1,7 @@ -import React, {forwardRef} from 'react'; -import {View, Text} from 'react-native'; +import React from 'react'; import PropTypes from 'prop-types'; -import {Video, ResizeMode} from 'expo-av'; -import Slider from '../AvatarCropModal/Slider'; -import styles from '../../styles/styles'; -import themeColors from '../../styles/themes/default'; import PressableWithoutFeedback from '../Pressable/PressableWithoutFeedback'; import Icon from '../Icon'; -import * as Expensicons from '../Icon/Expensicons'; import CONST from '../../CONST'; const propTypes = { diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 7768305a60ae..d64ea20036d8 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -4,8 +4,6 @@ import PropTypes from 'prop-types'; import {Video, ResizeMode} from 'expo-av'; import _ from 'underscore'; import styles from '../../styles/styles'; -import IconButton from './IconButton'; -import * as Expensicons from '../Icon/Expensicons'; import Hoverable from '../Hoverable'; import FullScreenLoadingIndicator from '../FullscreenLoadingIndicator'; import {usePlaybackContext} from '../PlaybackContext'; @@ -23,8 +21,6 @@ const propTypes = { isLooping: PropTypes.bool, - onOpenInModalButtonPress: PropTypes.func, - // eslint-disable-next-line react/forbid-prop-types style: PropTypes.arrayOf(PropTypes.object), @@ -35,14 +31,13 @@ const propTypes = { const defaultProps = { shouldPlay: false, onVideoLoaded: () => {}, - onOpenInModalButtonPress: () => {}, resizeMode: ResizeMode.CONTAIN, isLooping: false, style: [styles.w100, styles.h100], videoStyle: [styles.w100, styles.h100], }; -function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, onOpenInModalButtonPress}) { +function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle}) { const {isSmallScreenWidth} = useWindowDimensions(); const {updateCurrentlyPlayingURL} = usePlaybackContext(); const [isVideoPlaying, setIsVideoPlaying] = React.useState(false); diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index a8544c528cd3..f8d642d1509c 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -38,7 +38,9 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, const videoStyles = useMemo(() => { const {width, height} = measuredDimenstions || videoDimensions; const aspectRatio = width / height; - if (width > height) return {width: 350, aspectRatio}; + if (width > height) { + return {width: 350, aspectRatio}; + } return {height: 350, aspectRatio}; }, [videoDimensions, measuredDimenstions]); @@ -54,12 +56,16 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, }; useEffect(() => { - if (videoUrl !== currentlyPlayingURL) return; + if (videoUrl !== currentlyPlayingURL) { + return; + } setIsThumbnail(false); }, [currentlyPlayingURL, videoUrl]); useEffect(() => { - if (isThumbnail || videoUrl !== currentlyPlayingURL) return; + if (isThumbnail || videoUrl !== currentlyPlayingURL) { + return; + } updateSharedElements(videoPlayerParentRef.current, videoPlayerRef.current); }, [currentlyPlayingURL, isThumbnail, updateSharedElements, videoUrl]); @@ -72,31 +78,37 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, accessibilityLabel={fileName} /> ) : ( - { - if (!el) return; - videoPlayerParentRef.current = el; - if (el.childNodes[0]) videoPlayerRef.current = el.childNodes[0]; - }} - style={styles.flex1} - > - - - + <> + { + if (!el) { + return; + } + videoPlayerParentRef.current = el; + if (el.childNodes[0]) { + videoPlayerRef.current = el.childNodes[0]; + } + }} + style={styles.flex1} + > + + + - + + )} ); From 389bdd70565cbf32f20bbdad33a6138dbd844029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 6 Oct 2023 14:51:49 +0200 Subject: [PATCH 008/701] fix send attachment modal --- .../AttachmentViewVideo/index.js | 22 +++++++++++++------ src/components/PlaybackContext.js | 1 - src/components/VideoPlayer/index.js | 2 +- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js index 1b2f18f39eee..14e3f2c2d589 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js @@ -1,5 +1,4 @@ import React, {memo, useEffect, useRef} from 'react'; - import {View} from 'react-native'; import styles from '../../../../styles/styles'; import VideoPlayer from '../../../VideoPlayer'; @@ -12,22 +11,31 @@ const propTypes = { ...withLocalizePropTypes, }; -function AttachmentViewVideo({source, file, loadComplete, onPress, translate}) { +function AttachmentViewVideo({source}) { const {currentlyPlayingURL, originalParent, sharedElement} = usePlaybackContext(); const {isSmallScreenWidth} = useWindowDimensions(); const videoPlayerParentRef = useRef(null); + const shouldUseSharedElementTransition = !isSmallScreenWidth && currentlyPlayingURL === source; + + // shared element transition logic for video player useEffect(() => { - if (isSmallScreenWidth) return; + if (!shouldUseSharedElementTransition) { + return; + } const ref = videoPlayerParentRef.current; - if (currentlyPlayingURL === source) ref.appendChild(sharedElement); + if (currentlyPlayingURL === source) { + ref.appendChild(sharedElement); + } return () => { - if (!ref.childNodes[0]) return; + if (!ref.childNodes[0]) { + return; + } originalParent.appendChild(sharedElement); }; - }, [currentlyPlayingURL, originalParent, sharedElement, source]); + }, [currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedElementTransition, source]); - return !isSmallScreenWidth ? ( + return shouldUseSharedElementTransition ? ( { setOriginalParent(parent); setSharedElement(child); - console.log(parent, child); }; const contextValue = useMemo( diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index d64ea20036d8..3f06e9b1bcd9 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -70,7 +70,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty style={style} videoStyle={videoStyle} source={{ - uri: 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', + uri: url || 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', }} shouldPlay={shouldPlay} useNativeControls={false} From de64ca585d78f5bde77605a13dde9a69fdf0309c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 6 Oct 2023 16:27:25 +0200 Subject: [PATCH 009/701] add icons --- assets/images/fullscreen.svg | 6 +++++ assets/images/mute.svg | 4 +++ assets/images/pause.svg | 4 +++ assets/images/play.svg | 3 +++ assets/images/volume-high.svg | 5 ++++ assets/images/volume-low.svg | 4 +++ src/components/Icon/Expensicons.js | 12 +++++++++ .../VideoPlayer/VideoPlayerControls.js | 26 ++++++++++++++----- src/components/VideoPlayer/index.js | 3 ++- 9 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 assets/images/fullscreen.svg create mode 100644 assets/images/mute.svg create mode 100644 assets/images/pause.svg create mode 100644 assets/images/play.svg create mode 100644 assets/images/volume-high.svg create mode 100644 assets/images/volume-low.svg diff --git a/assets/images/fullscreen.svg b/assets/images/fullscreen.svg new file mode 100644 index 000000000000..740d0e2eec04 --- /dev/null +++ b/assets/images/fullscreen.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/mute.svg b/assets/images/mute.svg new file mode 100644 index 000000000000..02a89197e4c1 --- /dev/null +++ b/assets/images/mute.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/pause.svg b/assets/images/pause.svg new file mode 100644 index 000000000000..bdb61475ed9a --- /dev/null +++ b/assets/images/pause.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/play.svg b/assets/images/play.svg new file mode 100644 index 000000000000..5fca1e06db45 --- /dev/null +++ b/assets/images/play.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/volume-high.svg b/assets/images/volume-high.svg new file mode 100644 index 000000000000..091962e77eda --- /dev/null +++ b/assets/images/volume-high.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/volume-low.svg b/assets/images/volume-low.svg new file mode 100644 index 000000000000..b49c12d5f3d3 --- /dev/null +++ b/assets/images/volume-low.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/components/Icon/Expensicons.js b/src/components/Icon/Expensicons.js index 810bbc86b5dc..e0368a3f9c8a 100644 --- a/src/components/Icon/Expensicons.js +++ b/src/components/Icon/Expensicons.js @@ -51,6 +51,7 @@ import Flag from '../../../assets/images/flag.svg'; import FlagLevelOne from '../../../assets/images/flag_level_01.svg'; import FlagLevelTwo from '../../../assets/images/flag_level_02.svg'; import FlagLevelThree from '../../../assets/images/flag_level_03.svg'; +import Fullscreen from '../../../assets/images/fullscreen.svg'; import Gallery from '../../../assets/images/gallery.svg'; import Gear from '../../../assets/images/gear.svg'; import Globe from '../../../assets/images/globe.svg'; @@ -78,15 +79,18 @@ import Menu from '../../../assets/images/menu.svg'; import MoneyBag from '../../../assets/images/money-bag.svg'; import MoneyCircle from '../../../assets/images/money-circle.svg'; import Monitor from '../../../assets/images/monitor.svg'; +import Mute from '../../../assets/images/mute.svg'; import NewWindow from '../../../assets/images/new-window.svg'; import NewWorkspace from '../../../assets/images/new-workspace.svg'; import Offline from '../../../assets/images/offline.svg'; import OfflineCloud from '../../../assets/images/offline-cloud.svg'; import Paperclip from '../../../assets/images/paperclip.svg'; +import Pause from '../../../assets/images/pause.svg'; import Paycheck from '../../../assets/images/paycheck.svg'; import Pencil from '../../../assets/images/pencil.svg'; import Phone from '../../../assets/images/phone.svg'; import Pin from '../../../assets/images/pin.svg'; +import Play from '../../../assets/images/play.svg'; import Plus from '../../../assets/images/plus.svg'; import Printer from '../../../assets/images/printer.svg'; import Profile from '../../../assets/images/profile.svg'; @@ -108,6 +112,8 @@ import Upload from '../../../assets/images/upload.svg'; import UploadAlt from '../../../assets/images/upload-alt.svg'; import User from '../../../assets/images/user.svg'; import Users from '../../../assets/images/users.svg'; +import VolumeHigh from '../../../assets/images/volume-high.svg'; +import VolumeLow from '../../../assets/images/volume-low.svg'; import Wallet from '../../../assets/images/wallet.svg'; import Workspace from '../../../assets/images/workspace-default-avatar.svg'; import Zoom from '../../../assets/images/zoom.svg'; @@ -185,6 +191,7 @@ export { FlagLevelOne, FlagLevelTwo, FlagLevelThree, + Fullscreen, Gallery, Gear, Globe, @@ -212,15 +219,18 @@ export { MoneyBag, MoneyCircle, Monitor, + Mute, NewWindow, NewWorkspace, Offline, OfflineCloud, Paperclip, + Pause, Paycheck, Pencil, Phone, Pin, + Play, Plus, Printer, Profile, @@ -243,6 +253,8 @@ export { UploadAlt, User, Users, + VolumeHigh, + VolumeLow, Wallet, Workspace, Zoom, diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index a2296173e4bc..b1666af93c6b 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -1,6 +1,6 @@ import React, {useEffect} from 'react'; import {View, Text} from 'react-native'; -import Animated, {FadeIn} from 'react-native-reanimated'; +import Animated, {FadeIn, FadeOut} from 'react-native-reanimated'; import PropTypes from 'prop-types'; import IconButton from './IconButton'; import * as Expensicons from '../Icon/Expensicons'; @@ -18,11 +18,15 @@ const propTypes = { togglePlay: PropTypes.func.isRequired, enterFullScreenMode: PropTypes.func.isRequired, + + isPlaying: PropTypes.bool, }; -const defaultProps = {}; +const defaultProps = { + isPlaying: false, +}; -function VideoPlayerControls({duration, position, updatePostiion, togglePlay, enterFullScreenMode}) { +function VideoPlayerControls({duration, position, updatePostiion, togglePlay, enterFullScreenMode, isPlaying}) { const [durationFormatted, setDurationFormatted] = React.useState('0:00'); useEffect(() => { @@ -43,13 +47,13 @@ function VideoPlayerControls({duration, position, updatePostiion, togglePlay, en overflow: 'hidden', padding: 10, }} - entering={FadeIn.duration(300)} - exiting={FadeIn.duration(300)} + entering={FadeIn.duration(3000)} + exiting={FadeOut.duration(3000)} > + )} From b330c8945d05f24eec2304db22a4d477cb76f233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 6 Oct 2023 18:43:57 +0200 Subject: [PATCH 010/701] add volume slider --- .../VideoPlayer/VideoPlayerControls.js | 15 ++--- src/components/VideoPlayer/index.js | 5 ++ src/components/VolumeButton/index.js | 61 +++++++++++++++++++ 3 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 src/components/VolumeButton/index.js diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index b1666af93c6b..f9e7dec22edd 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -6,6 +6,7 @@ import IconButton from './IconButton'; import * as Expensicons from '../Icon/Expensicons'; import ProgressBar from './ProgressBar'; import convertMillisecondsToTime from './utils'; +import VolumeButton from '../VolumeButton'; const propTypes = { // eslint-disable-next-line react/forbid-prop-types @@ -19,6 +20,8 @@ const propTypes = { enterFullScreenMode: PropTypes.func.isRequired, + updateVolume: PropTypes.func.isRequired, + isPlaying: PropTypes.bool, }; @@ -26,7 +29,7 @@ const defaultProps = { isPlaying: false, }; -function VideoPlayerControls({duration, position, updatePostiion, togglePlay, enterFullScreenMode, isPlaying}) { +function VideoPlayerControls({duration, position, updatePostiion, togglePlay, enterFullScreenMode, updateVolume, isPlaying}) { const [durationFormatted, setDurationFormatted] = React.useState('0:00'); useEffect(() => { @@ -44,7 +47,7 @@ function VideoPlayerControls({duration, position, updatePostiion, togglePlay, en height: 60, borderRadius: 10, flexDirection: 'column', - overflow: 'hidden', + overflow: 'visible', padding: 10, }} entering={FadeIn.duration(3000)} @@ -63,13 +66,7 @@ function VideoPlayerControls({duration, position, updatePostiion, togglePlay, en {durationFormatted} - + { + ref.current.setStatusAsync({volume}); + }; + return ( {(isHovered) => ( @@ -100,6 +104,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty updatePostiion={updatePostiion} enterFullScreenMode={enterFullScreenMode} isPlaying={isVideoPlaying} + updateVolume={updateVolume} /> )} diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js new file mode 100644 index 000000000000..5044d9cafd39 --- /dev/null +++ b/src/components/VolumeButton/index.js @@ -0,0 +1,61 @@ +import React, {useState} from 'react'; +import PropTypes from 'prop-types'; +import {Gesture, GestureDetector} from 'react-native-gesture-handler'; +import Animated, {useAnimatedStyle, useSharedValue} from 'react-native-reanimated'; +import {View} from 'react-native'; +import Icon from '../Icon'; +import * as Expensicons from '../Icon/Expensicons'; +import Hoverable from '../Hoverable'; + +const propTypes = { + updateVolume: PropTypes.func.isRequired, +}; + +const defaultProps = {}; + +function ProgressBar({updateVolume}) { + const [sliderHeight, setSliderHeight] = useState(1); + const progressHeight = useSharedValue(0); + + const onSliderLayout = (e) => { + setSliderHeight(e.nativeEvent.layout.height); + }; + + const pan = Gesture.Pan().onChange((event) => { + progressHeight.value = Math.min(Math.max(100 - (event.y / sliderHeight) * 100, 0), 100); + updateVolume(progressHeight.value / 100); + }); + + const progressBarStyle = useAnimatedStyle(() => ({height: `${progressHeight.value}%`})); + + return ( + + {(isHovered) => ( + + {isHovered && ( + + + + + + + + )} + + + )} + + ); +} + +ProgressBar.propTypes = propTypes; +ProgressBar.defaultProps = defaultProps; +ProgressBar.displayName = 'ProgressBar'; + +export default ProgressBar; From 784d62e121577e40b82631f06a7f2616e62749ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 9 Oct 2023 15:29:42 +0200 Subject: [PATCH 011/701] upgrade volume action button --- src/components/PlaybackContext.js | 9 +++++- src/components/VideoPlayer/IconButton.js | 28 +++++++++++-------- .../VideoPlayer/VideoPlayerControls.js | 6 ++-- src/components/VideoPlayer/index.js | 13 +++++---- src/components/VolumeButton/index.js | 28 ++++++++++++++----- 5 files changed, 56 insertions(+), 28 deletions(-) diff --git a/src/components/PlaybackContext.js b/src/components/PlaybackContext.js index c2cf91207f27..0e0332422554 100644 --- a/src/components/PlaybackContext.js +++ b/src/components/PlaybackContext.js @@ -7,11 +7,16 @@ function PlaybackContextProvider({children}) { const [currentlyPlayingURL, setCurrentlyPlayingURL] = useState(null); const [sharedElement, setSharedElement] = useState(null); const [originalParent, setOriginalParent] = useState(null); + const [volume, setVolume] = useState(0); const updateCurrentlyPlayingURL = useCallback((url) => { setCurrentlyPlayingURL(url); }, []); + const updateVolume = useCallback((newVolume) => { + setVolume(newVolume); + }, []); + const updateSharedElements = (parent, child) => { setOriginalParent(parent); setSharedElement(child); @@ -24,8 +29,10 @@ function PlaybackContextProvider({children}) { originalParent, sharedElement, updateSharedElements, + volume, + updateVolume, }), - [currentlyPlayingURL, originalParent, sharedElement, updateCurrentlyPlayingURL], + [currentlyPlayingURL, originalParent, sharedElement, updateCurrentlyPlayingURL, updateVolume, volume], ); return {children}; } diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js index d5307f557c17..badfd518bd57 100644 --- a/src/components/VideoPlayer/IconButton.js +++ b/src/components/VideoPlayer/IconButton.js @@ -3,6 +3,8 @@ import PropTypes from 'prop-types'; import PressableWithoutFeedback from '../Pressable/PressableWithoutFeedback'; import Icon from '../Icon'; import CONST from '../../CONST'; +import Hoverable from '../Hoverable'; +import Tooltip from '../Tooltip'; const propTypes = { // eslint-disable-next-line react/forbid-prop-types @@ -26,17 +28,21 @@ const defaultProps = { function IconButton({src, fill, onPress, style, accessibilityLabel}) { return ( - - - + + {(isHovered) => ( + + + + )} + ); } diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index f9e7dec22edd..3e9b81a4493a 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -20,8 +20,6 @@ const propTypes = { enterFullScreenMode: PropTypes.func.isRequired, - updateVolume: PropTypes.func.isRequired, - isPlaying: PropTypes.bool, }; @@ -29,7 +27,7 @@ const defaultProps = { isPlaying: false, }; -function VideoPlayerControls({duration, position, updatePostiion, togglePlay, enterFullScreenMode, updateVolume, isPlaying}) { +function VideoPlayerControls({duration, position, updatePostiion, togglePlay, enterFullScreenMode, isPlaying}) { const [durationFormatted, setDurationFormatted] = React.useState('0:00'); useEffect(() => { @@ -66,7 +64,7 @@ function VideoPlayerControls({duration, position, updatePostiion, togglePlay, en {durationFormatted} - + { - ref.current.setStatusAsync({volume}); + const updateVolume = (newVolume) => { + ref.current.setStatusAsync({volume: newVolume}); }; + useEffect(() => { + updateVolume(volume); + }, [volume]); + return ( {(isHovered) => ( @@ -104,7 +108,6 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty updatePostiion={updatePostiion} enterFullScreenMode={enterFullScreenMode} isPlaying={isVideoPlaying} - updateVolume={updateVolume} /> )} diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js index 5044d9cafd39..2f47e70e24b7 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VolumeButton/index.js @@ -1,29 +1,42 @@ import React, {useState} from 'react'; -import PropTypes from 'prop-types'; import {Gesture, GestureDetector} from 'react-native-gesture-handler'; import Animated, {useAnimatedStyle, useSharedValue} from 'react-native-reanimated'; import {View} from 'react-native'; +import PropTypes from 'prop-types'; import Icon from '../Icon'; import * as Expensicons from '../Icon/Expensicons'; import Hoverable from '../Hoverable'; +import {usePlaybackContext} from '../PlaybackContext'; const propTypes = { - updateVolume: PropTypes.func.isRequired, + // eslint-disable-next-line react/forbid-prop-types + style: PropTypes.objectOf(PropTypes.any).isRequired, }; const defaultProps = {}; -function ProgressBar({updateVolume}) { +function ProgressBar({style}) { + const {updateVolume, volume} = usePlaybackContext(); const [sliderHeight, setSliderHeight] = useState(1); - const progressHeight = useSharedValue(0); + const progressHeight = useSharedValue(volume * 100); const onSliderLayout = (e) => { setSliderHeight(e.nativeEvent.layout.height); }; + const getVolumeIcon = () => { + if (volume === 0) { + return Expensicons.Mute; + } + if (volume <= 0.5) { + return Expensicons.VolumeLow; + } + return Expensicons.VolumeHigh; + }; + const pan = Gesture.Pan().onChange((event) => { progressHeight.value = Math.min(Math.max(100 - (event.y / sliderHeight) * 100, 0), 100); - updateVolume(progressHeight.value / 100); + updateVolume(Math.round(progressHeight.value) / 100); }); const progressBarStyle = useAnimatedStyle(() => ({height: `${progressHeight.value}%`})); @@ -31,7 +44,7 @@ function ProgressBar({updateVolume}) { return ( {(isHovered) => ( - + {isHovered && ( @@ -44,8 +57,9 @@ function ProgressBar({updateVolume}) { )} + From 74e16b63bd1cf1c6f4a8378b0d0f95fe309a8d6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Tue, 10 Oct 2023 16:20:38 +0200 Subject: [PATCH 012/701] add basic popover menu --- assets/images/meter.svg | 3 + src/components/Icon/Expensicons.js | 2 + src/components/PopoverMenu/index.js | 1 + .../VideoPlayer/VideoPlayerControls.js | 5 +- src/components/VideoPlayer/index.js | 72 ++++++++++++++++++- 5 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 assets/images/meter.svg diff --git a/assets/images/meter.svg b/assets/images/meter.svg new file mode 100644 index 000000000000..08800fe101a8 --- /dev/null +++ b/assets/images/meter.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/Icon/Expensicons.js b/src/components/Icon/Expensicons.js index e0368a3f9c8a..20b52774281b 100644 --- a/src/components/Icon/Expensicons.js +++ b/src/components/Icon/Expensicons.js @@ -76,6 +76,7 @@ import MagnifyingGlass from '../../../assets/images/magnifying-glass.svg'; import Mail from '../../../assets/images/mail.svg'; import Megaphone from '../../../assets/images/megaphone.svg'; import Menu from '../../../assets/images/menu.svg'; +import Meter from '../../../assets/images/meter.svg'; import MoneyBag from '../../../assets/images/money-bag.svg'; import MoneyCircle from '../../../assets/images/money-circle.svg'; import Monitor from '../../../assets/images/monitor.svg'; @@ -215,6 +216,7 @@ export { MagnifyingGlass, Mail, Menu, + Meter, Megaphone, MoneyBag, MoneyCircle, diff --git a/src/components/PopoverMenu/index.js b/src/components/PopoverMenu/index.js index 4cdc7a5a4f47..1a77f41dd722 100644 --- a/src/components/PopoverMenu/index.js +++ b/src/components/PopoverMenu/index.js @@ -103,6 +103,7 @@ function PopoverMenu(props) { description={item.description} onPress={() => selectItem(menuIndex)} focused={focusedIndex === menuIndex} + shouldShowRightIcon={item.shouldShowRightIcon} /> ))} diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index 3e9b81a4493a..5d93c8fea278 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -21,13 +21,15 @@ const propTypes = { enterFullScreenMode: PropTypes.func.isRequired, isPlaying: PropTypes.bool, + + toggleCreateMenu: PropTypes.func.isRequired, }; const defaultProps = { isPlaying: false, }; -function VideoPlayerControls({duration, position, updatePostiion, togglePlay, enterFullScreenMode, isPlaying}) { +function VideoPlayerControls({duration, position, updatePostiion, togglePlay, enterFullScreenMode, isPlaying, toggleCreateMenu}) { const [durationFormatted, setDurationFormatted] = React.useState('0:00'); useEffect(() => { @@ -76,6 +78,7 @@ function VideoPlayerControls({duration, position, updatePostiion, togglePlay, en src={Expensicons.ThreeDots} fill="white" accessibilityLabel="more options" + onPress={() => toggleCreateMenu()} /> diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 0b8cf1a4d35f..1287cc7b4965 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -9,6 +9,9 @@ import FullScreenLoadingIndicator from '../FullscreenLoadingIndicator'; import {usePlaybackContext} from '../PlaybackContext'; import useWindowDimensions from '../../hooks/useWindowDimensions'; import VideoPlayerControls from './VideoPlayerControls'; +import PopoverMenu from '../PopoverMenu'; +import * as Expensicons from '../Icon/Expensicons'; +import fileDownload from '../../libs/fileDownload'; const propTypes = { url: PropTypes.string.isRequired, @@ -45,6 +48,10 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const [duration, setDuration] = React.useState(0); const [position, setPosition] = React.useState(0); + const [isPlaybackMenuActive, setIsPlaybackMenuActive] = React.useState(false); + + const [isCreateMenuActive, setIsCreateMenuActive] = React.useState(false); + const anchorRef = React.useRef(null); const ref = useRef(null); const togglePlay = () => { @@ -64,6 +71,52 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const updateVolume = (newVolume) => { ref.current.setStatusAsync({volume: newVolume}); }; + const showCreateMenu = () => { + setIsCreateMenuActive(true); + }; + const hideCreateMenu = () => { + setIsCreateMenuActive(false); + }; + const toggleCreateMenu = () => { + if (isCreateMenuActive) { + hideCreateMenu(); + } else { + showCreateMenu(); + } + }; + + const menuItems = [ + { + icon: Expensicons.Download, + text: 'Download', + onSelected: () => { + console.log('Download'); + fileDownload(url); + hideCreateMenu(); + }, + }, + { + icon: Expensicons.Meter, + text: 'Playback speed', + onSelected: () => { + console.log('Playback speed'); + setIsPlaybackMenuActive(true); + }, + shouldShowRightIcon: true, + }, + ]; + + const playbackSpeedMenuItems = [ + { + icon: Expensicons.Download, + text: 'TEST', + onSelected: () => { + console.log('Download'); + + hideCreateMenu(); + }, + }, + ]; useEffect(() => { updateVolume(volume); @@ -72,7 +125,10 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty return ( {(isHovered) => ( - + )} From 02c5c496e0d4528df12830c0af377eee69e7e021 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 12 Oct 2023 08:11:17 +0200 Subject: [PATCH 013/701] prepare frontend for backend changes --- src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js | 1 + src/components/HTMLEngineProvider/HTMLRenderers/index.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js b/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js index bba62cc4f4e0..241b0fd29495 100755 --- a/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js +++ b/src/components/HTMLEngineProvider/BaseHTMLEngineProvider.js @@ -47,6 +47,7 @@ const customHTMLElementModels = { }), 'mention-user': defaultHTMLElementModels.span.extend({tagName: 'mention-user'}), 'mention-here': defaultHTMLElementModels.span.extend({tagName: 'mention-here'}), + video: defaultHTMLElementModels.span.extend({tagName: 'video'}), }; const defaultViewProps = {style: [styles.alignItemsStart, styles.userSelectText]}; diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/index.js b/src/components/HTMLEngineProvider/HTMLRenderers/index.js index a866d86486b6..abd9b4886ef1 100644 --- a/src/components/HTMLEngineProvider/HTMLRenderers/index.js +++ b/src/components/HTMLEngineProvider/HTMLRenderers/index.js @@ -11,6 +11,7 @@ import PreRenderer from './PreRenderer'; */ export default { // Standard HTML tag renderers + video: AnchorRenderer, a: AnchorRenderer, code: CodeRenderer, img: ImageRenderer, From a84d96a0befe8f664c9380e93bfe75c3be1533e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 16 Oct 2023 14:01:57 +0200 Subject: [PATCH 014/701] fix popover position --- .../VideoPlayer/VideoPlayerControls.js | 4 ++-- src/components/VideoPlayer/index.js | 18 ++++-------------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index 5d93c8fea278..31aa86c5aba1 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -77,8 +77,8 @@ function VideoPlayerControls({duration, position, updatePostiion, togglePlay, en toggleCreateMenu()} + accessibilityLabel="More options" + onPress={(e) => toggleCreateMenu(e)} /> diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 1287cc7b4965..db648bc505ea 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -49,6 +49,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const [position, setPosition] = React.useState(0); const [isPlaybackMenuActive, setIsPlaybackMenuActive] = React.useState(false); + const [popoverAnchorPosition, setPopoverAnchorPosition] = React.useState({vertical: 0, horizontal: 0}); const [isCreateMenuActive, setIsCreateMenuActive] = React.useState(false); const anchorRef = React.useRef(null); @@ -77,10 +78,11 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const hideCreateMenu = () => { setIsCreateMenuActive(false); }; - const toggleCreateMenu = () => { + const toggleCreateMenu = (e) => { if (isCreateMenuActive) { hideCreateMenu(); } else { + setPopoverAnchorPosition({vertical: e.nativeEvent.pageY, horizontal: e.nativeEvent.pageX}); showCreateMenu(); } }; @@ -106,18 +108,6 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty }, ]; - const playbackSpeedMenuItems = [ - { - icon: Expensicons.Download, - text: 'TEST', - onSelected: () => { - console.log('Download'); - - hideCreateMenu(); - }, - }, - ]; - useEffect(() => { updateVolume(volume); }, [volume]); @@ -172,7 +162,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty onClose={hideCreateMenu} onItemSelected={hideCreateMenu} isVisible={isCreateMenuActive} - anchorPosition={{horizontal: 0, vertical: 0}} + anchorPosition={popoverAnchorPosition} fromSidebarMediumScreen={!isSmallScreenWidth} menuItems={menuItems} withoutOverlay From a059c2de5783ca212780600fcd98bb20859a3553 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 19 Oct 2023 18:24:39 +0200 Subject: [PATCH 015/701] add basic changes for shared element logic --- .../AttachmentViewVideo/index.js | 28 +-- src/components/PlaybackContext.js | 27 ++- src/components/VideoPlayer/IconButton.js | 3 +- .../VideoPlayer/VideoPlayerControls.js | 16 +- src/components/VideoPlayer/index.js | 166 ++++++++++-------- src/components/VideoPlayerPreview/index.js | 37 +--- 6 files changed, 135 insertions(+), 142 deletions(-) diff --git a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js index 14e3f2c2d589..d7182cf45320 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js @@ -12,38 +12,16 @@ const propTypes = { }; function AttachmentViewVideo({source}) { - const {currentlyPlayingURL, originalParent, sharedElement} = usePlaybackContext(); + const {currentlyPlayingURL} = usePlaybackContext(); const {isSmallScreenWidth} = useWindowDimensions(); - const videoPlayerParentRef = useRef(null); const shouldUseSharedElementTransition = !isSmallScreenWidth && currentlyPlayingURL === source; - // shared element transition logic for video player - useEffect(() => { - if (!shouldUseSharedElementTransition) { - return; - } - const ref = videoPlayerParentRef.current; - if (currentlyPlayingURL === source) { - ref.appendChild(sharedElement); - } - return () => { - if (!ref.childNodes[0]) { - return; - } - originalParent.appendChild(sharedElement); - }; - }, [currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedElementTransition, source]); - - return shouldUseSharedElementTransition ? ( - - ) : ( + return ( ); } diff --git a/src/components/PlaybackContext.js b/src/components/PlaybackContext.js index 0e0332422554..2fb9d9de3d29 100644 --- a/src/components/PlaybackContext.js +++ b/src/components/PlaybackContext.js @@ -1,4 +1,4 @@ -import React, {useMemo, useState, useCallback} from 'react'; +import React, {useMemo, useState, useCallback, useRef} from 'react'; import PropTypes from 'prop-types'; const PlaybackContext = React.createContext(null); @@ -9,11 +9,16 @@ function PlaybackContextProvider({children}) { const [originalParent, setOriginalParent] = useState(null); const [volume, setVolume] = useState(0); + const [isPlaying, setIsPlaying] = useState(false); + + const currentVideoPLayerRef = useRef(null); + const updateCurrentlyPlayingURL = useCallback((url) => { setCurrentlyPlayingURL(url); }, []); const updateVolume = useCallback((newVolume) => { + currentVideoPLayerRef.current.setStatusAsync({volume: newVolume}); setVolume(newVolume); }, []); @@ -22,6 +27,19 @@ function PlaybackContextProvider({children}) { setSharedElement(child); }; + const togglePlay = useCallback(() => { + currentVideoPLayerRef.current.setStatusAsync({shouldPlay: !isPlaying}); + setIsPlaying(!isPlaying); + }, [isPlaying]); + + const enterFullScreenMode = () => { + currentVideoPLayerRef.current.presentFullscreenPlayer(); + }; + + const updatePostiion = (newPosition) => { + currentVideoPLayerRef.current.setStatusAsync({positionMillis: newPosition}); + }; + const contextValue = useMemo( () => ({ updateCurrentlyPlayingURL, @@ -31,8 +49,13 @@ function PlaybackContextProvider({children}) { updateSharedElements, volume, updateVolume, + currentVideoPLayerRef, + togglePlay, + isPlaying, + enterFullScreenMode, + updatePostiion, }), - [currentlyPlayingURL, originalParent, sharedElement, updateCurrentlyPlayingURL, updateVolume, volume], + [currentlyPlayingURL, isPlaying, originalParent, sharedElement, togglePlay, updateCurrentlyPlayingURL, updateVolume, volume], ); return {children}; } diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js index badfd518bd57..4761d5666d18 100644 --- a/src/components/VideoPlayer/IconButton.js +++ b/src/components/VideoPlayer/IconButton.js @@ -4,7 +4,6 @@ import PressableWithoutFeedback from '../Pressable/PressableWithoutFeedback'; import Icon from '../Icon'; import CONST from '../../CONST'; import Hoverable from '../Hoverable'; -import Tooltip from '../Tooltip'; const propTypes = { // eslint-disable-next-line react/forbid-prop-types @@ -33,7 +32,7 @@ function IconButton({src, fill, onPress, style, accessibilityLabel}) { { diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index db648bc505ea..c9b7bd187487 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -4,8 +4,6 @@ import PropTypes from 'prop-types'; import {Video, ResizeMode} from 'expo-av'; import _ from 'underscore'; import styles from '../../styles/styles'; -import Hoverable from '../Hoverable'; -import FullScreenLoadingIndicator from '../FullscreenLoadingIndicator'; import {usePlaybackContext} from '../PlaybackContext'; import useWindowDimensions from '../../hooks/useWindowDimensions'; import VideoPlayerControls from './VideoPlayerControls'; @@ -29,6 +27,8 @@ const propTypes = { // eslint-disable-next-line react/forbid-prop-types videoStyle: PropTypes.arrayOf(PropTypes.object), + + shouldUseSharedVideoElement: PropTypes.bool, }; const defaultProps = { @@ -38,13 +38,13 @@ const defaultProps = { isLooping: false, style: [styles.w100, styles.h100], videoStyle: [styles.w100, styles.h100], + shouldUseSharedVideoElement: false, }; -function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle}) { +function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement}) { const {isSmallScreenWidth} = useWindowDimensions(); - const {updateCurrentlyPlayingURL, volume} = usePlaybackContext(); + const {updateCurrentlyPlayingURL, currentlyPlayingURL, updateSharedElements, currentVideoPLayerRef, sharedElement, originalParent} = usePlaybackContext(); const [isVideoPlaying, setIsVideoPlaying] = React.useState(false); - const [isVideoLoading, setIsVideoLoading] = React.useState(true); const [duration, setDuration] = React.useState(0); const [position, setPosition] = React.useState(0); @@ -52,8 +52,11 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const [popoverAnchorPosition, setPopoverAnchorPosition] = React.useState({vertical: 0, horizontal: 0}); const [isCreateMenuActive, setIsCreateMenuActive] = React.useState(false); - const anchorRef = React.useRef(null); const ref = useRef(null); + currentVideoPLayerRef.current = ref.current; + + const videoPlayerParentRef = useRef(null); + const videoPlayerRef = useRef(null); const togglePlay = () => { updateCurrentlyPlayingURL(url); @@ -61,17 +64,6 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty setIsVideoPlaying(!isVideoPlaying); }; - const updatePostiion = (newPosition) => { - ref.current.setStatusAsync({positionMillis: newPosition}); - }; - - const enterFullScreenMode = () => { - ref.current.presentFullscreenPlayer(); - }; - - const updateVolume = (newVolume) => { - ref.current.setStatusAsync({volume: newVolume}); - }; const showCreateMenu = () => { setIsCreateMenuActive(true); }; @@ -108,69 +100,99 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty }, ]; + // shared element transition logic for video player useEffect(() => { - updateVolume(volume); - }, [volume]); + if (!shouldUseSharedVideoElement) { + return; + } + const reff = videoPlayerParentRef.current; + if (currentlyPlayingURL === url) { + reff.appendChild(sharedElement); + } + return () => { + if (!reff.childNodes[0]) { + return; + } + originalParent.appendChild(sharedElement); + }; + }, [currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); + + useEffect(() => { + if (shouldUseSharedVideoElement && url !== currentlyPlayingURL) { + return; + } + updateSharedElements(videoPlayerParentRef.current, videoPlayerRef.current); + }, [currentlyPlayingURL, shouldUseSharedVideoElement, updateSharedElements, url]); return ( - - {(isHovered) => ( + + {shouldUseSharedVideoElement ? ( + + ) : ( { + if (!el) { + return; + } + videoPlayerParentRef.current = el; + if (el.childNodes[0]) { + videoPlayerRef.current = el.childNodes[0]; + } + }} > - )} - + + {/* {isVideoLoading && } */} + + {/* {((!isVideoLoading && (isHovered || isSmallScreenWidth)) || isCreateMenuActive) && ( */} + + {/* )} */} + + + ); } diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index f8d642d1509c..1ec695eff253 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -62,13 +62,6 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, setIsThumbnail(false); }, [currentlyPlayingURL, videoUrl]); - useEffect(() => { - if (isThumbnail || videoUrl !== currentlyPlayingURL) { - return; - } - updateSharedElements(videoPlayerParentRef.current, videoPlayerRef.current); - }, [currentlyPlayingURL, isThumbnail, updateSharedElements, videoUrl]); - return ( {isSmallScreenWidth || isThumbnail ? ( @@ -79,28 +72,14 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, /> ) : ( <> - { - if (!el) { - return; - } - videoPlayerParentRef.current = el; - if (el.childNodes[0]) { - videoPlayerRef.current = el.childNodes[0]; - } - }} - style={styles.flex1} - > - - - - + + Date: Thu, 19 Oct 2023 19:50:28 +0200 Subject: [PATCH 016/701] fix bugs after logic change --- .../AttachmentViewVideo/index.js | 4 +- src/components/PlaybackContext.js | 30 +++++++++++++-- .../VideoPlayer/VideoPlayerControls.js | 19 ++++++++-- src/components/VideoPlayer/index.js | 38 +++++++++---------- src/components/VideoPlayerPreview/index.js | 6 +-- 5 files changed, 64 insertions(+), 33 deletions(-) diff --git a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js index d7182cf45320..ee390593a79d 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js @@ -1,6 +1,4 @@ -import React, {memo, useEffect, useRef} from 'react'; -import {View} from 'react-native'; -import styles from '../../../../styles/styles'; +import React, {memo} from 'react'; import VideoPlayer from '../../../VideoPlayer'; import withLocalize, {withLocalizePropTypes} from '../../../withLocalize'; import compose from '../../../../libs/compose'; diff --git a/src/components/PlaybackContext.js b/src/components/PlaybackContext.js index 2fb9d9de3d29..aea9d62f9ae5 100644 --- a/src/components/PlaybackContext.js +++ b/src/components/PlaybackContext.js @@ -1,4 +1,4 @@ -import React, {useMemo, useState, useCallback, useRef} from 'react'; +import React, {useMemo, useState, useCallback, useRef, useEffect} from 'react'; import PropTypes from 'prop-types'; const PlaybackContext = React.createContext(null); @@ -13,10 +13,26 @@ function PlaybackContextProvider({children}) { const currentVideoPLayerRef = useRef(null); - const updateCurrentlyPlayingURL = useCallback((url) => { - setCurrentlyPlayingURL(url); + const pauseVideo = useCallback(() => { + currentVideoPLayerRef.current.setStatusAsync({shouldPlay: false}); + setIsPlaying(false); }, []); + const playVideo = useCallback(() => { + currentVideoPLayerRef.current.setStatusAsync({shouldPlay: true}); + setIsPlaying(true); + }, []); + + const updateCurrentlyPlayingURL = useCallback( + (url) => { + if (currentlyPlayingURL && url !== currentlyPlayingURL) { + pauseVideo(); + } + setCurrentlyPlayingURL(url); + }, + [currentlyPlayingURL, pauseVideo], + ); + const updateVolume = useCallback((newVolume) => { currentVideoPLayerRef.current.setStatusAsync({volume: newVolume}); setVolume(newVolume); @@ -40,6 +56,14 @@ function PlaybackContextProvider({children}) { currentVideoPLayerRef.current.setStatusAsync({positionMillis: newPosition}); }; + useEffect(() => { + if (currentVideoPLayerRef.current && !isPlaying) { + playVideo(); + } + return () => {}; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currentVideoPLayerRef.current, playVideo]); + const contextValue = useMemo( () => ({ updateCurrentlyPlayingURL, diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index ce1159a4e267..0fff0f0b944f 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -16,14 +16,19 @@ const propTypes = { position: PropTypes.number.isRequired, toggleCreateMenu: PropTypes.func.isRequired, + + url: PropTypes.string.isRequired, }; const defaultProps = {}; -function VideoPlayerControls({duration, position, toggleCreateMenu}) { - const {togglePlay, isPlaying, updatePostiion, enterFullScreenMode} = usePlaybackContext(); +function VideoPlayerControls({duration, position, toggleCreateMenu, url}) { + const {togglePlay, isPlaying, updatePostiion, enterFullScreenMode, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const [durationFormatted, setDurationFormatted] = React.useState('0:00'); + const isCurrentlySet = currentlyPlayingURL === url; + const isCurrentlyPlaying = isCurrentlySet && isPlaying; + useEffect(() => { setDurationFormatted(convertMillisecondsToTime(duration)); }, [duration]); @@ -48,10 +53,16 @@ function VideoPlayerControls({duration, position, toggleCreateMenu}) { { + if (!isCurrentlySet) { + updateCurrentlyPlayingURL(url); + } else { + togglePlay(); + } + }} /> {convertMillisecondsToTime(position)} / diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index c9b7bd187487..a6cc72fc7481 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -43,26 +43,23 @@ const defaultProps = { function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement}) { const {isSmallScreenWidth} = useWindowDimensions(); - const {updateCurrentlyPlayingURL, currentlyPlayingURL, updateSharedElements, currentVideoPLayerRef, sharedElement, originalParent} = usePlaybackContext(); - const [isVideoPlaying, setIsVideoPlaying] = React.useState(false); + const {currentlyPlayingURL, updateSharedElements, currentVideoPLayerRef, sharedElement, originalParent} = usePlaybackContext(); const [duration, setDuration] = React.useState(0); const [position, setPosition] = React.useState(0); + const [isVideoLoading, setIsVideoLoading] = React.useState(false); const [isPlaybackMenuActive, setIsPlaybackMenuActive] = React.useState(false); const [popoverAnchorPosition, setPopoverAnchorPosition] = React.useState({vertical: 0, horizontal: 0}); const [isCreateMenuActive, setIsCreateMenuActive] = React.useState(false); const ref = useRef(null); - currentVideoPLayerRef.current = ref.current; + if (currentlyPlayingURL === url && !shouldUseSharedVideoElement) { + currentVideoPLayerRef.current = ref.current; + } const videoPlayerParentRef = useRef(null); const videoPlayerRef = useRef(null); - - const togglePlay = () => { - updateCurrentlyPlayingURL(url); - ref.current.setStatusAsync({shouldPlay: !isVideoPlaying}); - setIsVideoPlaying(!isVideoPlaying); - }; + const testRef = useRef(null); const showCreateMenu = () => { setIsCreateMenuActive(true); @@ -100,13 +97,22 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty }, ]; + useEffect(() => { + if (shouldUseSharedVideoElement || url !== currentlyPlayingURL) { + return; + } + console.log('update shared elements', videoPlayerRef.current); + updateSharedElements(videoPlayerParentRef.current, videoPlayerRef.current); + }, [currentlyPlayingURL, shouldUseSharedVideoElement, updateSharedElements, url]); + // shared element transition logic for video player useEffect(() => { if (!shouldUseSharedVideoElement) { return; } - const reff = videoPlayerParentRef.current; + const reff = testRef.current; if (currentlyPlayingURL === url) { + console.log('set shared element', videoPlayerRef.current); reff.appendChild(sharedElement); } return () => { @@ -117,18 +123,11 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty }; }, [currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); - useEffect(() => { - if (shouldUseSharedVideoElement && url !== currentlyPlayingURL) { - return; - } - updateSharedElements(videoPlayerParentRef.current, videoPlayerRef.current); - }, [currentlyPlayingURL, shouldUseSharedVideoElement, updateSharedElements, url]); - return ( {shouldUseSharedVideoElement ? ( ) : ( @@ -150,7 +149,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty style={style} videoStyle={videoStyle} source={{ - uri: 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', + uri: url || 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', }} shouldPlay={shouldPlay} useNativeControls={false} @@ -180,6 +179,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty duration={duration} position={position} toggleCreateMenu={toggleCreateMenu} + url={url} /> {/* )} */} diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index 1ec695eff253..b5a4440aedd5 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -1,4 +1,4 @@ -import React, {useState, useRef, useMemo, useEffect} from 'react'; +import React, {useState, useMemo, useEffect} from 'react'; import {View} from 'react-native'; import PropTypes from 'prop-types'; import VideoPlayer from '../VideoPlayer'; @@ -28,12 +28,10 @@ const defaultProps = { }; function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, showModal}) { - const {currentlyPlayingURL, updateCurrentlyPlayingURL, updateSharedElements} = usePlaybackContext(); + const {currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const {isSmallScreenWidth} = useWindowDimensions(); const [isThumbnail, setIsThumbnail] = useState(true); const [measuredDimenstions, setMeasuredDimenstions] = useState(null); - const videoPlayerRef = useRef(null); - const videoPlayerParentRef = useRef(null); const videoStyles = useMemo(() => { const {width, height} = measuredDimenstions || videoDimensions; From 1612192cfad80353bfa1650364e5d7480bf8beaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 20 Oct 2023 11:11:35 +0200 Subject: [PATCH 017/701] add structure changes --- src/components/PlaybackContext.js | 67 ++++++++++++++++++++--------- src/components/VideoPlayer/index.js | 49 ++++++++++----------- 2 files changed, 71 insertions(+), 45 deletions(-) diff --git a/src/components/PlaybackContext.js b/src/components/PlaybackContext.js index aea9d62f9ae5..7c8318b2f519 100644 --- a/src/components/PlaybackContext.js +++ b/src/components/PlaybackContext.js @@ -1,4 +1,4 @@ -import React, {useMemo, useState, useCallback, useRef, useEffect} from 'react'; +import React, {useMemo, useState, useCallback, useEffect} from 'react'; import PropTypes from 'prop-types'; const PlaybackContext = React.createContext(null); @@ -11,17 +11,17 @@ function PlaybackContextProvider({children}) { const [isPlaying, setIsPlaying] = useState(false); - const currentVideoPLayerRef = useRef(null); + const [currentVideoPlayerRef, setCurrentVideoPlayerRef] = useState(null); const pauseVideo = useCallback(() => { - currentVideoPLayerRef.current.setStatusAsync({shouldPlay: false}); + currentVideoPlayerRef.setStatusAsync({shouldPlay: false}); setIsPlaying(false); - }, []); + }, [currentVideoPlayerRef]); const playVideo = useCallback(() => { - currentVideoPLayerRef.current.setStatusAsync({shouldPlay: true}); + currentVideoPlayerRef.setStatusAsync({shouldPlay: true}); setIsPlaying(true); - }, []); + }, [currentVideoPlayerRef]); const updateCurrentlyPlayingURL = useCallback( (url) => { @@ -33,36 +33,47 @@ function PlaybackContextProvider({children}) { [currentlyPlayingURL, pauseVideo], ); - const updateVolume = useCallback((newVolume) => { - currentVideoPLayerRef.current.setStatusAsync({volume: newVolume}); - setVolume(newVolume); + const updateCurrentVideoPlayerRef = useCallback((ref) => { + setCurrentVideoPlayerRef(ref); }, []); + const updateVolume = useCallback( + (newVolume) => { + currentVideoPlayerRef.setStatusAsync({volume: newVolume}); + setVolume(newVolume); + }, + [currentVideoPlayerRef], + ); + const updateSharedElements = (parent, child) => { setOriginalParent(parent); setSharedElement(child); }; const togglePlay = useCallback(() => { - currentVideoPLayerRef.current.setStatusAsync({shouldPlay: !isPlaying}); + currentVideoPlayerRef.setStatusAsync({shouldPlay: !isPlaying}); setIsPlaying(!isPlaying); - }, [isPlaying]); + }, [currentVideoPlayerRef, isPlaying]); - const enterFullScreenMode = () => { - currentVideoPLayerRef.current.presentFullscreenPlayer(); - }; + const enterFullScreenMode = useCallback(() => { + currentVideoPlayerRef.presentFullscreenPlayer(); + }, [currentVideoPlayerRef]); - const updatePostiion = (newPosition) => { - currentVideoPLayerRef.current.setStatusAsync({positionMillis: newPosition}); - }; + const updatePostiion = useCallback( + (newPosition) => { + currentVideoPlayerRef.setStatusAsync({positionMillis: newPosition}); + }, + [currentVideoPlayerRef], + ); + // actions after videoRef is set useEffect(() => { - if (currentVideoPLayerRef.current && !isPlaying) { + if (currentVideoPlayerRef && !isPlaying) { playVideo(); } return () => {}; // eslint-disable-next-line react-hooks/exhaustive-deps - }, [currentVideoPLayerRef.current, playVideo]); + }, [currentVideoPlayerRef, playVideo]); const contextValue = useMemo( () => ({ @@ -73,13 +84,27 @@ function PlaybackContextProvider({children}) { updateSharedElements, volume, updateVolume, - currentVideoPLayerRef, togglePlay, isPlaying, enterFullScreenMode, updatePostiion, + currentVideoPlayerRef, + updateCurrentVideoPlayerRef, }), - [currentlyPlayingURL, isPlaying, originalParent, sharedElement, togglePlay, updateCurrentlyPlayingURL, updateVolume, volume], + [ + currentVideoPlayerRef, + currentlyPlayingURL, + enterFullScreenMode, + isPlaying, + originalParent, + sharedElement, + togglePlay, + updateCurrentVideoPlayerRef, + updateCurrentlyPlayingURL, + updatePostiion, + updateVolume, + volume, + ], ); return {children}; } diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index a6cc72fc7481..4bd1c3ce644a 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -1,4 +1,4 @@ -import React, {useEffect, useRef} from 'react'; +import React, {useEffect, useRef, useState} from 'react'; import {View} from 'react-native'; import PropTypes from 'prop-types'; import {Video, ResizeMode} from 'expo-av'; @@ -10,6 +10,7 @@ import VideoPlayerControls from './VideoPlayerControls'; import PopoverMenu from '../PopoverMenu'; import * as Expensicons from '../Icon/Expensicons'; import fileDownload from '../../libs/fileDownload'; +import FullScreenLoadingIndicator from '../FullscreenLoadingIndicator'; const propTypes = { url: PropTypes.string.isRequired, @@ -43,19 +44,15 @@ const defaultProps = { function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement}) { const {isSmallScreenWidth} = useWindowDimensions(); - const {currentlyPlayingURL, updateSharedElements, currentVideoPLayerRef, sharedElement, originalParent} = usePlaybackContext(); - const [duration, setDuration] = React.useState(0); - const [position, setPosition] = React.useState(0); - const [isVideoLoading, setIsVideoLoading] = React.useState(false); + const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, updateCurrentVideoPlayerRef} = usePlaybackContext(); + const [duration, setDuration] = useState(0); + const [position, setPosition] = useState(0); + const [isVideoLoading, setIsVideoLoading] = React.useState(true); - const [isPlaybackMenuActive, setIsPlaybackMenuActive] = React.useState(false); - const [popoverAnchorPosition, setPopoverAnchorPosition] = React.useState({vertical: 0, horizontal: 0}); + const [popoverAnchorPosition, setPopoverAnchorPosition] = useState({vertical: 0, horizontal: 0}); - const [isCreateMenuActive, setIsCreateMenuActive] = React.useState(false); + const [isCreateMenuActive, setIsCreateMenuActive] = useState(false); const ref = useRef(null); - if (currentlyPlayingURL === url && !shouldUseSharedVideoElement) { - currentVideoPLayerRef.current = ref.current; - } const videoPlayerParentRef = useRef(null); const videoPlayerRef = useRef(null); @@ -91,7 +88,6 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty text: 'Playback speed', onSelected: () => { console.log('Playback speed'); - setIsPlaybackMenuActive(true); }, shouldShowRightIcon: true, }, @@ -101,7 +97,6 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty if (shouldUseSharedVideoElement || url !== currentlyPlayingURL) { return; } - console.log('update shared elements', videoPlayerRef.current); updateSharedElements(videoPlayerParentRef.current, videoPlayerRef.current); }, [currentlyPlayingURL, shouldUseSharedVideoElement, updateSharedElements, url]); @@ -112,7 +107,6 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty } const reff = testRef.current; if (currentlyPlayingURL === url) { - console.log('set shared element', videoPlayerRef.current); reff.appendChild(sharedElement); } return () => { @@ -123,6 +117,13 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty }; }, [currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); + useEffect(() => { + if (currentlyPlayingURL === url && !shouldUseSharedVideoElement) { + updateCurrentVideoPlayerRef(ref.current); + } + return () => {}; + }, [currentlyPlayingURL, shouldUseSharedVideoElement, updateCurrentVideoPlayerRef, url]); + return ( {shouldUseSharedVideoElement ? ( @@ -172,16 +173,16 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty )} - {/* {isVideoLoading && } */} - - {/* {((!isVideoLoading && (isHovered || isSmallScreenWidth)) || isCreateMenuActive) && ( */} - - {/* )} */} + {isVideoLoading ? ( + + ) : ( + + )} Date: Fri, 20 Oct 2023 16:17:04 +0200 Subject: [PATCH 018/701] reduced rerenders while changing volume --- src/App.js | 4 +- .../AttachmentViewVideo/index.js | 2 +- .../Attachments/AttachmentView/index.js | 2 +- .../VideoPlayer/VideoPlayerControls.js | 2 +- src/components/VideoPlayer/index.js | 19 +++----- .../PlaybackContext.js | 43 ++++++------------- .../VideoPlayerContexts/VolumeContext.js | 37 ++++++++++++++++ src/components/VideoPlayerPreview/index.js | 2 +- src/components/VolumeButton/index.js | 4 +- 9 files changed, 66 insertions(+), 49 deletions(-) rename src/components/{ => VideoPlayerContexts}/PlaybackContext.js (69%) create mode 100644 src/components/VideoPlayerContexts/VolumeContext.js diff --git a/src/App.js b/src/App.js index 2e32653f122b..3b8d4e6604b3 100644 --- a/src/App.js +++ b/src/App.js @@ -26,8 +26,9 @@ import {ReportAttachmentsProvider} from './pages/home/report/ReportAttachmentsCo import * as Session from './libs/actions/Session'; import useDefaultDragAndDrop from './hooks/useDefaultDragAndDrop'; import OnyxUpdateManager from './libs/actions/OnyxUpdateManager'; -import {PlaybackContextProvider} from './components/PlaybackContext'; +import {PlaybackContextProvider} from './components/VideoPlayerContexts/PlaybackContext'; import {SidebarNavigationContextProvider} from './pages/home/sidebar/SidebarNavigationContext'; +import {VolumeContextProvider} from './components/VideoPlayerContexts/VolumeContext'; // For easier debugging and development, when we are in web we expose Onyx to the window, so you can more easily set data into Onyx if (window && Environment.isDevelopment()) { @@ -68,6 +69,7 @@ function App() { ThemeStylesProvider, PlaybackContextProvider, SidebarNavigationContextProvider, + VolumeContextProvider, ]} > diff --git a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js index ee390593a79d..3b34045b4a51 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js @@ -3,7 +3,7 @@ import VideoPlayer from '../../../VideoPlayer'; import withLocalize, {withLocalizePropTypes} from '../../../withLocalize'; import compose from '../../../../libs/compose'; import useWindowDimensions from '../../../../hooks/useWindowDimensions'; -import {usePlaybackContext} from '../../../PlaybackContext'; +import {usePlaybackContext} from '../../../VideoPlayerContexts/PlaybackContext'; const propTypes = { ...withLocalizePropTypes, diff --git a/src/components/Attachments/AttachmentView/index.js b/src/components/Attachments/AttachmentView/index.js index 8607411c85dc..84fa6cbb65ca 100755 --- a/src/components/Attachments/AttachmentView/index.js +++ b/src/components/Attachments/AttachmentView/index.js @@ -22,7 +22,7 @@ import {attachmentViewPropTypes, attachmentViewDefaultProps} from './propTypes'; import * as TransactionUtils from '../../../libs/TransactionUtils'; import DistanceEReceipt from '../../DistanceEReceipt'; import useNetwork from '../../../hooks/useNetwork'; -import {usePlaybackContext} from '../../PlaybackContext'; +import {usePlaybackContext} from '../../VideoPlayerContexts/PlaybackContext'; import ONYXKEYS from '../../../ONYXKEYS'; import EReceipt from '../../EReceipt'; diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index 0fff0f0b944f..64f44dc149b6 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -7,7 +7,7 @@ import * as Expensicons from '../Icon/Expensicons'; import ProgressBar from './ProgressBar'; import convertMillisecondsToTime from './utils'; import VolumeButton from '../VolumeButton'; -import {usePlaybackContext} from '../PlaybackContext'; +import {usePlaybackContext} from '../VideoPlayerContexts/PlaybackContext'; const propTypes = { // eslint-disable-next-line react/forbid-prop-types diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 4bd1c3ce644a..fc416b23486f 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -4,13 +4,12 @@ import PropTypes from 'prop-types'; import {Video, ResizeMode} from 'expo-av'; import _ from 'underscore'; import styles from '../../styles/styles'; -import {usePlaybackContext} from '../PlaybackContext'; +import {usePlaybackContext} from '../VideoPlayerContexts/PlaybackContext'; import useWindowDimensions from '../../hooks/useWindowDimensions'; import VideoPlayerControls from './VideoPlayerControls'; import PopoverMenu from '../PopoverMenu'; import * as Expensicons from '../Icon/Expensicons'; import fileDownload from '../../libs/fileDownload'; -import FullScreenLoadingIndicator from '../FullscreenLoadingIndicator'; const propTypes = { url: PropTypes.string.isRequired, @@ -173,16 +172,12 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty )} - {isVideoLoading ? ( - - ) : ( - - )} + { - currentVideoPlayerRef.setStatusAsync({shouldPlay: false}); + currentVideoPlayerRef.current.setStatusAsync({shouldPlay: false}); setIsPlaying(false); }, [currentVideoPlayerRef]); const playVideo = useCallback(() => { - currentVideoPlayerRef.setStatusAsync({shouldPlay: true}); + currentVideoPlayerRef.current.setStatusAsync({shouldPlay: true}); setIsPlaying(true); }, [currentVideoPlayerRef]); @@ -33,16 +32,12 @@ function PlaybackContextProvider({children}) { [currentlyPlayingURL, pauseVideo], ); - const updateCurrentVideoPlayerRef = useCallback((ref) => { - setCurrentVideoPlayerRef(ref); - }, []); - - const updateVolume = useCallback( - (newVolume) => { - currentVideoPlayerRef.setStatusAsync({volume: newVolume}); - setVolume(newVolume); + const updateCurrentVideoPlayerRef = useCallback( + (ref) => { + currentVideoPlayerRef.current = ref; + playVideo(); }, - [currentVideoPlayerRef], + [playVideo], ); const updateSharedElements = (parent, child) => { @@ -51,30 +46,21 @@ function PlaybackContextProvider({children}) { }; const togglePlay = useCallback(() => { - currentVideoPlayerRef.setStatusAsync({shouldPlay: !isPlaying}); + currentVideoPlayerRef.current.setStatusAsync({shouldPlay: !isPlaying}); setIsPlaying(!isPlaying); }, [currentVideoPlayerRef, isPlaying]); const enterFullScreenMode = useCallback(() => { - currentVideoPlayerRef.presentFullscreenPlayer(); + currentVideoPlayerRef.current.presentFullscreenPlayer(); }, [currentVideoPlayerRef]); const updatePostiion = useCallback( (newPosition) => { - currentVideoPlayerRef.setStatusAsync({positionMillis: newPosition}); + currentVideoPlayerRef.current.setStatusAsync({positionMillis: newPosition}); }, [currentVideoPlayerRef], ); - // actions after videoRef is set - useEffect(() => { - if (currentVideoPlayerRef && !isPlaying) { - playVideo(); - } - return () => {}; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [currentVideoPlayerRef, playVideo]); - const contextValue = useMemo( () => ({ updateCurrentlyPlayingURL, @@ -82,8 +68,7 @@ function PlaybackContextProvider({children}) { originalParent, sharedElement, updateSharedElements, - volume, - updateVolume, + togglePlay, isPlaying, enterFullScreenMode, @@ -102,8 +87,6 @@ function PlaybackContextProvider({children}) { updateCurrentVideoPlayerRef, updateCurrentlyPlayingURL, updatePostiion, - updateVolume, - volume, ], ); return {children}; diff --git a/src/components/VideoPlayerContexts/VolumeContext.js b/src/components/VideoPlayerContexts/VolumeContext.js new file mode 100644 index 000000000000..6ca9149c46e5 --- /dev/null +++ b/src/components/VideoPlayerContexts/VolumeContext.js @@ -0,0 +1,37 @@ +import React, {useMemo, useState, useCallback} from 'react'; +import PropTypes from 'prop-types'; +import {usePlaybackContext} from './PlaybackContext'; + +const VolumeContext = React.createContext(null); + +function VolumeContextProvider({children}) { + const {currentVideoPlayerRef} = usePlaybackContext(); + const [volume, setVolume] = useState(0); + + const updateVolume = useCallback( + (newVolume) => { + currentVideoPlayerRef.current.setStatusAsync({volume: newVolume}); + setVolume(newVolume); + }, + [currentVideoPlayerRef], + ); + + const contextValue = useMemo(() => ({updateVolume, volume}), [updateVolume, volume]); + return {children}; +} + +function useVolumeContext() { + const context = React.useContext(VolumeContext); + if (context === undefined) { + throw new Error('useVolumeContext must be used within a PlaybackContextProvider'); + } + return context; +} + +VolumeContextProvider.displayName = 'EnvironmentProvider'; +VolumeContextProvider.propTypes = { + /** Actual content wrapped by this component */ + children: PropTypes.node.isRequired, +}; + +export {VolumeContextProvider, useVolumeContext}; diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index b5a4440aedd5..91108a219927 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -5,7 +5,7 @@ import VideoPlayer from '../VideoPlayer'; import styles from '../../styles/styles'; import VideoPlayerThumbnail from './VideoPlayerThumbnail'; import useWindowDimensions from '../../hooks/useWindowDimensions'; -import {usePlaybackContext} from '../PlaybackContext'; +import {usePlaybackContext} from '../VideoPlayerContexts/PlaybackContext'; import IconButton from '../VideoPlayer/IconButton'; import * as Expensicons from '../Icon/Expensicons'; diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js index 2f47e70e24b7..063c81412128 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VolumeButton/index.js @@ -6,7 +6,7 @@ import PropTypes from 'prop-types'; import Icon from '../Icon'; import * as Expensicons from '../Icon/Expensicons'; import Hoverable from '../Hoverable'; -import {usePlaybackContext} from '../PlaybackContext'; +import {useVolumeContext} from '../VideoPlayerContexts/VolumeContext'; const propTypes = { // eslint-disable-next-line react/forbid-prop-types @@ -16,7 +16,7 @@ const propTypes = { const defaultProps = {}; function ProgressBar({style}) { - const {updateVolume, volume} = usePlaybackContext(); + const {updateVolume, volume} = useVolumeContext(); const [sliderHeight, setSliderHeight] = useState(1); const progressHeight = useSharedValue(volume * 100); From a38e3494c6613d91e00be80c3c9cab4c9c71e41b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 20 Oct 2023 16:44:40 +0200 Subject: [PATCH 019/701] fix volume slider --- src/components/VideoPlayer/index.js | 2 ++ src/components/VideoPlayerContexts/VolumeContext.js | 9 +++++---- src/components/VolumeButton/index.js | 12 ++++++------ 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index fc416b23486f..8fa087556650 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -72,6 +72,8 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty } }; + console.log('XXX'); + const menuItems = [ { icon: Expensicons.Download, diff --git a/src/components/VideoPlayerContexts/VolumeContext.js b/src/components/VideoPlayerContexts/VolumeContext.js index 6ca9149c46e5..8a8843f15343 100644 --- a/src/components/VideoPlayerContexts/VolumeContext.js +++ b/src/components/VideoPlayerContexts/VolumeContext.js @@ -1,19 +1,20 @@ -import React, {useMemo, useState, useCallback} from 'react'; +import React, {useMemo, useCallback} from 'react'; import PropTypes from 'prop-types'; +import {useSharedValue} from 'react-native-reanimated'; import {usePlaybackContext} from './PlaybackContext'; const VolumeContext = React.createContext(null); function VolumeContextProvider({children}) { const {currentVideoPlayerRef} = usePlaybackContext(); - const [volume, setVolume] = useState(0); + const volume = useSharedValue(0); const updateVolume = useCallback( (newVolume) => { currentVideoPlayerRef.current.setStatusAsync({volume: newVolume}); - setVolume(newVolume); + volume.value = newVolume; }, - [currentVideoPlayerRef], + [currentVideoPlayerRef, volume], ); const contextValue = useMemo(() => ({updateVolume, volume}), [updateVolume, volume]); diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js index 063c81412128..c6e643e6eb0e 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VolumeButton/index.js @@ -18,28 +18,28 @@ const defaultProps = {}; function ProgressBar({style}) { const {updateVolume, volume} = useVolumeContext(); const [sliderHeight, setSliderHeight] = useState(1); - const progressHeight = useSharedValue(volume * 100); const onSliderLayout = (e) => { setSliderHeight(e.nativeEvent.layout.height); }; const getVolumeIcon = () => { - if (volume === 0) { + if (volume.value === 0) { return Expensicons.Mute; } - if (volume <= 0.5) { + if (volume.value <= 0.5) { return Expensicons.VolumeLow; } return Expensicons.VolumeHigh; }; const pan = Gesture.Pan().onChange((event) => { - progressHeight.value = Math.min(Math.max(100 - (event.y / sliderHeight) * 100, 0), 100); - updateVolume(Math.round(progressHeight.value) / 100); + const val = Math.floor((1 - event.y / sliderHeight) * 100) / 100; + volume.value = Math.min(Math.max(val, 0), 1); + updateVolume(volume.value); }); - const progressBarStyle = useAnimatedStyle(() => ({height: `${progressHeight.value}%`})); + const progressBarStyle = useAnimatedStyle(() => ({height: `${volume.value * 100}%`})); return ( From 23bb760d020dd1d1e394dfbb231192b6d619b67e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 23 Oct 2023 12:03:22 +0200 Subject: [PATCH 020/701] fix progress bar --- src/components/VideoPlayer/ProgressBar.js | 25 +++++++++---- .../VideoPlayer/VideoPlayerControls.js | 4 +- src/components/VideoPlayer/index.js | 18 ++++++--- .../VideoPlayerContexts/PlaybackContext.js | 37 ++++++++++++++++--- 4 files changed, 64 insertions(+), 20 deletions(-) diff --git a/src/components/VideoPlayer/ProgressBar.js b/src/components/VideoPlayer/ProgressBar.js index cc0eda1350e7..9d1d32d8e801 100644 --- a/src/components/VideoPlayer/ProgressBar.js +++ b/src/components/VideoPlayer/ProgressBar.js @@ -2,6 +2,7 @@ import React, {useEffect, useState} from 'react'; import PropTypes from 'prop-types'; import {Gesture, GestureDetector} from 'react-native-gesture-handler'; import Animated, {useAnimatedStyle, useSharedValue, withTiming, runOnJS} from 'react-native-reanimated'; +import {usePlaybackContext} from '../VideoPlayerContexts/PlaybackContext'; const propTypes = { // eslint-disable-next-line react/forbid-prop-types @@ -9,12 +10,13 @@ const propTypes = { position: PropTypes.number.isRequired, - updatePostiion: PropTypes.func.isRequired, + seekPosition: PropTypes.func.isRequired, }; const defaultProps = {}; -function ProgressBar({duration, position, updatePostiion}) { +function ProgressBar({duration, position, seekPosition}) { + const {updateIsSeeking, pauseVideo, playVideo} = usePlaybackContext(); const [sliderWidth, setSliderWidth] = useState(1); const progressWidth = useSharedValue(0); @@ -22,13 +24,22 @@ function ProgressBar({duration, position, updatePostiion}) { setSliderWidth(e.nativeEvent.layout.width); }; - const pan = Gesture.Pan().onChange((event) => { - progressWidth.value = (event.x / sliderWidth) * 100; - runOnJS(updatePostiion)((event.x / sliderWidth) * duration); - }); + const pan = Gesture.Pan() + .onBegin(() => { + console.log('onStart'); + pauseVideo(); + }) + .onChange((event) => { + progressWidth.value = (event.x / sliderWidth) * 100; + runOnJS(seekPosition)((event.x / sliderWidth) * duration); + }) + .onEnd(() => { + console.log('onEnd'); + playVideo(); + }); useEffect(() => { - progressWidth.value = withTiming((position / duration) * 100, {duration: 270}); + progressWidth.value = (position / duration) * 100; }, [duration, position, progressWidth]); const progressBarStyle = useAnimatedStyle(() => ({width: `${progressWidth.value}%`})); diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index 64f44dc149b6..a4d6cab1d8e9 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -23,7 +23,7 @@ const propTypes = { const defaultProps = {}; function VideoPlayerControls({duration, position, toggleCreateMenu, url}) { - const {togglePlay, isPlaying, updatePostiion, enterFullScreenMode, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); + const {togglePlay, isPlaying, seekPosition, enterFullScreenMode, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const [durationFormatted, setDurationFormatted] = React.useState('0:00'); const isCurrentlySet = currentlyPlayingURL === url; @@ -89,7 +89,7 @@ function VideoPlayerControls({duration, position, toggleCreateMenu, url}) { diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 8fa087556650..4f9dd386e248 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -43,9 +43,9 @@ const defaultProps = { function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement}) { const {isSmallScreenWidth} = useWindowDimensions(); - const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, updateCurrentVideoPlayerRef} = usePlaybackContext(); - const [duration, setDuration] = useState(0); - const [position, setPosition] = useState(0); + const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, updateCurrentVideoPlayerRef, updateDuration, updatePosition, duration, position, isPlaying} = + usePlaybackContext(); + const [isVideoLoading, setIsVideoLoading] = React.useState(true); const [popoverAnchorPosition, setPopoverAnchorPosition] = useState({vertical: 0, horizontal: 0}); @@ -151,23 +151,29 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty style={style} videoStyle={videoStyle} source={{ - uri: url || 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', + uri: 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', }} shouldPlay={shouldPlay} useNativeControls={false} resizeMode={resizeMode} isLooping={isLooping} onReadyForDisplay={(e) => { + if (!isVideoLoading) { + return; + } setIsVideoLoading(false); onVideoLoaded(e); }} onLoadStart={() => setIsVideoLoading(true)} onPlaybackStatusUpdate={(e) => { + if (!isPlaying) { + return; + } const videoDuration = e.durationMillis; if (videoDuration > 0 && !_.isNaN(videoDuration)) { - setDuration(videoDuration); + updateDuration(videoDuration); } - setPosition(e.positionMillis); + updatePosition(e.positionMillis); }} /> diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index 07b931559f4e..d1d4ae094d9e 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -9,6 +9,9 @@ function PlaybackContextProvider({children}) { const [originalParent, setOriginalParent] = useState(null); const [isPlaying, setIsPlaying] = useState(false); + const [isSeeking, setIsSeeking] = useState(false); + const [duration, setDuration] = useState(0); + const [position, setPosition] = useState(0); const currentVideoPlayerRef = useRef(null); @@ -54,13 +57,25 @@ function PlaybackContextProvider({children}) { currentVideoPlayerRef.current.presentFullscreenPlayer(); }, [currentVideoPlayerRef]); - const updatePostiion = useCallback( + const updatePosition = useCallback((newPosition) => { + setPosition(newPosition); + }, []); + + const seekPosition = useCallback( (newPosition) => { currentVideoPlayerRef.current.setStatusAsync({positionMillis: newPosition}); }, [currentVideoPlayerRef], ); + const updateDuration = useCallback((newDuration) => { + setDuration(newDuration); + }, []); + + const updateIsSeeking = useCallback((isCurrentlySeeking) => { + setIsSeeking(isCurrentlySeeking); + }, []); + const contextValue = useMemo( () => ({ updateCurrentlyPlayingURL, @@ -68,25 +83,37 @@ function PlaybackContextProvider({children}) { originalParent, sharedElement, updateSharedElements, - togglePlay, isPlaying, enterFullScreenMode, - updatePostiion, currentVideoPlayerRef, updateCurrentVideoPlayerRef, + position, + updatePosition, + seekPosition, + duration, + updateDuration, + updateIsSeeking, + playVideo, + pauseVideo, }), [ - currentVideoPlayerRef, currentlyPlayingURL, + duration, enterFullScreenMode, isPlaying, originalParent, + pauseVideo, + playVideo, + position, + seekPosition, sharedElement, togglePlay, updateCurrentVideoPlayerRef, updateCurrentlyPlayingURL, - updatePostiion, + updateDuration, + updateIsSeeking, + updatePosition, ], ); return {children}; From 33dc71989e35e564690e5eddb1a8d54f829b1ce4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 23 Oct 2023 15:32:21 +0200 Subject: [PATCH 021/701] fix popover displaying --- src/components/VideoPlayer/IconButton.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js index 4761d5666d18..bb8b21d0da12 100644 --- a/src/components/VideoPlayer/IconButton.js +++ b/src/components/VideoPlayer/IconButton.js @@ -32,7 +32,7 @@ function IconButton({src, fill, onPress, style, accessibilityLabel}) { Date: Thu, 26 Oct 2023 08:40:05 +0200 Subject: [PATCH 022/701] improved popover menu --- src/components/MenuItem.js | 5 ++ src/components/PopoverMenu/index.js | 69 +++++++++++++--- src/components/PopoverWithoutOverlay/index.js | 2 +- src/components/VideoPlayer/ProgressBar.js | 2 +- src/components/VideoPlayer/index.js | 66 +++------------- .../VideoPlayerContexts/PlaybackContext.js | 17 ++-- src/components/VideoPopoverMenu/index.js | 78 +++++++++++++++++++ src/components/menuItemPropTypes.js | 2 + 8 files changed, 171 insertions(+), 70 deletions(-) create mode 100644 src/components/VideoPopoverMenu/index.js diff --git a/src/components/MenuItem.js b/src/components/MenuItem.js index 3c52c41f1992..f4bbab960f67 100644 --- a/src/components/MenuItem.js +++ b/src/components/MenuItem.js @@ -82,6 +82,7 @@ const defaultProps = { shouldShowRightComponent: false, titleWithTooltips: [], shouldCheckActionAllowedOnPress: true, + putLeftPaddingWhenNoIcon: false, }; const MenuItem = React.forwardRef((props, ref) => { @@ -211,6 +212,9 @@ const MenuItem = React.forwardRef((props, ref) => { ]} /> )} + {!props.icon && props.putLeftPaddingWhenNoIcon && ( + + )} {Boolean(props.icon) && !_.isArray(props.icon) && ( {props.iconType === CONST.ICON_TYPE_ICON && ( @@ -249,6 +253,7 @@ const MenuItem = React.forwardRef((props, ref) => { )} )} + {Boolean(props.secondaryIcon) && ( { - const selectedItem = props.menuItems[index]; - props.onItemSelected(selectedItem, index); - selectedItemIndex.current = index; + const selectedItem = menuItems[index]; + if (selectedItem.subMenuItems) { + setMenuItems([...selectedItem.subMenuItems]); + setEnteredSubMenuIndexes([...enteredSubMenuIndexes, index]); + } else { + props.onItemSelected(selectedItem, index); + selectedItemIndex.current = index; + } + }; + + const getPreviousSubMenu = () => { + let currentMenuItems = props.menuItems; + for (let i = 0; i < enteredSubMenuIndexes.length - 1; i++) { + currentMenuItems = currentMenuItems[enteredSubMenuIndexes[i]].subMenuItems; + } + return currentMenuItems; + }; + + const renderBackButtonItem = () => { + const previousMenuItems = getPreviousSubMenu(); + const previouslySelectedItem = previousMenuItems[enteredSubMenuIndexes[enteredSubMenuIndexes.length - 1]]; + + return ( + { + setMenuItems(previousMenuItems); + enteredSubMenuIndexes.splice(-1); + }} + /> + ); }; useKeyboardShortcut( @@ -73,17 +111,28 @@ function PopoverMenu(props) { {isActive: props.isVisible}, ); + useEffect(() => { + if (menuItems.length === 0) { + setMenuItems(props.menuItems); + } + return () => {}; + }, [menuItems, props.menuItems]); + return ( { + setMenuItems([]); + setEnteredSubMenuIndexes([]); + props.onClose(); + }} isVisible={props.isVisible} onModalHide={() => { setFocusedIndex(-1); if (selectedItemIndex.current !== null) { - props.menuItems[selectedItemIndex.current].onSelected(); + menuItems[selectedItemIndex.current].onSelected(); selectedItemIndex.current = null; } }} @@ -97,9 +146,10 @@ function PopoverMenu(props) { > {!_.isEmpty(props.headerText) && {props.headerText}} - {_.map(props.menuItems, (item, menuIndex) => ( + {enteredSubMenuIndexes.length > 0 && renderBackButtonItem()} + {_.map(menuItems, (item, menuIndex) => ( selectItem(menuIndex)} focused={focusedIndex === menuIndex} shouldShowRightIcon={item.shouldShowRightIcon} + putLeftPaddingWhenNoIcon={item.putLeftPaddingWhenNoIcon} /> ))} diff --git a/src/components/PopoverWithoutOverlay/index.js b/src/components/PopoverWithoutOverlay/index.js index 2036807e0df0..02da37c8aecb 100644 --- a/src/components/PopoverWithoutOverlay/index.js +++ b/src/components/PopoverWithoutOverlay/index.js @@ -50,7 +50,7 @@ function Popover(props) { return ( diff --git a/src/components/VideoPlayer/ProgressBar.js b/src/components/VideoPlayer/ProgressBar.js index 9d1d32d8e801..259031690364 100644 --- a/src/components/VideoPlayer/ProgressBar.js +++ b/src/components/VideoPlayer/ProgressBar.js @@ -16,7 +16,7 @@ const propTypes = { const defaultProps = {}; function ProgressBar({duration, position, seekPosition}) { - const {updateIsSeeking, pauseVideo, playVideo} = usePlaybackContext(); + const {pauseVideo, playVideo} = usePlaybackContext(); const [sliderWidth, setSliderWidth] = useState(1); const progressWidth = useSharedValue(0); diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 4f9dd386e248..0844269a746b 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -1,4 +1,4 @@ -import React, {useEffect, useRef, useState} from 'react'; +import React, {useEffect, useRef} from 'react'; import {View} from 'react-native'; import PropTypes from 'prop-types'; import {Video, ResizeMode} from 'expo-av'; @@ -7,9 +7,7 @@ import styles from '../../styles/styles'; import {usePlaybackContext} from '../VideoPlayerContexts/PlaybackContext'; import useWindowDimensions from '../../hooks/useWindowDimensions'; import VideoPlayerControls from './VideoPlayerControls'; -import PopoverMenu from '../PopoverMenu'; -import * as Expensicons from '../Icon/Expensicons'; -import fileDownload from '../../libs/fileDownload'; +import VideoPopoverMenu from '../VideoPopoverMenu'; const propTypes = { url: PropTypes.string.isRequired, @@ -47,53 +45,21 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty usePlaybackContext(); const [isVideoLoading, setIsVideoLoading] = React.useState(true); + const [isMenuActive, setIsMenuActive] = React.useState(false); - const [popoverAnchorPosition, setPopoverAnchorPosition] = useState({vertical: 0, horizontal: 0}); - - const [isCreateMenuActive, setIsCreateMenuActive] = useState(false); const ref = useRef(null); - const videoPlayerParentRef = useRef(null); const videoPlayerRef = useRef(null); - const testRef = useRef(null); + const sharedVideoPlayerParentRef = useRef(null); - const showCreateMenu = () => { - setIsCreateMenuActive(true); - }; - const hideCreateMenu = () => { - setIsCreateMenuActive(false); - }; const toggleCreateMenu = (e) => { - if (isCreateMenuActive) { - hideCreateMenu(); + if (isMenuActive) { + setIsMenuActive(false); } else { - setPopoverAnchorPosition({vertical: e.nativeEvent.pageY, horizontal: e.nativeEvent.pageX}); - showCreateMenu(); + setIsMenuActive(true); } }; - console.log('XXX'); - - const menuItems = [ - { - icon: Expensicons.Download, - text: 'Download', - onSelected: () => { - console.log('Download'); - fileDownload(url); - hideCreateMenu(); - }, - }, - { - icon: Expensicons.Meter, - text: 'Playback speed', - onSelected: () => { - console.log('Playback speed'); - }, - shouldShowRightIcon: true, - }, - ]; - useEffect(() => { if (shouldUseSharedVideoElement || url !== currentlyPlayingURL) { return; @@ -106,12 +72,12 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty if (!shouldUseSharedVideoElement) { return; } - const reff = testRef.current; + const newParentRef = sharedVideoPlayerParentRef.current; if (currentlyPlayingURL === url) { - reff.appendChild(sharedElement); + newParentRef.appendChild(sharedElement); } return () => { - if (!reff.childNodes[0]) { + if (!newParentRef.childNodes[0]) { return; } originalParent.appendChild(sharedElement); @@ -129,7 +95,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty {shouldUseSharedVideoElement ? ( ) : ( @@ -187,15 +153,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty url={url} /> - + ); } diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index d1d4ae094d9e..182907c90b66 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -9,10 +9,12 @@ function PlaybackContextProvider({children}) { const [originalParent, setOriginalParent] = useState(null); const [isPlaying, setIsPlaying] = useState(false); - const [isSeeking, setIsSeeking] = useState(false); const [duration, setDuration] = useState(0); const [position, setPosition] = useState(0); + const playbackSpeeds = useMemo(() => [0.25, 0.5, 1, 1.5, 2], []); + const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); + const currentVideoPlayerRef = useRef(null); const pauseVideo = useCallback(() => { @@ -72,8 +74,9 @@ function PlaybackContextProvider({children}) { setDuration(newDuration); }, []); - const updateIsSeeking = useCallback((isCurrentlySeeking) => { - setIsSeeking(isCurrentlySeeking); + const updatePlaybackSpeed = useCallback((newPlaybackSpeed) => { + currentVideoPlayerRef.current.setStatusAsync({rate: newPlaybackSpeed}); + setCurrentPlaybackSpeed(newPlaybackSpeed); }, []); const contextValue = useMemo( @@ -93,9 +96,11 @@ function PlaybackContextProvider({children}) { seekPosition, duration, updateDuration, - updateIsSeeking, playVideo, pauseVideo, + playbackSpeeds, + updatePlaybackSpeed, + currentPlaybackSpeed, }), [ currentlyPlayingURL, @@ -105,6 +110,7 @@ function PlaybackContextProvider({children}) { originalParent, pauseVideo, playVideo, + playbackSpeeds, position, seekPosition, sharedElement, @@ -112,8 +118,9 @@ function PlaybackContextProvider({children}) { updateCurrentVideoPlayerRef, updateCurrentlyPlayingURL, updateDuration, - updateIsSeeking, + updatePlaybackSpeed, updatePosition, + currentPlaybackSpeed, ], ); return {children}; diff --git a/src/components/VideoPopoverMenu/index.js b/src/components/VideoPopoverMenu/index.js new file mode 100644 index 000000000000..8eabdfb82149 --- /dev/null +++ b/src/components/VideoPopoverMenu/index.js @@ -0,0 +1,78 @@ +import React, {useEffect, useState} from 'react'; +import PropTypes from 'prop-types'; +import _ from 'underscore'; +import useWindowDimensions from '../../hooks/useWindowDimensions'; +import * as Expensicons from '../Icon/Expensicons'; +import PopoverMenu from '../PopoverMenu'; +import {usePlaybackContext} from '../VideoPlayerContexts/PlaybackContext'; + +const propTypes = { + isActive: PropTypes.bool.isRequired, +}; + +const defaultProps = {}; + +function VideoPopoverMenu({isActive}) { + const {isSmallScreenWidth} = useWindowDimensions(); + const {playbackSpeeds, currentPlaybackSpeed, updatePlaybackSpeed} = usePlaybackContext(); + const [popoverAnchorPosition, setPopoverAnchorPosition] = useState({vertical: 0, horizontal: 0}); + const [isCreateMenuActive, setIsCreateMenuActive] = useState(isActive); + + const showCreateMenu = () => { + setIsCreateMenuActive(true); + }; + + const hideCreateMenu = () => { + setIsCreateMenuActive(false); + }; + + useEffect(() => { + setIsCreateMenuActive(isActive); + }, [isActive]); + + const playbackSpeedSubMenuItems = _.map(playbackSpeeds, (speed) => ({ + icon: currentPlaybackSpeed === speed ? Expensicons.Checkmark : null, + text: speed, + onSelected: () => { + console.log(`${speed}x`); + updatePlaybackSpeed(speed); + }, + putLeftPaddingWhenNoIcon: true, + })); + + const menuItems = [ + { + icon: Expensicons.Download, + text: 'Download', + onSelected: () => { + console.log('Download'); + }, + }, + { + icon: Expensicons.Meter, + text: 'Playback speed', + onSelected: () => { + console.log('Playback speed'); + }, + subMenuItems: playbackSpeedSubMenuItems, + }, + ]; + + return ( + + ); +} + +VideoPopoverMenu.propTypes = propTypes; +VideoPopoverMenu.defaultProps = defaultProps; +VideoPopoverMenu.displayName = 'VideoPopoverMenu'; + +export default VideoPopoverMenu; diff --git a/src/components/menuItemPropTypes.js b/src/components/menuItemPropTypes.js index 4b37e8040d45..0f9d16a81eba 100644 --- a/src/components/menuItemPropTypes.js +++ b/src/components/menuItemPropTypes.js @@ -159,6 +159,8 @@ const propTypes = { /** Should check anonymous user in onPress function */ shouldCheckActionAllowedOnPress: PropTypes.bool, + + putLeftPaddingWhenNoIcon: PropTypes.bool, }; export default propTypes; From 798f6b874fd543eae771ec8c578bdea291040ac4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 26 Oct 2023 15:25:10 +0200 Subject: [PATCH 023/701] move popover logic to context --- .../VideoPlayer/VideoPlayerControls.js | 8 +- src/components/VideoPlayer/index.js | 12 -- .../VideoPopoverMenuContext.js | 47 ++++++ src/components/VideoPopoverMenu/index.js | 33 ++-- src/pages/home/ReportScreen.js | 152 +++++++++--------- 5 files changed, 139 insertions(+), 113 deletions(-) create mode 100644 src/components/VideoPlayerContexts/VideoPopoverMenuContext.js diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index a4d6cab1d8e9..e7e1041eaa6b 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -8,6 +8,7 @@ import ProgressBar from './ProgressBar'; import convertMillisecondsToTime from './utils'; import VolumeButton from '../VolumeButton'; import {usePlaybackContext} from '../VideoPlayerContexts/PlaybackContext'; +import {useVideoPopoverMenuContext} from '../VideoPlayerContexts/VideoPopoverMenuContext'; const propTypes = { // eslint-disable-next-line react/forbid-prop-types @@ -15,15 +16,14 @@ const propTypes = { position: PropTypes.number.isRequired, - toggleCreateMenu: PropTypes.func.isRequired, - url: PropTypes.string.isRequired, }; const defaultProps = {}; -function VideoPlayerControls({duration, position, toggleCreateMenu, url}) { +function VideoPlayerControls({duration, position, url}) { const {togglePlay, isPlaying, seekPosition, enterFullScreenMode, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); + const {showPopover} = useVideoPopoverMenuContext(); const [durationFormatted, setDurationFormatted] = React.useState('0:00'); const isCurrentlySet = currentlyPlayingURL === url; @@ -81,7 +81,7 @@ function VideoPlayerControls({duration, position, toggleCreateMenu, url}) { src={Expensicons.ThreeDots} fill="white" accessibilityLabel="More options" - onPress={(e) => toggleCreateMenu(e)} + onPress={(e) => showPopover(e.nativeEvent.pageY - 30, e.nativeEvent.pageX)} /> diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 0844269a746b..d74fd21de1e4 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -45,21 +45,12 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty usePlaybackContext(); const [isVideoLoading, setIsVideoLoading] = React.useState(true); - const [isMenuActive, setIsMenuActive] = React.useState(false); const ref = useRef(null); const videoPlayerParentRef = useRef(null); const videoPlayerRef = useRef(null); const sharedVideoPlayerParentRef = useRef(null); - const toggleCreateMenu = (e) => { - if (isMenuActive) { - setIsMenuActive(false); - } else { - setIsMenuActive(true); - } - }; - useEffect(() => { if (shouldUseSharedVideoElement || url !== currentlyPlayingURL) { return; @@ -149,11 +140,8 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty - - ); } diff --git a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js new file mode 100644 index 000000000000..27f92f95259a --- /dev/null +++ b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js @@ -0,0 +1,47 @@ +import React, {useCallback, useMemo} from 'react'; +import PropTypes from 'prop-types'; + +const VideoPopoverMenuContext = React.createContext(null); + +function VideoPopoverMenuContextProvider({children}) { + const [isPopoverVisible, setIsPopoverVisible] = React.useState(false); + const [anchorPosition, setAnchorPosition] = React.useState({vertical: 0, horizontal: 0}); + + const updateAnchorPosition = useCallback((y, x) => { + setAnchorPosition({vertical: y, horizontal: x}); + }, []); + + const hidePopover = useCallback(() => { + setIsPopoverVisible(false); + }, []); + + const showPopover = useCallback( + (y = 0, x = 0) => { + setIsPopoverVisible(true); + updateAnchorPosition(y, x); + }, + [updateAnchorPosition], + ); + + const contextValue = useMemo( + () => ({isPopoverVisible, hidePopover, showPopover, anchorPosition, updateAnchorPosition}), + [anchorPosition, hidePopover, isPopoverVisible, showPopover, updateAnchorPosition], + ); + return {children}; +} + +function useVideoPopoverMenuContext() { + const context = React.useContext(VideoPopoverMenuContext); + if (context === undefined) { + throw new Error('useVideoPopoverMenuContext must be used within a PlaybackContextProvider'); + } + return context; +} + +VideoPopoverMenuContextProvider.displayName = 'VideoPopoverMenuContextProvider'; +VideoPopoverMenuContextProvider.propTypes = { + /** Actual content wrapped by this component */ + children: PropTypes.node.isRequired, +}; + +export {VideoPopoverMenuContextProvider, useVideoPopoverMenuContext}; diff --git a/src/components/VideoPopoverMenu/index.js b/src/components/VideoPopoverMenu/index.js index 8eabdfb82149..75943b436454 100644 --- a/src/components/VideoPopoverMenu/index.js +++ b/src/components/VideoPopoverMenu/index.js @@ -1,34 +1,19 @@ -import React, {useEffect, useState} from 'react'; -import PropTypes from 'prop-types'; +import React from 'react'; import _ from 'underscore'; import useWindowDimensions from '../../hooks/useWindowDimensions'; import * as Expensicons from '../Icon/Expensicons'; import PopoverMenu from '../PopoverMenu'; import {usePlaybackContext} from '../VideoPlayerContexts/PlaybackContext'; +import {useVideoPopoverMenuContext} from '../VideoPlayerContexts/VideoPopoverMenuContext'; -const propTypes = { - isActive: PropTypes.bool.isRequired, -}; +const propTypes = {}; const defaultProps = {}; -function VideoPopoverMenu({isActive}) { +function VideoPopoverMenu() { const {isSmallScreenWidth} = useWindowDimensions(); const {playbackSpeeds, currentPlaybackSpeed, updatePlaybackSpeed} = usePlaybackContext(); - const [popoverAnchorPosition, setPopoverAnchorPosition] = useState({vertical: 0, horizontal: 0}); - const [isCreateMenuActive, setIsCreateMenuActive] = useState(isActive); - - const showCreateMenu = () => { - setIsCreateMenuActive(true); - }; - - const hideCreateMenu = () => { - setIsCreateMenuActive(false); - }; - - useEffect(() => { - setIsCreateMenuActive(isActive); - }, [isActive]); + const {isPopoverVisible, hidePopover, anchorPosition} = useVideoPopoverMenuContext(); const playbackSpeedSubMenuItems = _.map(playbackSpeeds, (speed) => ({ icon: currentPlaybackSpeed === speed ? Expensicons.Checkmark : null, @@ -60,10 +45,10 @@ function VideoPopoverMenu({isActive}) { return ( - - + - - {headerView} - {ReportUtils.isTaskReport(report) && isSmallScreenWidth && ReportUtils.isOpenTaskReport(report, parentReportAction) && ( - - - - + + {headerView} + {ReportUtils.isTaskReport(report) && isSmallScreenWidth && ReportUtils.isOpenTaskReport(report, parentReportAction) && ( + + + + + - - )} - - {!!accountManagerReportID && ReportUtils.isConciergeChatReport(report) && isBannerVisible && ( - - )} - - - {isReportReadyForDisplay && !isLoadingInitialReportActions && !isLoading && ( - )} - - {/* Note: The ReportActionsSkeletonView should be allowed to mount even if the initial report actions are not loaded. + + {!!accountManagerReportID && ReportUtils.isConciergeChatReport(report) && isBannerVisible && ( + + )} + + + {isReportReadyForDisplay && !isLoadingInitialReportActions && !isLoading && ( + + )} + + {/* Note: The ReportActionsSkeletonView should be allowed to mount even if the initial report actions are not loaded. If we prevent rendering the report while they are loading then we'll unnecessarily unmount the ReportActionsView which will clear the new marker lines initial state. */} - {(!isReportReadyForDisplay || isLoadingInitialReportActions || isLoading) && } - - {isReportReadyForDisplay ? ( - - ) : ( - - )} - - - - + {(!isReportReadyForDisplay || isLoadingInitialReportActions || isLoading) && } + + {isReportReadyForDisplay ? ( + + ) : ( + + )} + + + + + + + ); From e8571089bfa7f30338dfe9a79f500dfa2d1dbb02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 26 Oct 2023 17:03:26 +0200 Subject: [PATCH 024/701] clear structure --- src/App.js | 2 + .../AttachmentViewVideo/index.js | 4 +- src/components/VideoPlayer/index.js | 2 +- src/pages/home/ReportScreen.js | 151 +++++++++--------- 4 files changed, 78 insertions(+), 81 deletions(-) diff --git a/src/App.js b/src/App.js index 3b8d4e6604b3..584100bb286a 100644 --- a/src/App.js +++ b/src/App.js @@ -29,6 +29,7 @@ import OnyxUpdateManager from './libs/actions/OnyxUpdateManager'; import {PlaybackContextProvider} from './components/VideoPlayerContexts/PlaybackContext'; import {SidebarNavigationContextProvider} from './pages/home/sidebar/SidebarNavigationContext'; import {VolumeContextProvider} from './components/VideoPlayerContexts/VolumeContext'; +import {VideoPopoverMenuContextProvider} from './components/VideoPlayerContexts/VideoPopoverMenuContext'; // For easier debugging and development, when we are in web we expose Onyx to the window, so you can more easily set data into Onyx if (window && Environment.isDevelopment()) { @@ -70,6 +71,7 @@ function App() { PlaybackContextProvider, SidebarNavigationContextProvider, VolumeContextProvider, + VideoPopoverMenuContextProvider, ]} > diff --git a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js index 3b34045b4a51..a20774efefef 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js @@ -10,10 +10,8 @@ const propTypes = { }; function AttachmentViewVideo({source}) { - const {currentlyPlayingURL} = usePlaybackContext(); const {isSmallScreenWidth} = useWindowDimensions(); - - const shouldUseSharedElementTransition = !isSmallScreenWidth && currentlyPlayingURL === source; + const shouldUseSharedElementTransition = !isSmallScreenWidth; return ( - - + - - - {headerView} - {ReportUtils.isTaskReport(report) && isSmallScreenWidth && ReportUtils.isOpenTaskReport(report, parentReportAction) && ( - - - - - + {headerView} + {ReportUtils.isTaskReport(report) && isSmallScreenWidth && ReportUtils.isOpenTaskReport(report, parentReportAction) && ( + + + + - )} - - {!!accountManagerReportID && ReportUtils.isConciergeChatReport(report) && isBannerVisible && ( - + )} - - - {isReportReadyForDisplay && !isLoadingInitialReportActions && !isLoading && ( - - )} - - {/* Note: The ReportActionsSkeletonView should be allowed to mount even if the initial report actions are not loaded. + + {!!accountManagerReportID && ReportUtils.isConciergeChatReport(report) && isBannerVisible && ( + + )} + + + {isReportReadyForDisplay && !isLoadingInitialReportActions && !isLoading && ( + + )} + + {/* Note: The ReportActionsSkeletonView should be allowed to mount even if the initial report actions are not loaded. If we prevent rendering the report while they are loading then we'll unnecessarily unmount the ReportActionsView which will clear the new marker lines initial state. */} - {(!isReportReadyForDisplay || isLoadingInitialReportActions || isLoading) && } - - {isReportReadyForDisplay ? ( - - ) : ( - - )} - - - + {(!isReportReadyForDisplay || isLoadingInitialReportActions || isLoading) && } + + {isReportReadyForDisplay ? ( + + ) : ( + + )} + + + - - - + + ); From 1bad6b4e292097794d6187d6eb41e774e80c7f85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 27 Oct 2023 10:41:23 +0200 Subject: [PATCH 025/701] add route navigation to attachment modal for videos --- .../BaseAnchorForAttachmentsOnly.js | 27 +++++++------------ .../extractAttachmentsFromReport.js | 8 +++--- .../Attachments/AttachmentCarousel/index.js | 3 --- src/components/VideoPlayer/index.js | 11 +++++--- src/components/VideoPlayerPreview/index.js | 2 +- 5 files changed, 23 insertions(+), 28 deletions(-) diff --git a/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.js b/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.js index e0546688c19a..486402bf81c4 100644 --- a/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.js +++ b/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.js @@ -12,8 +12,9 @@ import addEncryptedAuthTokenToURL from '../../libs/addEncryptedAuthTokenToURL'; import {ShowContextMenuContext, showContextMenuForReport} from '../ShowContextMenuContext'; import * as ReportUtils from '../../libs/ReportUtils'; import PressableWithoutFeedback from '../Pressable/PressableWithoutFeedback'; -import AttachmentModal from '../AttachmentModal'; import VideoPlayerPreview from '../VideoPlayerPreview'; +import ROUTES from '../../ROUTES'; +import Navigation from '../../libs/Navigation/Navigation'; const propTypes = { /** Press in handler for the link */ @@ -50,22 +51,14 @@ function BaseAnchorForAttachmentsOnly(props) { {({anchor, report, action, checkIfContextMenuActive}) => isVideo ? ( - - {({show}) => ( - - )} - + { + const route = ROUTES.REPORT_ATTACHMENTS.getRoute(report.reportID, sourceURL); + Navigation.navigate(route); + }} + /> ) : ( { const attachmentsFromReport = extractAttachmentsFromReport(report, reportActions); - const initialPage = _.findIndex(attachmentsFromReport, compareImage); - console.log(page, attachmentsFromReport, source); - // Dismiss the modal when deleting an attachment during its display in preview. if (initialPage === -1 && _.find(attachments, compareImage)) { Navigation.dismissModal(); diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index a79300c80581..4e608c2ed58b 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -7,7 +7,7 @@ import styles from '../../styles/styles'; import {usePlaybackContext} from '../VideoPlayerContexts/PlaybackContext'; import useWindowDimensions from '../../hooks/useWindowDimensions'; import VideoPlayerControls from './VideoPlayerControls'; -import VideoPopoverMenu from '../VideoPopoverMenu'; +import addEncryptedAuthTokenToURL from '../../libs/addEncryptedAuthTokenToURL'; const propTypes = { url: PropTypes.string.isRequired, @@ -44,6 +44,8 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, updateCurrentVideoPlayerRef, updateDuration, updatePosition, duration, position, isPlaying} = usePlaybackContext(); + const [sourceURLWithAuth] = React.useState(addEncryptedAuthTokenToURL(url)); + const [isVideoLoading, setIsVideoLoading] = React.useState(true); const ref = useRef(null); @@ -60,15 +62,16 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty // shared element transition logic for video player useEffect(() => { - if (!shouldUseSharedVideoElement) { + if (!sharedElement || !shouldUseSharedVideoElement) { return; } + const newParentRef = sharedVideoPlayerParentRef.current; if (currentlyPlayingURL === url) { newParentRef.appendChild(sharedElement); } return () => { - if (!newParentRef.childNodes[0]) { + if (!originalParent && !newParentRef.childNodes[0]) { return; } originalParent.appendChild(sharedElement); @@ -108,7 +111,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty style={style} videoStyle={videoStyle} source={{ - uri: url || 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', + uri: sourceURLWithAuth || 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', }} shouldPlay={shouldPlay} useNativeControls={false} diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index 91108a219927..8f1d7fe944d1 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -58,7 +58,7 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, return; } setIsThumbnail(false); - }, [currentlyPlayingURL, videoUrl]); + }, [currentlyPlayingURL, updateCurrentlyPlayingURL, videoUrl]); return ( From abdd7a3b9ed0092aca5292d69f0bbb07122ce330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 27 Oct 2023 14:23:17 +0200 Subject: [PATCH 026/701] refactor VideoPlayer component --- src/components/VideoPlayer/index.js | 75 +++++++++---------- .../VideoPlayerContexts/PlaybackContext.js | 25 ++++--- 2 files changed, 50 insertions(+), 50 deletions(-) diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 4e608c2ed58b..d6dab633fdca 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -1,4 +1,4 @@ -import React, {useEffect, useRef} from 'react'; +import React, {useCallback, useEffect, useRef, useState} from 'react'; import {View} from 'react-native'; import PropTypes from 'prop-types'; import {Video, ResizeMode} from 'expo-av'; @@ -43,24 +43,45 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const {isSmallScreenWidth} = useWindowDimensions(); const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, updateCurrentVideoPlayerRef, updateDuration, updatePosition, duration, position, isPlaying} = usePlaybackContext(); - - const [sourceURLWithAuth] = React.useState(addEncryptedAuthTokenToURL(url)); - - const [isVideoLoading, setIsVideoLoading] = React.useState(true); - - const ref = useRef(null); - const videoPlayerParentRef = useRef(null); + const [isVideoLoading, setIsVideoLoading] = useState(true); const videoPlayerRef = useRef(null); + const videoPlayerElementParentRef = useRef(null); + const videoPlayerElementRef = useRef(null); const sharedVideoPlayerParentRef = useRef(null); + const sourceURLWithAuth = addEncryptedAuthTokenToURL(url); + + const onReadyForDisplay = useCallback( + (e) => { + if (!isVideoLoading) { + return; + } + setIsVideoLoading(false); + onVideoLoaded(e); + }, + [isVideoLoading, onVideoLoaded], + ); + + const onPlaybackStatusUpdate = useCallback( + (e) => { + if (!isPlaying) { + return; + } + updateDuration(e.durationMillis || 0); + updatePosition(e.positionMillis || 0); + }, + [isPlaying, updateDuration, updatePosition], + ); + // update shared video elements useEffect(() => { if (shouldUseSharedVideoElement || url !== currentlyPlayingURL) { return; } - updateSharedElements(videoPlayerParentRef.current, videoPlayerRef.current); - }, [currentlyPlayingURL, shouldUseSharedVideoElement, updateSharedElements, url]); + updateSharedElements(videoPlayerElementParentRef.current, videoPlayerElementRef.current); + updateCurrentVideoPlayerRef(videoPlayerRef.current); + }, [currentlyPlayingURL, shouldUseSharedVideoElement, updateCurrentVideoPlayerRef, updateSharedElements, url]); - // shared element transition logic for video player + // append shared video element to new parent (used for example in attachment modal) useEffect(() => { if (!sharedElement || !shouldUseSharedVideoElement) { return; @@ -78,13 +99,6 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty }; }, [currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); - useEffect(() => { - if (currentlyPlayingURL === url && !shouldUseSharedVideoElement) { - updateCurrentVideoPlayerRef(ref.current); - } - return () => {}; - }, [currentlyPlayingURL, shouldUseSharedVideoElement, updateCurrentVideoPlayerRef, url]); - return ( {shouldUseSharedVideoElement ? ( @@ -99,15 +113,15 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty if (!el) { return; } - videoPlayerParentRef.current = el; + videoPlayerElementParentRef.current = el; if (el.childNodes[0]) { - videoPlayerRef.current = el.childNodes[0]; + videoPlayerElementRef.current = el.childNodes[0]; } }} > diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index 182907c90b66..c8dfba8125a7 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -45,10 +45,10 @@ function PlaybackContextProvider({children}) { [playVideo], ); - const updateSharedElements = (parent, child) => { + const updateSharedElements = useCallback((parent, child) => { setOriginalParent(parent); setSharedElement(child); - }; + }, []); const togglePlay = useCallback(() => { currentVideoPlayerRef.current.setStatusAsync({shouldPlay: !isPlaying}); @@ -103,23 +103,24 @@ function PlaybackContextProvider({children}) { currentPlaybackSpeed, }), [ + updateCurrentlyPlayingURL, currentlyPlayingURL, - duration, - enterFullScreenMode, - isPlaying, originalParent, - pauseVideo, - playVideo, - playbackSpeeds, - position, - seekPosition, sharedElement, + updateSharedElements, togglePlay, + isPlaying, + enterFullScreenMode, updateCurrentVideoPlayerRef, - updateCurrentlyPlayingURL, + position, + updatePosition, + seekPosition, + duration, updateDuration, + playVideo, + pauseVideo, + playbackSpeeds, updatePlaybackSpeed, - updatePosition, currentPlaybackSpeed, ], ); From fd86f6b5fa79eab6e02e05235d63136a763a63a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 30 Oct 2023 15:18:27 +0100 Subject: [PATCH 027/701] fix sharing players state and stroing it bor paused videos --- .../VideoPlayer/VideoPlayerControls.js | 4 +- src/components/VideoPlayer/index.js | 40 ++++++++++++------- .../VideoPlayerContexts/PlaybackContext.js | 28 ++++--------- 3 files changed, 34 insertions(+), 38 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index 53471cb36b1e..bedd3080b5fc 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -1,5 +1,5 @@ import PropTypes from 'prop-types'; -import React, {useEffect} from 'react'; +import React, {useEffect, useState} from 'react'; import {Text, View} from 'react-native'; import Animated, {FadeIn, FadeOut} from 'react-native-reanimated'; import * as Expensicons from '@components/Icon/Expensicons'; @@ -24,7 +24,7 @@ const defaultProps = {}; function VideoPlayerControls({duration, position, url}) { const {togglePlay, isPlaying, seekPosition, enterFullScreenMode, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const {showPopover} = useVideoPopoverMenuContext(); - const [durationFormatted, setDurationFormatted] = React.useState('0:00'); + const [durationFormatted, setDurationFormatted] = useState('0:00'); const isCurrentlySet = currentlyPlayingURL === url; const isCurrentlyPlaying = isCurrentlySet && isPlaying; diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 96570aa32b49..ce5bfeb715a2 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -1,7 +1,9 @@ +/* eslint-disable no-underscore-dangle */ import {ResizeMode, Video} from 'expo-av'; import PropTypes from 'prop-types'; import React, {useCallback, useEffect, useRef, useState} from 'react'; import {View} from 'react-native'; +import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; import useWindowDimensions from '@hooks/useWindowDimensions'; import addEncryptedAuthTokenToURL from '@libs/addEncryptedAuthTokenToURL'; @@ -40,8 +42,7 @@ const defaultProps = { function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement}) { const {isSmallScreenWidth} = useWindowDimensions(); - const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, updateCurrentVideoPlayerRef, updateDuration, updatePosition, duration, position, isPlaying} = - usePlaybackContext(); + const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, updateCurrentVideoPlayerRef, currentVideoPlayerRef, updateIsPlaying} = usePlaybackContext(); const [isVideoLoading, setIsVideoLoading] = useState(true); const videoPlayerRef = useRef(null); const videoPlayerElementParentRef = useRef(null); @@ -49,28 +50,35 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const sharedVideoPlayerParentRef = useRef(null); const sourceURLWithAuth = addEncryptedAuthTokenToURL(url); + const [duration, setDuration] = useState(0); + const [position, setPosition] = useState(0); + const onReadyForDisplay = useCallback( (e) => { - if (!isVideoLoading) { - return; - } - setIsVideoLoading(false); onVideoLoaded(e); }, - [isVideoLoading, onVideoLoaded], + [onVideoLoaded], ); const onPlaybackStatusUpdate = useCallback( (e) => { - if (!isPlaying) { - return; - } - updateDuration(e.durationMillis || 0); - updatePosition(e.positionMillis || 0); + updateIsPlaying(e.isPlaying); + setIsVideoLoading(Number.isNaN(e.durationMillis)); + setDuration(e.durationMillis || 0); + setPosition(e.positionMillis || 0); }, - [isPlaying, updateDuration, updatePosition], + [updateIsPlaying], ); + const bindFunctions = useCallback(() => { + currentVideoPlayerRef.current._onPlaybackStatusUpdate = onPlaybackStatusUpdate; + + // update states after binding + currentVideoPlayerRef.current.getStatusAsync().then((status) => { + onPlaybackStatusUpdate(status); + }); + }, [currentVideoPlayerRef, onPlaybackStatusUpdate]); + // update shared video elements useEffect(() => { if (shouldUseSharedVideoElement || url !== currentlyPlayingURL) { @@ -89,6 +97,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const newParentRef = sharedVideoPlayerParentRef.current; if (currentlyPlayingURL === url) { newParentRef.appendChild(sharedElement); + bindFunctions(); } return () => { if (!originalParent && !newParentRef.childNodes[0]) { @@ -96,7 +105,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty } originalParent.appendChild(sharedElement); }; - }, [currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); + }, [bindFunctions, currentVideoPlayerRef, currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); return ( @@ -131,13 +140,14 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty resizeMode={resizeMode} isLooping={isLooping} onReadyForDisplay={onReadyForDisplay} - onLoadStart={() => setIsVideoLoading(true)} onPlaybackStatusUpdate={onPlaybackStatusUpdate} /> )} + {isVideoLoading && } + [0.25, 0.5, 1, 1.5, 2], []); const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); const currentVideoPlayerRef = useRef(null); + const updateIsPlaying = useCallback((isVideoPlaying) => { + setIsPlaying(isVideoPlaying); + }, []); + const pauseVideo = useCallback(() => { currentVideoPlayerRef.current.setStatusAsync({shouldPlay: false}); - setIsPlaying(false); }, [currentVideoPlayerRef]); const playVideo = useCallback(() => { currentVideoPlayerRef.current.setStatusAsync({shouldPlay: true}); - setIsPlaying(true); }, [currentVideoPlayerRef]); const updateCurrentlyPlayingURL = useCallback( @@ -59,10 +59,6 @@ function PlaybackContextProvider({children}) { currentVideoPlayerRef.current.presentFullscreenPlayer(); }, [currentVideoPlayerRef]); - const updatePosition = useCallback((newPosition) => { - setPosition(newPosition); - }, []); - const seekPosition = useCallback( (newPosition) => { currentVideoPlayerRef.current.setStatusAsync({positionMillis: newPosition}); @@ -70,10 +66,6 @@ function PlaybackContextProvider({children}) { [currentVideoPlayerRef], ); - const updateDuration = useCallback((newDuration) => { - setDuration(newDuration); - }, []); - const updatePlaybackSpeed = useCallback((newPlaybackSpeed) => { currentVideoPlayerRef.current.setStatusAsync({rate: newPlaybackSpeed}); setCurrentPlaybackSpeed(newPlaybackSpeed); @@ -91,16 +83,13 @@ function PlaybackContextProvider({children}) { enterFullScreenMode, currentVideoPlayerRef, updateCurrentVideoPlayerRef, - position, - updatePosition, seekPosition, - duration, - updateDuration, playVideo, pauseVideo, playbackSpeeds, updatePlaybackSpeed, currentPlaybackSpeed, + updateIsPlaying, }), [ updateCurrentlyPlayingURL, @@ -112,16 +101,13 @@ function PlaybackContextProvider({children}) { isPlaying, enterFullScreenMode, updateCurrentVideoPlayerRef, - position, - updatePosition, seekPosition, - duration, - updateDuration, playVideo, pauseVideo, playbackSpeeds, updatePlaybackSpeed, currentPlaybackSpeed, + updateIsPlaying, ], ); return {children}; From 692acb6f8dfc460322513ad3bb3f2ffc1ba08796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 30 Oct 2023 16:20:49 +0100 Subject: [PATCH 028/701] fix fullscreen button for in-chat players --- src/components/VideoPlayer/ProgressBar.js | 10 ++--- .../VideoPlayer/VideoPlayerControls.js | 39 ++++++++++++++----- src/components/VideoPlayer/index.js | 25 +++++++----- .../VideoPlayerContexts/PlaybackContext.js | 25 +++--------- 4 files changed, 54 insertions(+), 45 deletions(-) diff --git a/src/components/VideoPlayer/ProgressBar.js b/src/components/VideoPlayer/ProgressBar.js index 9893e1e8320f..4dcd7bc346ab 100644 --- a/src/components/VideoPlayer/ProgressBar.js +++ b/src/components/VideoPlayer/ProgressBar.js @@ -11,12 +11,14 @@ const propTypes = { position: PropTypes.number.isRequired, seekPosition: PropTypes.func.isRequired, + + togglePlayCurrentVideo: PropTypes.func.isRequired, }; const defaultProps = {}; -function ProgressBar({duration, position, seekPosition}) { - const {pauseVideo, playVideo} = usePlaybackContext(); +function ProgressBar({togglePlayCurrentVideo, duration, position, seekPosition}) { + const {pauseVideo} = usePlaybackContext(); const [sliderWidth, setSliderWidth] = useState(1); const progressWidth = useSharedValue(0); @@ -26,7 +28,6 @@ function ProgressBar({duration, position, seekPosition}) { const pan = Gesture.Pan() .onBegin(() => { - console.log('onStart'); pauseVideo(); }) .onChange((event) => { @@ -34,8 +35,7 @@ function ProgressBar({duration, position, seekPosition}) { runOnJS(seekPosition)((event.x / sliderWidth) * duration); }) .onEnd(() => { - console.log('onEnd'); - playVideo(); + togglePlayCurrentVideo(); }); useEffect(() => { diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index bedd3080b5fc..396c7857c394 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -1,5 +1,5 @@ import PropTypes from 'prop-types'; -import React, {useEffect, useState} from 'react'; +import React, {useCallback, useEffect, useState} from 'react'; import {Text, View} from 'react-native'; import Animated, {FadeIn, FadeOut} from 'react-native-reanimated'; import * as Expensicons from '@components/Icon/Expensicons'; @@ -17,18 +17,42 @@ const propTypes = { position: PropTypes.number.isRequired, url: PropTypes.string.isRequired, + + // eslint-disable-next-line react/forbid-prop-types + videoPlayerRef: PropTypes.object.isRequired, }; const defaultProps = {}; -function VideoPlayerControls({duration, position, url}) { - const {togglePlay, isPlaying, seekPosition, enterFullScreenMode, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); +function VideoPlayerControls({duration, position, url, videoPlayerRef}) { + const {togglePlay, isPlaying, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const {showPopover} = useVideoPopoverMenuContext(); const [durationFormatted, setDurationFormatted] = useState('0:00'); const isCurrentlySet = currentlyPlayingURL === url; const isCurrentlyPlaying = isCurrentlySet && isPlaying; + const togglePlayCurrentVideo = useCallback(() => { + if (!isCurrentlySet) { + updateCurrentlyPlayingURL(url); + } else { + togglePlay(); + } + }, [isCurrentlySet, togglePlay, updateCurrentlyPlayingURL, url]); + + const enterFullScreenMode = useCallback(() => { + console.log('XXX'); + updateCurrentlyPlayingURL(url); + videoPlayerRef.current.presentFullscreenPlayer(); + }, [updateCurrentlyPlayingURL, url, videoPlayerRef]); + + const seekPosition = useCallback( + (newPosition) => { + videoPlayerRef.current.setStatusAsync({positionMillis: newPosition}); + }, + [videoPlayerRef], + ); + useEffect(() => { setDurationFormatted(convertMillisecondsToTime(duration)); }, [duration]); @@ -56,13 +80,7 @@ function VideoPlayerControls({duration, position, url}) { src={isCurrentlyPlaying ? Expensicons.Pause : Expensicons.Play} fill="white" accessibilityLabel="play/pause" - onPress={() => { - if (!isCurrentlySet) { - updateCurrentlyPlayingURL(url); - } else { - togglePlay(); - } - }} + onPress={togglePlayCurrentVideo} /> {convertMillisecondsToTime(position)} / @@ -90,6 +108,7 @@ function VideoPlayerControls({duration, position, url}) { duration={duration} position={position} seekPosition={seekPosition} + togglePlayCurrentVideo={togglePlayCurrentVideo} /> diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index ce5bfeb715a2..7b04bb2e9e61 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -43,15 +43,16 @@ const defaultProps = { function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement}) { const {isSmallScreenWidth} = useWindowDimensions(); const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, updateCurrentVideoPlayerRef, currentVideoPlayerRef, updateIsPlaying} = usePlaybackContext(); - const [isVideoLoading, setIsVideoLoading] = useState(true); + const [duration, setDuration] = useState(0); + const [position, setPosition] = useState(0); + const [isLoading, setIsLoading] = useState(true); const videoPlayerRef = useRef(null); const videoPlayerElementParentRef = useRef(null); const videoPlayerElementRef = useRef(null); const sharedVideoPlayerParentRef = useRef(null); const sourceURLWithAuth = addEncryptedAuthTokenToURL(url); - const [duration, setDuration] = useState(0); - const [position, setPosition] = useState(0); + console.log('X'); const onReadyForDisplay = useCallback( (e) => { @@ -63,7 +64,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const onPlaybackStatusUpdate = useCallback( (e) => { updateIsPlaying(e.isPlaying); - setIsVideoLoading(Number.isNaN(e.durationMillis)); + setIsLoading(Number.isNaN(e.durationMillis)); // when video is ready to display duration is not NaN setDuration(e.durationMillis || 0); setPosition(e.positionMillis || 0); }, @@ -95,6 +96,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty } const newParentRef = sharedVideoPlayerParentRef.current; + videoPlayerRef.current = currentVideoPlayerRef.current; if (currentlyPlayingURL === url) { newParentRef.appendChild(sharedElement); bindFunctions(); @@ -146,13 +148,16 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty )} - {isVideoLoading && } + {isLoading && } - + {!isLoading && ( + + )} ); } diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index 3dc71cd3d010..443bf512cde2 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -27,6 +27,11 @@ function PlaybackContextProvider({children}) { currentVideoPlayerRef.current.setStatusAsync({shouldPlay: true}); }, [currentVideoPlayerRef]); + const togglePlay = useCallback(() => { + currentVideoPlayerRef.current.setStatusAsync({shouldPlay: !isPlaying}); + setIsPlaying(!isPlaying); + }, [currentVideoPlayerRef, isPlaying]); + const updateCurrentlyPlayingURL = useCallback( (url) => { if (currentlyPlayingURL && url !== currentlyPlayingURL) { @@ -50,22 +55,6 @@ function PlaybackContextProvider({children}) { setSharedElement(child); }, []); - const togglePlay = useCallback(() => { - currentVideoPlayerRef.current.setStatusAsync({shouldPlay: !isPlaying}); - setIsPlaying(!isPlaying); - }, [currentVideoPlayerRef, isPlaying]); - - const enterFullScreenMode = useCallback(() => { - currentVideoPlayerRef.current.presentFullscreenPlayer(); - }, [currentVideoPlayerRef]); - - const seekPosition = useCallback( - (newPosition) => { - currentVideoPlayerRef.current.setStatusAsync({positionMillis: newPosition}); - }, - [currentVideoPlayerRef], - ); - const updatePlaybackSpeed = useCallback((newPlaybackSpeed) => { currentVideoPlayerRef.current.setStatusAsync({rate: newPlaybackSpeed}); setCurrentPlaybackSpeed(newPlaybackSpeed); @@ -80,10 +69,8 @@ function PlaybackContextProvider({children}) { updateSharedElements, togglePlay, isPlaying, - enterFullScreenMode, currentVideoPlayerRef, updateCurrentVideoPlayerRef, - seekPosition, playVideo, pauseVideo, playbackSpeeds, @@ -99,9 +86,7 @@ function PlaybackContextProvider({children}) { updateSharedElements, togglePlay, isPlaying, - enterFullScreenMode, updateCurrentVideoPlayerRef, - seekPosition, playVideo, pauseVideo, playbackSpeeds, From 87e63a29de5a501b2dcd97951ecfa087430770ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 30 Oct 2023 16:21:26 +0100 Subject: [PATCH 029/701] remove logs --- src/components/VideoPlayer/VideoPlayerControls.js | 1 - src/components/VideoPlayer/index.js | 2 -- 2 files changed, 3 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index 396c7857c394..b6337bcd60de 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -41,7 +41,6 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { }, [isCurrentlySet, togglePlay, updateCurrentlyPlayingURL, url]); const enterFullScreenMode = useCallback(() => { - console.log('XXX'); updateCurrentlyPlayingURL(url); videoPlayerRef.current.presentFullscreenPlayer(); }, [updateCurrentlyPlayingURL, url, videoPlayerRef]); diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 7b04bb2e9e61..8a496e5e7e0f 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -52,8 +52,6 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const sharedVideoPlayerParentRef = useRef(null); const sourceURLWithAuth = addEncryptedAuthTokenToURL(url); - console.log('X'); - const onReadyForDisplay = useCallback( (e) => { onVideoLoaded(e); From fad120e1fe5c8d96751f9e4b6dcc76f688ff2e89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 2 Nov 2023 17:10:38 +0100 Subject: [PATCH 030/701] fix styles --- assets/images/fullscreen.svg | 2 +- assets/images/meter.svg | 2 +- assets/images/mute.svg | 2 +- assets/images/pause.svg | 2 +- assets/images/play.svg | 4 +- assets/images/volume-high.svg | 2 +- assets/images/volume-low.svg | 2 +- ios/Podfile.lock | 4 +- src/components/VideoPlayer/IconButton.js | 5 +- src/components/VideoPlayer/ProgressBar.js | 5 +- .../VideoPlayer/VideoPlayerControls.js | 52 ++++--- src/components/VideoPlayer/index.js | 2 +- .../VideoPlayerContexts/VolumeContext.js | 2 +- src/components/VolumeButton/index.js | 10 +- src/styles/styles.ts | 80 +++++++++++ tsconfig.json | 134 +++++++++++------- 16 files changed, 217 insertions(+), 93 deletions(-) diff --git a/assets/images/fullscreen.svg b/assets/images/fullscreen.svg index 740d0e2eec04..ed4667fe0951 100644 --- a/assets/images/fullscreen.svg +++ b/assets/images/fullscreen.svg @@ -1,4 +1,4 @@ - + diff --git a/assets/images/meter.svg b/assets/images/meter.svg index 08800fe101a8..671f2a15e3c6 100644 --- a/assets/images/meter.svg +++ b/assets/images/meter.svg @@ -1,3 +1,3 @@ - + diff --git a/assets/images/mute.svg b/assets/images/mute.svg index 02a89197e4c1..e123c36ec789 100644 --- a/assets/images/mute.svg +++ b/assets/images/mute.svg @@ -1,4 +1,4 @@ - + diff --git a/assets/images/pause.svg b/assets/images/pause.svg index bdb61475ed9a..1a831956b6d3 100644 --- a/assets/images/pause.svg +++ b/assets/images/pause.svg @@ -1,4 +1,4 @@ - + diff --git a/assets/images/play.svg b/assets/images/play.svg index 5fca1e06db45..098a4907d2d7 100644 --- a/assets/images/play.svg +++ b/assets/images/play.svg @@ -1,3 +1,5 @@ - + + + diff --git a/assets/images/volume-high.svg b/assets/images/volume-high.svg index 091962e77eda..d83e4dbce821 100644 --- a/assets/images/volume-high.svg +++ b/assets/images/volume-high.svg @@ -1,4 +1,4 @@ - + diff --git a/assets/images/volume-low.svg b/assets/images/volume-low.svg index b49c12d5f3d3..1575d657be96 100644 --- a/assets/images/volume-low.svg +++ b/assets/images/volume-low.svg @@ -1,4 +1,4 @@ - + diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 701d7ae6c212..3416fd76e932 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -766,7 +766,7 @@ PODS: - Firebase/Performance (= 8.8.0) - React-Core - RNFBApp - - RNFlashList (1.6.1): + - RNFlashList (1.6.2): - React-Core - RNFS (2.20.0): - React-Core @@ -1307,7 +1307,7 @@ SPEC CHECKSUMS: RNFBApp: 729c0666395b1953198dc4a1ec6deb8fbe1c302e RNFBCrashlytics: 2061ca863e8e2fa1aae9b12477d7dfa8e88ca0f9 RNFBPerf: 389914cda4000fe0d996a752532a591132cbf3f9 - RNFlashList: 236646d48f224a034f35baa0242e1b77db063b1e + RNFlashList: 1983f915ae34e9253e413f31387959590d102f5e RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 RNGestureHandler: dec4645026e7401a0899f2846d864403478ff6a5 RNGoogleSignin: ccaa4a81582cf713eea562c5dd9dc1961a715fd0 diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js index 6958cdc5348d..4ba75417287c 100644 --- a/src/components/VideoPlayer/IconButton.js +++ b/src/components/VideoPlayer/IconButton.js @@ -3,6 +3,8 @@ import React from 'react'; import Hoverable from '@components/Hoverable'; import Icon from '@components/Icon'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; +import colors from '@styles/colors'; +import styles from '@styles/styles'; import CONST from '@src/CONST'; const propTypes = { @@ -33,11 +35,12 @@ function IconButton({src, fill, onPress, style, accessibilityLabel}) { accessibilityLabel={accessibilityLabel} accessibilityRole={CONST.ACCESSIBILITY_ROLE.BUTTON} onPress={onPress} - style={[{padding: 5, borderRadius: 4, backgroundColor: isHovered ? '#085239' : 'transparent'}, style]} + style={[styles.videoIconButton, {backgroundColor: isHovered ? colors.green700 : colors.transparent}, style]} > )} diff --git a/src/components/VideoPlayer/ProgressBar.js b/src/components/VideoPlayer/ProgressBar.js index 4dcd7bc346ab..4336d2fa581d 100644 --- a/src/components/VideoPlayer/ProgressBar.js +++ b/src/components/VideoPlayer/ProgressBar.js @@ -3,6 +3,7 @@ import React, {useEffect, useState} from 'react'; import {Gesture, GestureDetector} from 'react-native-gesture-handler'; import Animated, {runOnJS, useAnimatedStyle, useSharedValue} from 'react-native-reanimated'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; +import styles from '@styles/styles'; const propTypes = { // eslint-disable-next-line react/forbid-prop-types @@ -47,10 +48,10 @@ function ProgressBar({togglePlayCurrentVideo, duration, position, seekPosition}) return ( - + ); diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index b6337bcd60de..a2c289076553 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -1,11 +1,13 @@ import PropTypes from 'prop-types'; import React, {useCallback, useEffect, useState} from 'react'; -import {Text, View} from 'react-native'; -import Animated, {FadeIn, FadeOut} from 'react-native-reanimated'; +import {View} from 'react-native'; +import Animated from 'react-native-reanimated'; import * as Expensicons from '@components/Icon/Expensicons'; +import Text from '@components/Text'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; import {useVideoPopoverMenuContext} from '@components/VideoPlayerContexts/VideoPopoverMenuContext'; import VolumeButton from '@components/VolumeButton'; +import styles from '@styles/styles'; import IconButton from './IconButton'; import ProgressBar from './ProgressBar'; import convertMillisecondsToTime from './utils'; @@ -28,6 +30,7 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { const {togglePlay, isPlaying, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const {showPopover} = useVideoPopoverMenuContext(); const [durationFormatted, setDurationFormatted] = useState('0:00'); + const [shouldShowTime, setShouldShowTime] = useState(false); const isCurrentlySet = currentlyPlayingURL === url; const isCurrentlyPlaying = isCurrentlySet && isPlaying; @@ -40,6 +43,10 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { } }, [isCurrentlySet, togglePlay, updateCurrentlyPlayingURL, url]); + const onLayout = (e) => { + setShouldShowTime(e.nativeEvent.layout.width > 250); + }; + const enterFullScreenMode = useCallback(() => { updateCurrentlyPlayingURL(url); videoPlayerRef.current.presentFullscreenPlayer(); @@ -58,51 +65,42 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { return ( - - + + - {convertMillisecondsToTime(position)} - / - {durationFormatted} + {shouldShowTime && ( + + {convertMillisecondsToTime(position)} + / + {durationFormatted} + + )} - - + + showPopover(e.nativeEvent.pageY - 30, e.nativeEvent.pageX)} /> - + {(isHovered) => ( - + {isHovered && ( - + - + @@ -61,6 +62,7 @@ function ProgressBar({style}) { )} diff --git a/src/styles/styles.ts b/src/styles/styles.ts index 589c3756042f..7b7cf8fc126a 100644 --- a/src/styles/styles.ts +++ b/src/styles/styles.ts @@ -4027,6 +4027,86 @@ const styles = (theme: ThemeDefault) => singleOptionSelectorCircle: { borderColor: theme.icon, }, + + videoPlayerControlsContainer: { + position: 'absolute', + bottom: 8, + left: 8, + right: 8, + backgroundColor: '#061B09CC', + height: 48, + borderRadius: 8, + flexDirection: 'column', + overflow: 'visible', + padding: 4, + paddingBottom: 8, + }, + + videoPlayerControlsButtonContainer: { + height: 24, + marginBottom: 8, + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'space-between', + }, + + progressBarOutline: { + width: '100%', + height: 5, + backgroundColor: 'gray', + borderRadius: 10, + }, + + progressBarFill: { + height: '100%', + backgroundColor: 'white', + borderRadius: 10, + }, + + videoPlayerControlsRow: { + flexDirection: 'row', + alignItems: 'center', + }, + + videoPlayerText: { + textAlign: 'center', + fontSize: 13, + fontWeight: '700', + lineHeight: 16, + }, + + volumeSliderContainer: { + position: 'absolute', + left: 0, + bottom: 0, + width: '100%', + height: 100, + alignItems: 'center', + borderRadius: 4, + backgroundColor: '#085239', + }, + + volumeSliderOverlay: { + width: 4, + height: 60, + backgroundColor: 'gray', + borderRadius: 10, + marginTop: 10, + alignItems: 'end', + justifyContent: 'flex-end', + }, + + volumeSliderFill: { + width: 4, + height: 20, + backgroundColor: 'white', + borderRadius: 10, + }, + + videoIconButton: { + padding: 4, + borderRadius: 4, + }, } satisfies Styles); // For now we need to export the styles function that takes the theme as an argument diff --git a/tsconfig.json b/tsconfig.json index 151087fb1321..d0f9919c4565 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,50 +1,88 @@ { - "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "types": ["react-native", "jest"], - "lib": [ - "DOM", - "es2019", - "es2020.bigint", - "es2020.date", - "es2020.number", - "es2020.promise", - "es2020.string", - "es2020.symbol.wellknown", - "es2021.promise", - "es2021.string", - "es2021.weakref", - "es2022.array", - "es2022.object", - "es2022.string" - ], - "allowJs": true, - "checkJs": false, - "jsx": "react-native", - "noEmit": true, - "isolatedModules": true, - "strict": true, - "moduleResolution": "node", - "resolveJsonModule": true, - "allowSyntheticDefaultImports": true, - "skipLibCheck": true, - "incremental": true, - "baseUrl": ".", - "paths": { - "@assets/*": ["./assets/*"], - "@components/*": ["./src/components/*"], - "@hooks/*": ["./src/hooks/*"], - "@libs/*": ["./src/libs/*"], - "@navigation/*": ["./src/libs/Navigation/*"], - "@pages/*": ["./src/pages/*"], - "@styles/*": ["./src/styles/*"], - // This path is provide alias for files like `ONYXKEYS` and `CONST`. - "@src/*": ["./src/*"], - "@userActions/*": ["./src/libs/actions/*"] - } - }, - "exclude": ["**/node_modules/*", "**/dist/*", ".github/actions/**/index.js", "**/docs/*"], - "include": ["src", "desktop", "web", "docs", "assets", "config", "tests", "jest", "__mocks__", ".github/**/*", ".storybook/**/*"] + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "target": "esnext", + "module": "commonjs", + "types": [ + "react-native", + "jest" + ], + "lib": [ + "DOM", + "es2019", + "es2020.bigint", + "es2020.date", + "es2020.number", + "es2020.promise", + "es2020.string", + "es2020.symbol.wellknown", + "es2021.promise", + "es2021.string", + "es2021.weakref", + "es2022.array", + "es2022.object", + "es2022.string" + ], + "allowJs": true, + "checkJs": false, + "jsx": "react-native", + "noEmit": true, + "isolatedModules": true, + "strict": true, + "moduleResolution": "node", + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "skipLibCheck": true, + "incremental": true, + "baseUrl": ".", + "paths": { + "@assets/*": [ + "./assets/*" + ], + "@components/*": [ + "./src/components/*" + ], + "@hooks/*": [ + "./src/hooks/*" + ], + "@libs/*": [ + "./src/libs/*" + ], + "@navigation/*": [ + "./src/libs/Navigation/*" + ], + "@pages/*": [ + "./src/pages/*" + ], + "@styles/*": [ + "./src/styles/*" + ], + "@src/*": [ + "./src/*" + ], + "@userActions/*": [ + "./src/libs/actions/*" + ] + } + }, + "exclude": [ + "**/node_modules/*", + "**/dist/*", + ".github/actions/**/index.js", + "**/docs/*" + ], + "include": [ + "src", + "desktop", + "web", + "docs", + "assets", + "config", + "tests", + "jest", + "__mocks__", + ".github/**/*", + ".storybook/**/*" + ], + "extends": "expo/tsconfig.base" } From 993c213bbd2120ba3a54fb6f04c5f2941298d5f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 3 Nov 2023 10:24:37 +0100 Subject: [PATCH 031/701] fix colors --- src/components/VolumeButton/index.js | 3 ++- src/styles/styles.ts | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js index a8bb354d2058..d1ec0a365d63 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VolumeButton/index.js @@ -7,6 +7,7 @@ import Hoverable from '@components/Hoverable'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import {useVolumeContext} from '@components/VideoPlayerContexts/VolumeContext'; +import colors from '@styles/colors'; import styles from '@styles/styles'; const propTypes = { @@ -61,7 +62,7 @@ function ProgressBar({style}) { diff --git a/src/styles/styles.ts b/src/styles/styles.ts index 7b7cf8fc126a..66b1d04ed5b7 100644 --- a/src/styles/styles.ts +++ b/src/styles/styles.ts @@ -4053,13 +4053,13 @@ const styles = (theme: ThemeDefault) => progressBarOutline: { width: '100%', height: 5, - backgroundColor: 'gray', borderRadius: 10, + backgroundColor: '#FFFFFF51', }, progressBarFill: { height: '100%', - backgroundColor: 'white', + backgroundColor: colors.white, borderRadius: 10, }, @@ -4083,13 +4083,13 @@ const styles = (theme: ThemeDefault) => height: 100, alignItems: 'center', borderRadius: 4, - backgroundColor: '#085239', + backgroundColor: colors.green700, }, volumeSliderOverlay: { width: 4, height: 60, - backgroundColor: 'gray', + backgroundColor: '#FFFFFF51', borderRadius: 10, marginTop: 10, alignItems: 'end', @@ -4099,7 +4099,7 @@ const styles = (theme: ThemeDefault) => volumeSliderFill: { width: 4, height: 20, - backgroundColor: 'white', + backgroundColor: colors.white, borderRadius: 10, }, From e144f71038cf4f876a6fd10de64f4e50f58d9a08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 3 Nov 2023 11:07:03 +0100 Subject: [PATCH 032/701] fix extractAttachmentsFromReport --- .../AttachmentCarousel/extractAttachmentsFromReport.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js index 38f03b3ef8f6..365ddb258c6c 100644 --- a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js +++ b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js @@ -24,7 +24,7 @@ function extractAttachmentsFromReport(report, reportActions) { if (isVideo) { const splittedUrl = attribs['data-expensify-source'].split('/'); attachments.unshift({ - reportActionID: {name: null}, + reportActionID: null, source: tryResolveUrlFromApiRoot(attribs['data-expensify-source']), isAuthTokenRequired: Boolean(attribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE]), file: {name: splittedUrl[splittedUrl.length - 1]}, From 7087f1d7ee28291d825a5addf51fb7dd769d4368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 3 Nov 2023 11:09:01 +0100 Subject: [PATCH 033/701] fix GH worklet errors --- src/components/VideoPlayer/ProgressBar.js | 4 ++-- src/components/VolumeButton/index.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/VideoPlayer/ProgressBar.js b/src/components/VideoPlayer/ProgressBar.js index 4336d2fa581d..6bc21b6d997c 100644 --- a/src/components/VideoPlayer/ProgressBar.js +++ b/src/components/VideoPlayer/ProgressBar.js @@ -29,14 +29,14 @@ function ProgressBar({togglePlayCurrentVideo, duration, position, seekPosition}) const pan = Gesture.Pan() .onBegin(() => { - pauseVideo(); + runOnJS(pauseVideo)(); }) .onChange((event) => { progressWidth.value = (event.x / sliderWidth) * 100; runOnJS(seekPosition)((event.x / sliderWidth) * duration); }) .onEnd(() => { - togglePlayCurrentVideo(); + runOnJS(togglePlayCurrentVideo)(); }); useEffect(() => { diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js index d1ec0a365d63..e1b3245abb2c 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VolumeButton/index.js @@ -2,7 +2,7 @@ import PropTypes from 'prop-types'; import React, {useState} from 'react'; import {View} from 'react-native'; import {Gesture, GestureDetector} from 'react-native-gesture-handler'; -import Animated, {useAnimatedStyle} from 'react-native-reanimated'; +import Animated, {runOnJS, useAnimatedStyle} from 'react-native-reanimated'; import Hoverable from '@components/Hoverable'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; @@ -38,7 +38,7 @@ function ProgressBar({style}) { const pan = Gesture.Pan().onChange((event) => { const val = Math.floor((1 - event.y / sliderHeight) * 100) / 100; volume.value = Math.min(Math.max(val, 0), 1); - updateVolume(volume.value); + runOnJS(updateVolume)(volume.value); }); const progressBarStyle = useAnimatedStyle(() => ({height: `${volume.value * 100}%`})); From 0d0974805008f240170e0afc900ee5fe25bd97c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 3 Nov 2023 15:22:28 +0100 Subject: [PATCH 034/701] change thumbnail resizing strategy for all attachments --- src/components/ThumbnailImage.js | 60 +++++----------------- src/components/VideoPlayerPreview/index.js | 17 ++---- src/hooks/useThumbnailDimensions.ts | 17 ++++++ 3 files changed, 34 insertions(+), 60 deletions(-) create mode 100644 src/hooks/useThumbnailDimensions.ts diff --git a/src/components/ThumbnailImage.js b/src/components/ThumbnailImage.js index bbd5e27accc1..5be1de4d2268 100644 --- a/src/components/ThumbnailImage.js +++ b/src/components/ThumbnailImage.js @@ -1,11 +1,8 @@ -import lodashClamp from 'lodash/clamp'; import PropTypes from 'prop-types'; import React, {useCallback, useState} from 'react'; -import {Dimensions, View} from 'react-native'; -import useWindowDimensions from '@hooks/useWindowDimensions'; -import * as DeviceCapabilities from '@libs/DeviceCapabilities'; +import {View} from 'react-native'; +import useThumbnailDimensions from '@hooks/useThumbnailDimensions'; import styles from '@styles/styles'; -import * as StyleUtils from '@styles/StyleUtils'; import ImageWithSizeCalculation from './ImageWithSizeCalculation'; const propTypes = { @@ -36,61 +33,28 @@ const defaultProps = { shouldDynamicallyResize: true, }; -/** - * Compute the thumbnails width and height given original image dimensions. - * - * @param {Number} width - Width of the original image. - * @param {Number} height - Height of the original image. - * @param {Number} windowHeight - Height of the device/browser window. - * @returns {Object} - Object containing thumbnails width and height. - */ - -function calculateThumbnailImageSize(width, height, windowHeight) { - if (!width || !height) { - return {}; - } - // Width of the thumbnail works better as a constant than it does - // a percentage of the screen width since it is relative to each screen - // Note: Clamp minimum width 40px to support touch device - let thumbnailScreenWidth = lodashClamp(width, 40, 250); - const imageHeight = height / (width / thumbnailScreenWidth); - // On mWeb, when soft keyboard opens, window height changes, making thumbnail height inconsistent. We use screen height instead. - const screenHeight = DeviceCapabilities.canUseTouchScreen() ? Dimensions.get('screen').height : windowHeight; - let thumbnailScreenHeight = lodashClamp(imageHeight, 40, screenHeight * 0.4); - const aspectRatio = height / width; - - // If thumbnail height is greater than its width, then the image is portrait otherwise landscape. - // For portrait images, we need to adjust the width of the image to keep the aspect ratio and vice-versa. - if (thumbnailScreenHeight > thumbnailScreenWidth) { - thumbnailScreenWidth = Math.round(thumbnailScreenHeight * (1 / aspectRatio)); - } else { - thumbnailScreenHeight = Math.round(thumbnailScreenWidth * aspectRatio); - } - return {thumbnailWidth: Math.max(40, thumbnailScreenWidth), thumbnailHeight: Math.max(40, thumbnailScreenHeight)}; -} - function ThumbnailImage(props) { - const {windowHeight} = useWindowDimensions(); - const initialDimensions = calculateThumbnailImageSize(props.imageWidth, props.imageHeight, windowHeight); - const [imageWidth, setImageWidth] = useState(initialDimensions.thumbnailWidth); - const [imageHeight, setImageHeight] = useState(initialDimensions.thumbnailHeight); + const [imageWidth, setImageWidth] = useState(props.imageWidth); + const [imageHeight, setImageHeight] = useState(props.imageHeight); + const {thumbnailDimensionsStyles} = useThumbnailDimensions(imageWidth, imageHeight); /** * Update the state with the computed thumbnail sizes. * * @param {{ width: number, height: number }} Params - width and height of the original image. */ - const updateImageSize = useCallback( ({width, height}) => { - const {thumbnailWidth, thumbnailHeight} = calculateThumbnailImageSize(width, height, windowHeight); - setImageWidth(thumbnailWidth); - setImageHeight(thumbnailHeight); + if (!props.shouldDynamicallyResize) { + return; + } + setImageWidth(width); + setImageHeight(height); }, - [windowHeight], + [props.shouldDynamicallyResize], ); - const sizeStyles = props.shouldDynamicallyResize ? [StyleUtils.getWidthAndHeightStyle(imageWidth, imageHeight)] : [styles.w100, styles.h100]; + const sizeStyles = props.shouldDynamicallyResize ? [thumbnailDimensionsStyles] : [styles.w100, styles.h100]; return ( diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index 5e591eba530c..0d9a2f3d12c1 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -1,10 +1,11 @@ import PropTypes from 'prop-types'; -import React, {useEffect, useMemo, useState} from 'react'; +import React, {useEffect, useState} from 'react'; import {View} from 'react-native'; import * as Expensicons from '@components/Icon/Expensicons'; import VideoPlayer from '@components/VideoPlayer'; import IconButton from '@components/VideoPlayer/IconButton'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; +import useThumbnailDimensions from '@hooks/useThumbnailDimensions'; import useWindowDimensions from '@hooks/useWindowDimensions'; import styles from '@styles/styles'; import VideoPlayerThumbnail from './VideoPlayerThumbnail'; @@ -31,16 +32,8 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, const {currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const {isSmallScreenWidth} = useWindowDimensions(); const [isThumbnail, setIsThumbnail] = useState(true); - const [measuredDimenstions, setMeasuredDimenstions] = useState(null); - - const videoStyles = useMemo(() => { - const {width, height} = measuredDimenstions || videoDimensions; - const aspectRatio = width / height; - if (width > height) { - return {width: 350, aspectRatio}; - } - return {height: 350, aspectRatio}; - }, [videoDimensions, measuredDimenstions]); + const [measuredDimenstions, setMeasuredDimenstions] = useState(videoDimensions); + const {thumbnailDimensionsStyles} = useThumbnailDimensions(measuredDimenstions.width, measuredDimenstions.height); const onVideoLoaded = (e) => { setMeasuredDimenstions({width: e.srcElement.videoWidth, height: e.srcElement.videoHeight}); @@ -61,7 +54,7 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, }, [currentlyPlayingURL, updateCurrentlyPlayingURL, videoUrl]); return ( - + {isSmallScreenWidth || isThumbnail ? ( { + const aspectRatio = width / height; + if (width > height) { + return {width: fixedDimenstion, aspectRatio}; + } + return {height: fixedDimenstion, aspectRatio}; + }, [width, height, fixedDimenstion]); + + return {thumbnailDimensionsStyles}; +} From 21689f8c0897c01b267cfd10d01d8c8a33f29bc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 3 Nov 2023 16:43:21 +0100 Subject: [PATCH 035/701] align thumbnail styles with figma --- assets/images/play.svg | 6 +-- src/components/VideoPlayer/index.js | 2 +- .../VideoPlayerThumbnail.js | 52 +++++++++++++------ src/components/VideoPlayerPreview/index.js | 6 +-- src/styles/styles.ts | 36 +++++++++++++ 5 files changed, 78 insertions(+), 24 deletions(-) diff --git a/assets/images/play.svg b/assets/images/play.svg index 098a4907d2d7..db378eb6a4b3 100644 --- a/assets/images/play.svg +++ b/assets/images/play.svg @@ -1,5 +1,3 @@ - - - - + + \ No newline at end of file diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 576f9a874b10..31e291462957 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -146,7 +146,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty )} - {isLoading && } + {isLoading && } {!isLoading && ( {}; return ( - - - + + {thumbnailUrl && ( + + + + )} + + + + + + ); } diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index 0d9a2f3d12c1..d2f136150448 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -25,7 +25,7 @@ const propTypes = { const defaultProps = { videoDimensions: {width: 1900, height: 1400}, - thumbnailUrl: 'https://d33v4339jhl8k0.cloudfront.net/docs/assets/591c8a010428634b4a33375c/images/5ab4866b2c7d3a56d8873f4c/file-MrylO8jADD.png', + thumbnailUrl: null, }; function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, showModal}) { @@ -54,7 +54,7 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, }, [currentlyPlayingURL, updateCurrentlyPlayingURL, videoUrl]); return ( - + {isSmallScreenWidth || isThumbnail ? ( diff --git a/src/styles/styles.ts b/src/styles/styles.ts index d161d11a969b..50b51fef7e73 100644 --- a/src/styles/styles.ts +++ b/src/styles/styles.ts @@ -191,6 +191,15 @@ const webViewStyles = (theme: ThemeDefault) => ...touchCalloutNone, }, + video: { + borderColor: theme.border, + borderRadius: variables.componentBorderRadiusNormal, + borderWidth: 1, + overflow: 'hidden', + backgroundColor: colors.green800, + ...touchCalloutNone, + }, + p: { marginTop: 0, marginBottom: 0, @@ -4091,6 +4100,33 @@ const styles = (theme: ThemeDefault) => padding: 4, borderRadius: 4, }, + + videoThumbnailContainer: { + width: '100%', + height: '100%', + alignItems: 'center', + justifyContent: 'center', + position: 'absolute', + top: 0, + left: 0, + }, + + videoThumbnailPlayButton: { + backgroundColor: '#061B09CC', + borderRadius: '50%', + width: 72, + height: 72, + alignItems: 'center', + justifyContent: 'center', + }, + + videoExpandButton: { + position: 'absolute', + top: 10, + right: 10, + backgroundColor: '#061B09CC', + borderRadius: 5, + }, } satisfies Styles); // For now we need to export the styles function that takes the theme as an argument From 33d4b261fa54b69c73044b5ef28c0dfd114b31f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 20 Nov 2023 11:21:34 +0100 Subject: [PATCH 036/701] add first part of review changes --- src/CONST.ts | 14 ++++++++++++++ src/components/MenuItem.js | 4 ++-- src/components/PopoverMenu/index.js | 2 +- .../VideoPlayer/VideoPlayerControls.js | 17 +++++++++-------- src/components/VideoPlayer/index.js | 9 ++++----- src/components/VideoPlayer/utils.js | 18 ++++++------------ .../VideoPlayerContexts/PlaybackContext.js | 3 ++- .../VideoPlayerPreview/VideoPlayerThumbnail.js | 3 ++- src/components/VideoPlayerPreview/index.js | 3 +-- src/components/VideoPopoverMenu/index.js | 2 +- src/components/VolumeButton/index.js | 5 ++--- src/components/menuItemPropTypes.js | 2 +- src/hooks/useThumbnailDimensions.ts | 3 ++- src/styles/styles.ts | 4 ++++ 14 files changed, 51 insertions(+), 38 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index 709e9d3bafe2..dacb0762e03b 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -2902,6 +2902,20 @@ const CONST = { LEARN_MORE_LINK: 'https://help.expensify.com/articles/new-expensify/getting-started/Referral-Program', LINK: 'https://join.my.expensify.com', }, + + THUMBNAIL_IMAGE: { + SMALL_SCREEN: { + SIZE: 250, + }, + WIDE_SCREEN: { + SIZE: 350, + }, + }, + + VIDEO_PLAYER: { + POPOVER_Y_OFFSET: -30, + PLAYBACK_SPEEDS: [0.25, 0.5, 1, 1.5, 2], + }, } as const; export default CONST; diff --git a/src/components/MenuItem.js b/src/components/MenuItem.js index 093bc0384e26..c77690c7884d 100644 --- a/src/components/MenuItem.js +++ b/src/components/MenuItem.js @@ -82,7 +82,7 @@ const defaultProps = { shouldShowRightComponent: false, titleWithTooltips: [], shouldCheckActionAllowedOnPress: true, - putLeftPaddingWhenNoIcon: false, + shouldPutLeftPaddingWhenNoIcon: false, }; const MenuItem = React.forwardRef((props, ref) => { @@ -212,7 +212,7 @@ const MenuItem = React.forwardRef((props, ref) => { ]} /> )} - {!props.icon && props.putLeftPaddingWhenNoIcon && ( + {!props.icon && props.shouldPutLeftPaddingWhenNoIcon && ( )} {Boolean(props.icon) && !_.isArray(props.icon) && ( diff --git a/src/components/PopoverMenu/index.js b/src/components/PopoverMenu/index.js index 2b17bc16bd85..0ad1793b58d6 100644 --- a/src/components/PopoverMenu/index.js +++ b/src/components/PopoverMenu/index.js @@ -161,7 +161,7 @@ function PopoverMenu(props) { onPress={() => selectItem(menuIndex)} focused={focusedIndex === menuIndex} shouldShowRightIcon={item.shouldShowRightIcon} - putLeftPaddingWhenNoIcon={item.putLeftPaddingWhenNoIcon} + shouldPutLeftPaddingWhenNoIcon={item.shouldPutLeftPaddingWhenNoIcon} /> ))} diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index a2c289076553..b026ece3b7ad 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -8,6 +8,8 @@ import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContex import {useVideoPopoverMenuContext} from '@components/VideoPlayerContexts/VideoPopoverMenuContext'; import VolumeButton from '@components/VolumeButton'; import styles from '@styles/styles'; +import spacing from '@styles/utilities/spacing'; +import CONST from '@src/CONST'; import IconButton from './IconButton'; import ProgressBar from './ProgressBar'; import convertMillisecondsToTime from './utils'; @@ -72,35 +74,34 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { {shouldShowTime && ( - {convertMillisecondsToTime(position)} + {convertMillisecondsToTime(position)} / - {durationFormatted} + {durationFormatted} )} - + showPopover(e.nativeEvent.pageY - 30, e.nativeEvent.pageX)} + onPress={(e) => showPopover(e.nativeEvent.pageY + CONST.VIDEO_PLAYER.POPOVER_Y_OFFSET, e.nativeEvent.pageX)} /> - + { - if (milliseconds <= 0) { - return '0:00'; // Handle negative input if needed - } - - const totalSeconds = Math.floor(milliseconds / 1000); - const minutes = Math.floor(totalSeconds / 60); - const seconds = totalSeconds % 60; +import {format} from 'date-fns'; - const formattedMinutes = String(minutes); - const formattedSeconds = String(seconds).padStart(2, '0'); - - return `${formattedMinutes}:${formattedSeconds}`; +// Converts milliseconds to 'minutes:seconds' format +const convertMillisecondsToTime = (milliseconds) => { + const date = new Date(milliseconds); + const time = format(date, 'mm:ss'); + return time; }; export default convertMillisecondsToTime; diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index 443bf512cde2..c659460b5b6c 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -1,5 +1,6 @@ import PropTypes from 'prop-types'; import React, {useCallback, useMemo, useRef, useState} from 'react'; +import CONST from '@src/CONST'; const PlaybackContext = React.createContext(null); @@ -10,7 +11,7 @@ function PlaybackContextProvider({children}) { const [isPlaying, setIsPlaying] = useState(false); - const playbackSpeeds = useMemo(() => [0.25, 0.5, 1, 1.5, 2], []); + const playbackSpeeds = useMemo(() => CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS, []); const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); const currentVideoPlayerRef = useRef(null); diff --git a/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js b/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js index 23c034597c3b..7c4d8f4a3b32 100644 --- a/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js +++ b/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js @@ -6,6 +6,7 @@ import * as Expensicons from '@components/Icon/Expensicons'; import ImageWithSizeCalculation from '@components/Image'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; import styles from '@styles/styles'; +import spacing from '@styles/utilities/spacing'; import CONST from '@src/CONST'; const propTypes = { @@ -47,7 +48,7 @@ function VideoPlayerThumbnail({thumbnailUrl, onPress, accessibilityLabel}) { fill="white" width={28} height={28} - additionalStyles={[{marginLeft: 4}]} + additionalStyles={[spacing.ml1]} /> diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index d2f136150448..8343d239bc48 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -65,7 +65,6 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, <> diff --git a/src/components/VideoPopoverMenu/index.js b/src/components/VideoPopoverMenu/index.js index b49a2941e90d..3e00eb1d746e 100644 --- a/src/components/VideoPopoverMenu/index.js +++ b/src/components/VideoPopoverMenu/index.js @@ -22,7 +22,7 @@ function VideoPopoverMenu() { console.log(`${speed}x`); updatePlaybackSpeed(speed); }, - putLeftPaddingWhenNoIcon: true, + shouldPutLeftPaddingWhenNoIcon: true, })); const menuItems = [ diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js index e1b3245abb2c..bf449ba41eab 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VolumeButton/index.js @@ -1,4 +1,3 @@ -import PropTypes from 'prop-types'; import React, {useState} from 'react'; import {View} from 'react-native'; import {Gesture, GestureDetector} from 'react-native-gesture-handler'; @@ -8,11 +7,11 @@ import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import {useVolumeContext} from '@components/VideoPlayerContexts/VolumeContext'; import colors from '@styles/colors'; +import stylePropTypes from '@styles/stylePropTypes'; import styles from '@styles/styles'; const propTypes = { - // eslint-disable-next-line react/forbid-prop-types - style: PropTypes.objectOf(PropTypes.any).isRequired, + style: stylePropTypes.isRequired, }; const defaultProps = {}; diff --git a/src/components/menuItemPropTypes.js b/src/components/menuItemPropTypes.js index 6f2df693e719..ad714b1f11e6 100644 --- a/src/components/menuItemPropTypes.js +++ b/src/components/menuItemPropTypes.js @@ -160,7 +160,7 @@ const propTypes = { /** Should check anonymous user in onPress function */ shouldCheckActionAllowedOnPress: PropTypes.bool, - putLeftPaddingWhenNoIcon: PropTypes.bool, + shouldPutLeftPaddingWhenNoIcon: PropTypes.bool, }; export default propTypes; diff --git a/src/hooks/useThumbnailDimensions.ts b/src/hooks/useThumbnailDimensions.ts index a0a4725ea991..c41f5739cf95 100644 --- a/src/hooks/useThumbnailDimensions.ts +++ b/src/hooks/useThumbnailDimensions.ts @@ -1,9 +1,10 @@ import {useMemo} from 'react'; +import CONST from '@src/CONST'; import useWindowDimensions from './useWindowDimensions'; export default function useThumbnailDimensions(width: number, height: number) { const {isSmallScreenWidth} = useWindowDimensions(); - const fixedDimenstion = isSmallScreenWidth ? 250 : 350; + const fixedDimenstion = isSmallScreenWidth ? CONST.THUMBNAIL_IMAGE.SMALL_SCREEN.SIZE : CONST.THUMBNAIL_IMAGE.WIDE_SCREEN.SIZE; const thumbnailDimensionsStyles = useMemo(() => { const aspectRatio = width / height; diff --git a/src/styles/styles.ts b/src/styles/styles.ts index f7d7060b0876..f093795f516d 100644 --- a/src/styles/styles.ts +++ b/src/styles/styles.ts @@ -4090,6 +4090,10 @@ const styles = (theme: ThemeColors) => backgroundColor: '#061B09CC', borderRadius: 5, }, + + videoPlayerTimeComponentWidth: { + width: 40, + }, } satisfies Styles); const stylesGenerator = styles; From 30eafedab4e5e7c6ac079e9dcbf06ddf83b0bd4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 20 Nov 2023 12:20:26 +0100 Subject: [PATCH 037/701] add english translations --- src/components/VideoPlayer/VideoPlayerControls.js | 8 +++++--- src/components/VideoPlayer/index.js | 2 +- src/components/VideoPlayerPreview/index.js | 4 +++- src/components/VideoPopoverMenu/index.js | 7 ++++--- src/languages/en.ts | 9 +++++++++ 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index b026ece3b7ad..0399c38c5ef8 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -7,6 +7,7 @@ import Text from '@components/Text'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; import {useVideoPopoverMenuContext} from '@components/VideoPlayerContexts/VideoPopoverMenuContext'; import VolumeButton from '@components/VolumeButton'; +import useLocalize from '@hooks/useLocalize'; import styles from '@styles/styles'; import spacing from '@styles/utilities/spacing'; import CONST from '@src/CONST'; @@ -29,6 +30,7 @@ const propTypes = { const defaultProps = {}; function VideoPlayerControls({duration, position, url, videoPlayerRef}) { + const {translate} = useLocalize(); const {togglePlay, isPlaying, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const {showPopover} = useVideoPopoverMenuContext(); const [durationFormatted, setDurationFormatted] = useState('0:00'); @@ -74,7 +76,7 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { @@ -90,13 +92,13 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { showPopover(e.nativeEvent.pageY + CONST.VIDEO_PLAYER.POPOVER_Y_OFFSET, e.nativeEvent.pageX)} /> diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index d541e15c9a93..f9aca5593f4d 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -132,7 +132,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty style={style} videoStyle={videoStyle} source={{ - uri: 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', + uri: sourceURLWithAuth || 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', }} shouldPlay={shouldPlay} useNativeControls={false} diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index 8343d239bc48..a81f6213115f 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -5,6 +5,7 @@ import * as Expensicons from '@components/Icon/Expensicons'; import VideoPlayer from '@components/VideoPlayer'; import IconButton from '@components/VideoPlayer/IconButton'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; +import useLocalize from '@hooks/useLocalize'; import useThumbnailDimensions from '@hooks/useThumbnailDimensions'; import useWindowDimensions from '@hooks/useWindowDimensions'; import styles from '@styles/styles'; @@ -29,6 +30,7 @@ const defaultProps = { }; function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, showModal}) { + const {translate} = useLocalize(); const {currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const {isSmallScreenWidth} = useWindowDimensions(); const [isThumbnail, setIsThumbnail] = useState(true); @@ -74,7 +76,7 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, src={Expensicons.Expand} fill="white" style={styles.videoExpandButton} - accessibilityLabel="open in modal" + accessibilityLabel={translate('videoPlayer.openInAttachmentModal')} onPress={showModal} /> diff --git a/src/components/VideoPopoverMenu/index.js b/src/components/VideoPopoverMenu/index.js index 3e00eb1d746e..52e984d61bcd 100644 --- a/src/components/VideoPopoverMenu/index.js +++ b/src/components/VideoPopoverMenu/index.js @@ -4,13 +4,14 @@ import * as Expensicons from '@components/Icon/Expensicons'; import PopoverMenu from '@components/PopoverMenu'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; import {useVideoPopoverMenuContext} from '@components/VideoPlayerContexts/VideoPopoverMenuContext'; +import useLocalize from '@hooks/useLocalize'; import useWindowDimensions from '@hooks/useWindowDimensions'; const propTypes = {}; - const defaultProps = {}; function VideoPopoverMenu() { + const {translate} = useLocalize(); const {isSmallScreenWidth} = useWindowDimensions(); const {playbackSpeeds, currentPlaybackSpeed, updatePlaybackSpeed} = usePlaybackContext(); const {isPopoverVisible, hidePopover, anchorPosition} = useVideoPopoverMenuContext(); @@ -28,14 +29,14 @@ function VideoPopoverMenu() { const menuItems = [ { icon: Expensicons.Download, - text: 'Download', + text: translate('videoPlayer.download'), onSelected: () => { console.log('Download'); }, }, { icon: Expensicons.Meter, - text: 'Playback speed', + text: translate('videoPlayer.playbackSpeed'), onSelected: () => { console.log('Playback speed'); }, diff --git a/src/languages/en.ts b/src/languages/en.ts index 183f0638fbad..c6580dbe01fd 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1936,4 +1936,13 @@ export default { }, copyReferralLink: 'Copy referral link', }, + videoPlayer: { + tooglePlay: 'Toggle play', + moreOptions: 'More options', + fullscreen: 'Fullscreen', + enterFullScreen: 'Enter fullscreen', + download: 'Download', + playbackSpeed: 'Playback speed', + openInAttachmentModal: 'Open in attachment modal', + }, } satisfies TranslationBase; From 75e5c1a9ed44f005ba080d238d12fba0cf5b4427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 20 Nov 2023 12:25:39 +0100 Subject: [PATCH 038/701] add spanish translations --- src/components/VideoPopoverMenu/index.js | 2 +- src/languages/en.ts | 2 -- src/languages/es.ts | 7 +++++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/VideoPopoverMenu/index.js b/src/components/VideoPopoverMenu/index.js index 52e984d61bcd..bc1433febad8 100644 --- a/src/components/VideoPopoverMenu/index.js +++ b/src/components/VideoPopoverMenu/index.js @@ -29,7 +29,7 @@ function VideoPopoverMenu() { const menuItems = [ { icon: Expensicons.Download, - text: translate('videoPlayer.download'), + text: translate('common.download'), onSelected: () => { console.log('Download'); }, diff --git a/src/languages/en.ts b/src/languages/en.ts index c6580dbe01fd..7b138f8f681a 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1939,9 +1939,7 @@ export default { videoPlayer: { tooglePlay: 'Toggle play', moreOptions: 'More options', - fullscreen: 'Fullscreen', enterFullScreen: 'Enter fullscreen', - download: 'Download', playbackSpeed: 'Playback speed', openInAttachmentModal: 'Open in attachment modal', }, diff --git a/src/languages/es.ts b/src/languages/es.ts index 12b0c95579e5..16ac2f7f38a4 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2420,4 +2420,11 @@ export default { }, copyReferralLink: 'Copiar enlace de invitación', }, + videoPlayer: { + tooglePlay: 'Toogle jugar', + moreOptions: 'Más opciones', + enterFullScreen: 'Entrar en pantalla completa', + playbackSpeed: 'Velocidad de reproducción', + openInAttachmentModal: 'Abrir en modo adjunto', + }, } satisfies EnglishTranslation; From 26a209f6ba2b643831af2293709fbf13698ae575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 20 Nov 2023 13:26:32 +0100 Subject: [PATCH 039/701] add second part of review changes --- .../extractAttachmentsFromReport.js | 6 +++--- src/components/PopoverMenu/index.js | 2 +- .../VideoPlayer/VideoPlayerControls.js | 13 ++++++------- src/components/VideoPlayer/index.js | 2 +- .../VideoPlayerContexts/PlaybackContext.js | 17 ++++++----------- .../VideoPopoverMenuContext.js | 8 ++++---- .../VideoPlayerContexts/VolumeContext.js | 4 ++-- src/components/VideoPopoverMenu/index.js | 10 ++-------- 8 files changed, 25 insertions(+), 37 deletions(-) diff --git a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js index 2cf91f621c97..6192a4f22048 100644 --- a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js +++ b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js @@ -21,12 +21,12 @@ function extractAttachmentsFromReport(parentReportAction, reportActions, transac const htmlParser = new HtmlParser({ onopentag: (name, attribs) => { - const isVideo = Boolean(Str.isVideo(attribs['data-expensify-source'] || '')); + const isVideo = Boolean(Str.isVideo(attribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE] || '')); if (isVideo) { - const splittedUrl = attribs['data-expensify-source'].split('/'); + const splittedUrl = attribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE].split('/'); attachments.unshift({ reportActionID: null, - source: tryResolveUrlFromApiRoot(attribs['data-expensify-source']), + source: tryResolveUrlFromApiRoot(attribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE]), isAuthTokenRequired: Boolean(attribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE]), file: {name: splittedUrl[splittedUrl.length - 1]}, isReceipt: false, diff --git a/src/components/PopoverMenu/index.js b/src/components/PopoverMenu/index.js index 0ad1793b58d6..4252a15a6f66 100644 --- a/src/components/PopoverMenu/index.js +++ b/src/components/PopoverMenu/index.js @@ -155,7 +155,7 @@ function PopoverMenu(props) { iconWidth={item.iconWidth} iconHeight={item.iconHeight} iconFill={item.iconFill} - title={item.text} + title={item.text.toString()} shouldCheckActionAllowedOnPress={false} description={item.description} onPress={() => selectItem(menuIndex)} diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index 0399c38c5ef8..78efa2c8d3b7 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -3,6 +3,7 @@ import React, {useCallback, useEffect, useState} from 'react'; import {View} from 'react-native'; import Animated from 'react-native-reanimated'; import * as Expensicons from '@components/Icon/Expensicons'; +import refPropTypes from '@components/refPropTypes'; import Text from '@components/Text'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; import {useVideoPopoverMenuContext} from '@components/VideoPlayerContexts/VideoPopoverMenuContext'; @@ -16,15 +17,13 @@ import ProgressBar from './ProgressBar'; import convertMillisecondsToTime from './utils'; const propTypes = { - // eslint-disable-next-line react/forbid-prop-types duration: PropTypes.number.isRequired, position: PropTypes.number.isRequired, url: PropTypes.string.isRequired, - // eslint-disable-next-line react/forbid-prop-types - videoPlayerRef: PropTypes.object.isRequired, + videoPlayerRef: refPropTypes.isRequired, }; const defaultProps = {}; @@ -36,16 +35,16 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { const [durationFormatted, setDurationFormatted] = useState('0:00'); const [shouldShowTime, setShouldShowTime] = useState(false); - const isCurrentlySet = currentlyPlayingURL === url; - const isCurrentlyPlaying = isCurrentlySet && isPlaying; + const isCurrentlyURLSet = currentlyPlayingURL === url; + const isCurrentlyPlaying = isCurrentlyURLSet && isPlaying; const togglePlayCurrentVideo = useCallback(() => { - if (!isCurrentlySet) { + if (!isCurrentlyURLSet) { updateCurrentlyPlayingURL(url); } else { togglePlay(); } - }, [isCurrentlySet, togglePlay, updateCurrentlyPlayingURL, url]); + }, [isCurrentlyURLSet, togglePlay, updateCurrentlyPlayingURL, url]); const onLayout = (e) => { setShouldShowTime(e.nativeEvent.layout.width > 250); diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index f9aca5593f4d..bac21f821056 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -132,7 +132,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty style={style} videoStyle={videoStyle} source={{ - uri: sourceURLWithAuth || 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', + uri: sourceURLWithAuth, // testing video url: 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', }} shouldPlay={shouldPlay} useNativeControls={false} diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index c659460b5b6c..9dc129c79836 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -1,5 +1,5 @@ import PropTypes from 'prop-types'; -import React, {useCallback, useMemo, useRef, useState} from 'react'; +import React, {useCallback, useContext, useMemo, useRef, useState} from 'react'; import CONST from '@src/CONST'; const PlaybackContext = React.createContext(null); @@ -8,18 +8,13 @@ function PlaybackContextProvider({children}) { const [currentlyPlayingURL, setCurrentlyPlayingURL] = useState(null); const [sharedElement, setSharedElement] = useState(null); const [originalParent, setOriginalParent] = useState(null); + const currentVideoPlayerRef = useRef(null); const [isPlaying, setIsPlaying] = useState(false); - const playbackSpeeds = useMemo(() => CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS, []); + const playbackSpeeds = CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS; const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); - const currentVideoPlayerRef = useRef(null); - - const updateIsPlaying = useCallback((isVideoPlaying) => { - setIsPlaying(isVideoPlaying); - }, []); - const pauseVideo = useCallback(() => { currentVideoPlayerRef.current.setStatusAsync({shouldPlay: false}); }, [currentVideoPlayerRef]); @@ -77,7 +72,7 @@ function PlaybackContextProvider({children}) { playbackSpeeds, updatePlaybackSpeed, currentPlaybackSpeed, - updateIsPlaying, + updateIsPlaying: setIsPlaying, }), [ updateCurrentlyPlayingURL, @@ -93,14 +88,14 @@ function PlaybackContextProvider({children}) { playbackSpeeds, updatePlaybackSpeed, currentPlaybackSpeed, - updateIsPlaying, + setIsPlaying, ], ); return {children}; } function usePlaybackContext() { - const context = React.useContext(PlaybackContext); + const context = useContext(PlaybackContext); if (context === undefined) { throw new Error('usePlaybackContext must be used within a PlaybackContextProvider'); } diff --git a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js index 27f92f95259a..7b415a51cf02 100644 --- a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js +++ b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js @@ -1,11 +1,11 @@ -import React, {useCallback, useMemo} from 'react'; import PropTypes from 'prop-types'; +import React, {useCallback, useContext, useMemo, useState} from 'react'; const VideoPopoverMenuContext = React.createContext(null); function VideoPopoverMenuContextProvider({children}) { - const [isPopoverVisible, setIsPopoverVisible] = React.useState(false); - const [anchorPosition, setAnchorPosition] = React.useState({vertical: 0, horizontal: 0}); + const [isPopoverVisible, setIsPopoverVisible] = useState(false); + const [anchorPosition, setAnchorPosition] = useState({vertical: 0, horizontal: 0}); const updateAnchorPosition = useCallback((y, x) => { setAnchorPosition({vertical: y, horizontal: x}); @@ -31,7 +31,7 @@ function VideoPopoverMenuContextProvider({children}) { } function useVideoPopoverMenuContext() { - const context = React.useContext(VideoPopoverMenuContext); + const context = useContext(VideoPopoverMenuContext); if (context === undefined) { throw new Error('useVideoPopoverMenuContext must be used within a PlaybackContextProvider'); } diff --git a/src/components/VideoPlayerContexts/VolumeContext.js b/src/components/VideoPlayerContexts/VolumeContext.js index 617a8f35458e..172eb354b5bc 100644 --- a/src/components/VideoPlayerContexts/VolumeContext.js +++ b/src/components/VideoPlayerContexts/VolumeContext.js @@ -1,5 +1,5 @@ import PropTypes from 'prop-types'; -import React, {useCallback, useMemo} from 'react'; +import React, {useCallback, useContext, useMemo} from 'react'; import {useSharedValue} from 'react-native-reanimated'; import {usePlaybackContext} from './PlaybackContext'; @@ -22,7 +22,7 @@ function VolumeContextProvider({children}) { } function useVolumeContext() { - const context = React.useContext(VolumeContext); + const context = useContext(VolumeContext); if (context === undefined) { throw new Error('useVolumeContext must be used within a PlaybackContextProvider'); } diff --git a/src/components/VideoPopoverMenu/index.js b/src/components/VideoPopoverMenu/index.js index bc1433febad8..16e636076281 100644 --- a/src/components/VideoPopoverMenu/index.js +++ b/src/components/VideoPopoverMenu/index.js @@ -19,10 +19,7 @@ function VideoPopoverMenu() { const playbackSpeedSubMenuItems = _.map(playbackSpeeds, (speed) => ({ icon: currentPlaybackSpeed === speed ? Expensicons.Checkmark : null, text: speed, - onSelected: () => { - console.log(`${speed}x`); - updatePlaybackSpeed(speed); - }, + onSelected: () => updatePlaybackSpeed(speed), shouldPutLeftPaddingWhenNoIcon: true, })); @@ -31,15 +28,12 @@ function VideoPopoverMenu() { icon: Expensicons.Download, text: translate('common.download'), onSelected: () => { - console.log('Download'); + // TODO: Implement download }, }, { icon: Expensicons.Meter, text: translate('videoPlayer.playbackSpeed'), - onSelected: () => { - console.log('Playback speed'); - }, subMenuItems: playbackSpeedSubMenuItems, }, ]; From 99084ed5cbed4ff4218b4c5b77f6e2f3259c4b91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 20 Nov 2023 16:01:52 +0100 Subject: [PATCH 040/701] add zIndex variable --- src/components/PopoverWithoutOverlay/index.js | 3 ++- src/styles/variables.ts | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/PopoverWithoutOverlay/index.js b/src/components/PopoverWithoutOverlay/index.js index c06e25e49603..842325f283c8 100644 --- a/src/components/PopoverWithoutOverlay/index.js +++ b/src/components/PopoverWithoutOverlay/index.js @@ -7,6 +7,7 @@ import withWindowDimensions from '@components/withWindowDimensions'; import getModalStyles from '@styles/getModalStyles'; import * as StyleUtils from '@styles/StyleUtils'; import useThemeStyles from '@styles/useThemeStyles'; +import variables from '@styles/variables'; import * as Modal from '@userActions/Modal'; function Popover(props) { @@ -51,7 +52,7 @@ function Popover(props) { return ( diff --git a/src/styles/variables.ts b/src/styles/variables.ts index 18800f5748d9..c67618b03c26 100644 --- a/src/styles/variables.ts +++ b/src/styles/variables.ts @@ -176,6 +176,7 @@ export default { reportActionItemImagesMoreCornerTriangleWidth: 40, bankCardWidth: 40, bankCardHeight: 26, + popoverzIndex: 10000, // The height of the empty list is 14px (2px for borders and 12px for vertical padding) // This is calculated based on the values specified in the 'getGoogleListViewStyle' function of the 'StyleUtils' utility From b0278466af523d831d0397828d4df1b0c116a5bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Tue, 21 Nov 2023 10:04:35 +0100 Subject: [PATCH 041/701] fix changing volume --- src/components/VolumeButton/index.js | 30 ++++++++++++++++------------ 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js index bf449ba41eab..77edb9e422fc 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VolumeButton/index.js @@ -16,31 +16,35 @@ const propTypes = { const defaultProps = {}; +const getVolumeIcon = (volume) => { + if (volume === 0) { + return Expensicons.Mute; + } + if (volume <= 0.5) { + return Expensicons.VolumeLow; + } + return Expensicons.VolumeHigh; +}; + function ProgressBar({style}) { const {updateVolume, volume} = useVolumeContext(); const [sliderHeight, setSliderHeight] = useState(1); + const [volumeIcon, setVolumeIcon] = useState({icon: getVolumeIcon(volume.value)}); const onSliderLayout = (e) => { setSliderHeight(e.nativeEvent.layout.height); }; - const getVolumeIcon = () => { - if (volume.value === 0) { - return Expensicons.Mute; - } - if (volume.value <= 0.5) { - return Expensicons.VolumeLow; - } - return Expensicons.VolumeHigh; - }; - const pan = Gesture.Pan().onChange((event) => { const val = Math.floor((1 - event.y / sliderHeight) * 100) / 100; volume.value = Math.min(Math.max(val, 0), 1); - runOnJS(updateVolume)(volume.value); }); - const progressBarStyle = useAnimatedStyle(() => ({height: `${volume.value * 100}%`})); + const progressBarStyle = useAnimatedStyle(() => { + updateVolume(volume.value); + setVolumeIcon({icon: getVolumeIcon(volume.value)}); + return {height: `${volume.value * 100}%`}; + }); return ( @@ -60,7 +64,7 @@ function ProgressBar({style}) { )} From 87bb56c133f8a86c42bcc318fa50052eafded061 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Tue, 21 Nov 2023 10:14:28 +0100 Subject: [PATCH 042/701] fix native errors --- src/components/VolumeButton/index.js | 4 ++-- src/hooks/useThumbnailDimensions.ts | 2 +- src/styles/styles.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js index 77edb9e422fc..aab6fdfce1e6 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VolumeButton/index.js @@ -41,8 +41,8 @@ function ProgressBar({style}) { }); const progressBarStyle = useAnimatedStyle(() => { - updateVolume(volume.value); - setVolumeIcon({icon: getVolumeIcon(volume.value)}); + runOnJS(updateVolume)(volume.value); + runOnJS(setVolumeIcon)({icon: getVolumeIcon(volume.value)}); return {height: `${volume.value * 100}%`}; }); diff --git a/src/hooks/useThumbnailDimensions.ts b/src/hooks/useThumbnailDimensions.ts index c41f5739cf95..6a4b954c324d 100644 --- a/src/hooks/useThumbnailDimensions.ts +++ b/src/hooks/useThumbnailDimensions.ts @@ -7,7 +7,7 @@ export default function useThumbnailDimensions(width: number, height: number) { const fixedDimenstion = isSmallScreenWidth ? CONST.THUMBNAIL_IMAGE.SMALL_SCREEN.SIZE : CONST.THUMBNAIL_IMAGE.WIDE_SCREEN.SIZE; const thumbnailDimensionsStyles = useMemo(() => { - const aspectRatio = width / height; + const aspectRatio = width / height || 1; if (width > height) { return {width: fixedDimenstion, aspectRatio}; } diff --git a/src/styles/styles.ts b/src/styles/styles.ts index f093795f516d..4756b27f031a 100644 --- a/src/styles/styles.ts +++ b/src/styles/styles.ts @@ -4076,7 +4076,7 @@ const styles = (theme: ThemeColors) => videoThumbnailPlayButton: { backgroundColor: '#061B09CC', - borderRadius: '50%', + borderRadius: 100, width: 72, height: 72, alignItems: 'center', From ebc40fad5d4fb86e320111e5ea0f27cbb7495886 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Tue, 21 Nov 2023 11:06:23 +0100 Subject: [PATCH 043/701] add instant mute button in volume slider --- src/components/VolumeButton/index.js | 18 +++++++++++++----- src/languages/en.ts | 2 ++ src/languages/es.ts | 2 ++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js index aab6fdfce1e6..b70e7bb2c4bf 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VolumeButton/index.js @@ -5,7 +5,9 @@ import Animated, {runOnJS, useAnimatedStyle} from 'react-native-reanimated'; import Hoverable from '@components/Hoverable'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; +import {PressableWithoutFeedback} from '@components/Pressable'; import {useVolumeContext} from '@components/VideoPlayerContexts/VolumeContext'; +import useLocalize from '@hooks/useLocalize'; import colors from '@styles/colors'; import stylePropTypes from '@styles/stylePropTypes'; import styles from '@styles/styles'; @@ -27,6 +29,7 @@ const getVolumeIcon = (volume) => { }; function ProgressBar({style}) { + const {translate} = useLocalize(); const {updateVolume, volume} = useVolumeContext(); const [sliderHeight, setSliderHeight] = useState(1); const [volumeIcon, setVolumeIcon] = useState({icon: getVolumeIcon(volume.value)}); @@ -63,11 +66,16 @@ function ProgressBar({style}) { )} - + updateVolume(volume.value === 0 ? 1 : 0)} + > + + )} diff --git a/src/languages/en.ts b/src/languages/en.ts index 7b138f8f681a..41c70ae05d7d 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1942,5 +1942,7 @@ export default { enterFullScreen: 'Enter fullscreen', playbackSpeed: 'Playback speed', openInAttachmentModal: 'Open in attachment modal', + mute: 'Mute', + unmute: 'Unmute', }, } satisfies TranslationBase; diff --git a/src/languages/es.ts b/src/languages/es.ts index 16ac2f7f38a4..3c3614c6dc7b 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2426,5 +2426,7 @@ export default { enterFullScreen: 'Entrar en pantalla completa', playbackSpeed: 'Velocidad de reproducción', openInAttachmentModal: 'Abrir en modo adjunto', + mute: 'Silenciar', + unmute: 'Desactivar', }, } satisfies EnglishTranslation; From c2f80bed69780abbf3fa63231f3efd1d2f8f608f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Tue, 21 Nov 2023 11:17:15 +0100 Subject: [PATCH 044/701] fix volume slider hiding when dragging and increase dragging area size --- src/components/VolumeButton/index.js | 33 ++++++++++++++++++---------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js index b70e7bb2c4bf..9009a2e0b42b 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VolumeButton/index.js @@ -11,6 +11,7 @@ import useLocalize from '@hooks/useLocalize'; import colors from '@styles/colors'; import stylePropTypes from '@styles/stylePropTypes'; import styles from '@styles/styles'; +import spacing from '@styles/utilities/spacing'; const propTypes = { style: stylePropTypes.isRequired, @@ -33,15 +34,23 @@ function ProgressBar({style}) { const {updateVolume, volume} = useVolumeContext(); const [sliderHeight, setSliderHeight] = useState(1); const [volumeIcon, setVolumeIcon] = useState({icon: getVolumeIcon(volume.value)}); + const [isSliderBeingUsed, setIsSliderBeingUsed] = useState(false); const onSliderLayout = (e) => { setSliderHeight(e.nativeEvent.layout.height); }; - const pan = Gesture.Pan().onChange((event) => { - const val = Math.floor((1 - event.y / sliderHeight) * 100) / 100; - volume.value = Math.min(Math.max(val, 0), 1); - }); + const pan = Gesture.Pan() + .onBegin(() => { + runOnJS(setIsSliderBeingUsed)(true); + }) + .onChange((event) => { + const val = Math.floor((1 - event.y / sliderHeight) * 100) / 100; + volume.value = Math.min(Math.max(val, 0), 1); + }) + .onEnd(() => { + runOnJS(setIsSliderBeingUsed)(false); + }); const progressBarStyle = useAnimatedStyle(() => { runOnJS(updateVolume)(volume.value); @@ -53,15 +62,17 @@ function ProgressBar({style}) { {(isHovered) => ( - {isHovered && ( + {(isSliderBeingUsed || isHovered) && ( - - - + + + + + )} From 7a6243a77df730b0f79d4d2a8b8f9e5272c21f95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Tue, 21 Nov 2023 16:20:24 +0100 Subject: [PATCH 045/701] fix switching beetwen unloaded videos in attachment modal --- src/components/VideoPlayer/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index bac21f821056..7df57010282d 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -88,7 +88,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty // append shared video element to new parent (used for example in attachment modal) useEffect(() => { - if (!sharedElement || !shouldUseSharedVideoElement) { + if (url !== currentlyPlayingURL || !sharedElement || !shouldUseSharedVideoElement) { return; } From c9ee8d04d6d74d02c815367573fb26a50feb3b6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Wed, 22 Nov 2023 15:35:54 +0100 Subject: [PATCH 046/701] add review changes --- .../AttachmentView/AttachmentViewVideo/index.js | 12 +++++------- src/components/PopoverMenu/index.js | 8 ++++---- src/components/ThumbnailImage.js | 8 +++----- src/components/VideoPlayer/index.js | 10 +--------- src/components/VideoPopoverMenu/index.js | 2 +- src/styles/styles.ts | 11 ++++++----- src/styles/themes/default.ts | 2 ++ 7 files changed, 22 insertions(+), 31 deletions(-) diff --git a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js index 34611a4cba9f..a6096a3f1e15 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js @@ -1,22 +1,20 @@ -import React, {memo} from 'react'; +import PropTypes from 'prop-types'; +import React from 'react'; import VideoPlayer from '@components/VideoPlayer'; -import withLocalize, {withLocalizePropTypes} from '@components/withLocalize'; import useWindowDimensions from '@hooks/useWindowDimensions'; -import compose from '@libs/compose'; const propTypes = { - ...withLocalizePropTypes, + source: PropTypes.string.isRequired, }; function AttachmentViewVideo({source}) { const {isSmallScreenWidth} = useWindowDimensions(); - const shouldUseSharedElementTransition = !isSmallScreenWidth; return ( ); } @@ -24,4 +22,4 @@ function AttachmentViewVideo({source}) { AttachmentViewVideo.propTypes = propTypes; AttachmentViewVideo.defaultProps = {}; -export default compose(memo, withLocalize)(AttachmentViewVideo); +export default React.memo(AttachmentViewVideo); diff --git a/src/components/PopoverMenu/index.js b/src/components/PopoverMenu/index.js index 4252a15a6f66..14f586109884 100644 --- a/src/components/PopoverMenu/index.js +++ b/src/components/PopoverMenu/index.js @@ -113,10 +113,10 @@ function PopoverMenu(props) { ); useEffect(() => { - if (menuItems.length === 0) { - setMenuItems(props.menuItems); + if (menuItems.length !== 0) { + return; } - return () => {}; + setMenuItems(props.menuItems); }, [menuItems, props.menuItems]); return ( @@ -155,7 +155,7 @@ function PopoverMenu(props) { iconWidth={item.iconWidth} iconHeight={item.iconHeight} iconFill={item.iconFill} - title={item.text.toString()} + title={item.text} shouldCheckActionAllowedOnPress={false} description={item.description} onPress={() => selectItem(menuIndex)} diff --git a/src/components/ThumbnailImage.js b/src/components/ThumbnailImage.js index a78be2fdf4c9..d04c87235d63 100644 --- a/src/components/ThumbnailImage.js +++ b/src/components/ThumbnailImage.js @@ -35,9 +35,8 @@ const defaultProps = { function ThumbnailImage(props) { const styles = useThemeStyles(); - const [imageWidth, setImageWidth] = useState(props.imageWidth); - const [imageHeight, setImageHeight] = useState(props.imageHeight); - const {thumbnailDimensionsStyles} = useThumbnailDimensions(imageWidth, imageHeight); + const [imagedimensions, setImageDimensions] = useState({width: props.imageWidth, height: props.imageHeight}); + const {thumbnailDimensionsStyles} = useThumbnailDimensions(imagedimensions.width, imagedimensions.height); /** * Update the state with the computed thumbnail sizes. @@ -49,8 +48,7 @@ function ThumbnailImage(props) { if (!props.shouldDynamicallyResize) { return; } - setImageWidth(width); - setImageHeight(height); + setImageDimensions({width, height}); }, [props.shouldDynamicallyResize], ); diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 7df57010282d..dfc0c00b0039 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -51,13 +51,6 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const sharedVideoPlayerParentRef = useRef(null); const sourceURLWithAuth = addEncryptedAuthTokenToURL(url); - const onReadyForDisplay = useCallback( - (e) => { - onVideoLoaded(e); - }, - [onVideoLoaded], - ); - const onPlaybackStatusUpdate = useCallback( (e) => { updateIsPlaying(e.isPlaying); @@ -70,7 +63,6 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const bindFunctions = useCallback(() => { currentVideoPlayerRef.current._onPlaybackStatusUpdate = onPlaybackStatusUpdate; - // update states after binding currentVideoPlayerRef.current.getStatusAsync().then((status) => { onPlaybackStatusUpdate(status); @@ -138,7 +130,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty useNativeControls={false} resizeMode={resizeMode} isLooping={isLooping} - onReadyForDisplay={onReadyForDisplay} + onReadyForDisplay={onVideoLoaded} onPlaybackStatusUpdate={onPlaybackStatusUpdate} /> diff --git a/src/components/VideoPopoverMenu/index.js b/src/components/VideoPopoverMenu/index.js index 16e636076281..510e526c4bde 100644 --- a/src/components/VideoPopoverMenu/index.js +++ b/src/components/VideoPopoverMenu/index.js @@ -18,7 +18,7 @@ function VideoPopoverMenu() { const playbackSpeedSubMenuItems = _.map(playbackSpeeds, (speed) => ({ icon: currentPlaybackSpeed === speed ? Expensicons.Checkmark : null, - text: speed, + text: speed.toString(), onSelected: () => updatePlaybackSpeed(speed), shouldPutLeftPaddingWhenNoIcon: true, })); diff --git a/src/styles/styles.ts b/src/styles/styles.ts index 4756b27f031a..6534750c42ba 100644 --- a/src/styles/styles.ts +++ b/src/styles/styles.ts @@ -39,6 +39,7 @@ import whiteSpace from './utilities/whiteSpace'; import wordBreak from './utilities/wordBreak'; import writingDirection from './utilities/writingDirection'; import variables from './variables'; +import theme from '.storybook/theme'; type AnchorPosition = { horizontal: number; @@ -3989,7 +3990,7 @@ const styles = (theme: ThemeColors) => bottom: 8, left: 8, right: 8, - backgroundColor: '#061B09CC', + backgroundColor: theme.transparentAppBG, height: 48, borderRadius: 8, flexDirection: 'column', @@ -4010,7 +4011,7 @@ const styles = (theme: ThemeColors) => width: '100%', height: 5, borderRadius: 10, - backgroundColor: '#FFFFFF51', + backgroundColor: theme.transparentWhite, }, progressBarFill: { @@ -4045,7 +4046,7 @@ const styles = (theme: ThemeColors) => volumeSliderOverlay: { width: 4, height: 60, - backgroundColor: '#FFFFFF51', + backgroundColor: theme.transparentWhite, borderRadius: 10, marginTop: 10, alignItems: 'end', @@ -4075,7 +4076,7 @@ const styles = (theme: ThemeColors) => }, videoThumbnailPlayButton: { - backgroundColor: '#061B09CC', + backgroundColor: theme.transparentAppBG, borderRadius: 100, width: 72, height: 72, @@ -4087,7 +4088,7 @@ const styles = (theme: ThemeColors) => position: 'absolute', top: 10, right: 10, - backgroundColor: '#061B09CC', + backgroundColor: theme.transparentAppBG, borderRadius: 5, }, diff --git a/src/styles/themes/default.ts b/src/styles/themes/default.ts index 8dd76a4776a4..3582341271db 100644 --- a/src/styles/themes/default.ts +++ b/src/styles/themes/default.ts @@ -5,6 +5,7 @@ import {ThemeColors} from './types'; const darkTheme = { // Figma keys appBG: colors.darkAppBackground, + transparentAppBG: `${colors.darkAppBackground}cc`, splashBG: colors.green400, highlightBG: colors.darkHighlightBackground, border: colors.darkBorders, @@ -84,6 +85,7 @@ const darkTheme = { loungeAccessOverlay: colors.blue800, mapAttributionText: colors.black, white: colors.white, + transparentWhite: `${colors.white}51`, // Adding a color here will animate the status bar to the right color when the screen is opened. // Note that it needs to be a screen name, not a route url. From 25c841ed71a1958555ec7ba2f076c6c4267f3b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Wed, 22 Nov 2023 15:42:38 +0100 Subject: [PATCH 047/701] change font size variable inside video player --- src/styles/styles.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/styles/styles.ts b/src/styles/styles.ts index 6534750c42ba..ebb204ef508f 100644 --- a/src/styles/styles.ts +++ b/src/styles/styles.ts @@ -4027,7 +4027,7 @@ const styles = (theme: ThemeColors) => videoPlayerText: { textAlign: 'center', - fontSize: 13, + fontSize: variables.fontSizeLabel, fontWeight: '700', lineHeight: 16, }, From 5c39b2bd6e4449909271d5ec1800028bf6620fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Wed, 22 Nov 2023 16:02:48 +0100 Subject: [PATCH 048/701] fix ts errors --- src/styles/styles.ts | 3 +-- src/styles/themes/types.ts | 2 ++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/styles/styles.ts b/src/styles/styles.ts index ebb204ef508f..49cad265ebdd 100644 --- a/src/styles/styles.ts +++ b/src/styles/styles.ts @@ -39,7 +39,6 @@ import whiteSpace from './utilities/whiteSpace'; import wordBreak from './utilities/wordBreak'; import writingDirection from './utilities/writingDirection'; import variables from './variables'; -import theme from '.storybook/theme'; type AnchorPosition = { horizontal: number; @@ -4049,7 +4048,7 @@ const styles = (theme: ThemeColors) => backgroundColor: theme.transparentWhite, borderRadius: 10, marginTop: 10, - alignItems: 'end', + alignItems: 'flex-end', justifyContent: 'flex-end', }, diff --git a/src/styles/themes/types.ts b/src/styles/themes/types.ts index 4064dd289650..a5534bb11da9 100644 --- a/src/styles/themes/types.ts +++ b/src/styles/themes/types.ts @@ -3,6 +3,7 @@ type Color = string; type ThemeColors = { // Figma keys appBG: Color; + transparentAppBG: Color; splashBG: Color; highlightBG: Color; border: Color; @@ -82,6 +83,7 @@ type ThemeColors = { loungeAccessOverlay: Color; mapAttributionText: Color; white: Color; + transparentWhite: Color; PAGE_BACKGROUND_COLORS: Record; }; From c7787dcb2fcb34a673742fdebe8cfffb1cd47596 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Wed, 22 Nov 2023 16:16:25 +0100 Subject: [PATCH 049/701] patch assets-registry --- ...@react-native+assets-registry+0.72.0.patch | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 patches/@react-native+assets-registry+0.72.0.patch diff --git a/patches/@react-native+assets-registry+0.72.0.patch b/patches/@react-native+assets-registry+0.72.0.patch new file mode 100644 index 000000000000..fc931b4ab52d --- /dev/null +++ b/patches/@react-native+assets-registry+0.72.0.patch @@ -0,0 +1,36 @@ +diff --git a/node_modules/@react-native/assets-registry/registry.js b/node_modules/@react-native/assets-registry/registry.js +index 02470da..3851d92 100644 +--- a/node_modules/@react-native/assets-registry/registry.js ++++ b/node_modules/@react-native/assets-registry/registry.js +@@ -10,28 +10,15 @@ + + 'use strict'; + +-export type PackagerAsset = { +- +__packager_asset: boolean, +- +fileSystemLocation: string, +- +httpServerLocation: string, +- +width: ?number, +- +height: ?number, +- +scales: Array, +- +hash: string, +- +name: string, +- +type: string, +- ... +-}; ++const assets = []; + +-const assets: Array = []; +- +-function registerAsset(asset: PackagerAsset): number { ++function registerAsset(asset) { + // `push` returns new array length, so the first asset will + // get id 1 (not 0) to make the value truthy + return assets.push(asset); + } + +-function getAssetByID(assetId: number): PackagerAsset { ++function getAssetByID(assetId) { + return assets[assetId - 1]; + } + From 1001a990dd5121a7174e81b5c2d594187bda7292 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 23 Nov 2023 09:26:39 +0100 Subject: [PATCH 050/701] redesign video player controls --- src/CONST.ts | 1 + src/components/VideoPlayer/IconButton.js | 35 +++++++++---------- src/components/VideoPlayer/ProgressBar.js | 16 +++++---- .../VideoPlayer/VideoPlayerControls.js | 26 +++++++++----- src/components/VideoPlayer/index.js | 6 +++- src/components/VideoPlayerPreview/index.js | 2 +- src/components/VolumeButton/index.js | 26 +++++++------- src/styles/styles.ts | 5 --- 8 files changed, 64 insertions(+), 53 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index 71db06734804..6bdb8d0caa2f 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -2914,6 +2914,7 @@ const CONST = { VIDEO_PLAYER: { POPOVER_Y_OFFSET: -30, PLAYBACK_SPEEDS: [0.25, 0.5, 1, 1.5, 2], + HIDE_TIME_TEXT_WIDTH: 250, }, } as const; diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js index 4ba75417287c..de0744f804dd 100644 --- a/src/components/VideoPlayer/IconButton.js +++ b/src/components/VideoPlayer/IconButton.js @@ -1,9 +1,7 @@ import PropTypes from 'prop-types'; import React from 'react'; -import Hoverable from '@components/Hoverable'; import Icon from '@components/Icon'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; -import colors from '@styles/colors'; import styles from '@styles/styles'; import CONST from '@src/CONST'; @@ -19,32 +17,31 @@ const propTypes = { // eslint-disable-next-line react/forbid-prop-types, style: PropTypes.object, + + small: PropTypes.bool, }; const defaultProps = { fill: 'white', onPress: () => {}, style: {}, + small: false, }; -function IconButton({src, fill, onPress, style, accessibilityLabel}) { +function IconButton({src, fill, onPress, style, accessibilityLabel, small}) { return ( - - {(isHovered) => ( - - - - )} - + + + ); } diff --git a/src/components/VideoPlayer/ProgressBar.js b/src/components/VideoPlayer/ProgressBar.js index 6bc21b6d997c..4692358a3043 100644 --- a/src/components/VideoPlayer/ProgressBar.js +++ b/src/components/VideoPlayer/ProgressBar.js @@ -1,9 +1,11 @@ import PropTypes from 'prop-types'; import React, {useEffect, useState} from 'react'; +import {View} from 'react-native'; import {Gesture, GestureDetector} from 'react-native-gesture-handler'; import Animated, {runOnJS, useAnimatedStyle, useSharedValue} from 'react-native-reanimated'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; import styles from '@styles/styles'; +import spacing from '@styles/utilities/spacing'; const propTypes = { // eslint-disable-next-line react/forbid-prop-types @@ -47,12 +49,14 @@ function ProgressBar({togglePlayCurrentVideo, duration, position, seekPosition}) return ( - - - + + + + + ); } diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index 78efa2c8d3b7..6eabf7eb31cd 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -24,11 +24,16 @@ const propTypes = { url: PropTypes.string.isRequired, videoPlayerRef: refPropTypes.isRequired, + + // Defines if component should have small icons and tighter spacing inline + small: PropTypes.bool, }; -const defaultProps = {}; +const defaultProps = { + small: false, +}; -function VideoPlayerControls({duration, position, url, videoPlayerRef}) { +function VideoPlayerControls({duration, position, url, videoPlayerRef, small}) { const {translate} = useLocalize(); const {togglePlay, isPlaying, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const {showPopover} = useVideoPopoverMenuContext(); @@ -38,6 +43,8 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { const isCurrentlyURLSet = currentlyPlayingURL === url; const isCurrentlyPlaying = isCurrentlyURLSet && isPlaying; + const iconSpacing = small ? spacing.mr3 : spacing.mr4; + const togglePlayCurrentVideo = useCallback(() => { if (!isCurrentlyURLSet) { updateCurrentlyPlayingURL(url); @@ -47,7 +54,7 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { }, [isCurrentlyURLSet, togglePlay, updateCurrentlyPlayingURL, url]); const onLayout = (e) => { - setShouldShowTime(e.nativeEvent.layout.width > 250); + setShouldShowTime(e.nativeEvent.layout.width > CONST.VIDEO_PLAYER.HIDE_TIME_TEXT_WIDTH); }; const enterFullScreenMode = useCallback(() => { @@ -68,16 +75,17 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { return ( - + {shouldShowTime && ( @@ -88,21 +96,23 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef}) { )} - + showPopover(e.nativeEvent.pageY + CONST.VIDEO_PLAYER.POPOVER_Y_OFFSET, e.nativeEvent.pageX)} + small={small} /> - + )} diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index a81f6213115f..6d3c278600b9 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -70,11 +70,11 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, shouldPlay={false} onOpenInModalButtonPress={showModal} onVideoLoaded={onVideoLoaded} + shouldUseSmallVideoControls /> { if (volume === 0) { @@ -29,7 +32,7 @@ const getVolumeIcon = (volume) => { return Expensicons.VolumeHigh; }; -function ProgressBar({style}) { +function ProgressBar({style, small}) { const {translate} = useLocalize(); const {updateVolume, volume} = useVolumeContext(); const [sliderHeight, setSliderHeight] = useState(1); @@ -61,7 +64,7 @@ function ProgressBar({style}) { return ( {(isHovered) => ( - + {(isSliderBeingUsed || isHovered) && ( @@ -77,16 +80,13 @@ function ProgressBar({style}) { )} - updateVolume(volume.value === 0 ? 1 : 0)} - > - - + src={volumeIcon.icon} + fill={colors.white} + small={small} + /> )} diff --git a/src/styles/styles.ts b/src/styles/styles.ts index 474545d5986e..c8ffd028ae08 100644 --- a/src/styles/styles.ts +++ b/src/styles/styles.ts @@ -3996,17 +3996,12 @@ const styles = (theme: ThemeColors) => left: 8, right: 8, backgroundColor: theme.transparentAppBG, - height: 48, borderRadius: 8, flexDirection: 'column', overflow: 'visible', - padding: 4, - paddingBottom: 8, }, videoPlayerControlsButtonContainer: { - height: 24, - marginBottom: 8, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', From aa526be0d5188e3d68ae0062cd84348faffc3109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 23 Nov 2023 09:40:20 +0100 Subject: [PATCH 051/701] add minimal width and height of the player --- src/CONST.ts | 2 ++ src/components/VideoPlayerPreview/index.js | 1 + src/styles/styles.ts | 5 ++++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/CONST.ts b/src/CONST.ts index 6bdb8d0caa2f..240c802d984f 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -2915,6 +2915,8 @@ const CONST = { POPOVER_Y_OFFSET: -30, PLAYBACK_SPEEDS: [0.25, 0.5, 1, 1.5, 2], HIDE_TIME_TEXT_WIDTH: 250, + MIN_WIDTH: 170, + MIN_HEIGHT: 120, }, } as const; diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index 6d3c278600b9..7e9012cdcdb2 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -78,6 +78,7 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, style={styles.videoExpandButton} accessibilityLabel={translate('videoPlayer.openInAttachmentModal')} onPress={showModal} + small /> )} diff --git a/src/styles/styles.ts b/src/styles/styles.ts index c8ffd028ae08..3183d36cb461 100644 --- a/src/styles/styles.ts +++ b/src/styles/styles.ts @@ -194,6 +194,8 @@ const webViewStyles = (theme: ThemeColors) => }, video: { + minWidth: CONST.VIDEO_PLAYER.MIN_WIDTH, + minHeight: CONST.VIDEO_PLAYER.MIN_HEIGHT, borderColor: theme.border, borderRadius: variables.componentBorderRadiusNormal, borderWidth: 1, @@ -4089,7 +4091,8 @@ const styles = (theme: ThemeColors) => top: 10, right: 10, backgroundColor: theme.transparentAppBG, - borderRadius: 5, + borderRadius: 8, + padding: 8, }, videoPlayerTimeComponentWidth: { From 387489fbf34fbd21f7638168e28f96e1c40d6b5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 23 Nov 2023 10:31:20 +0100 Subject: [PATCH 052/701] add tooltips to video controls --- src/components/Tooltip/BaseTooltip.js | 15 +++++++- .../Tooltip/TooltipRenderedOnPageBody.js | 2 ++ src/components/Tooltip/tooltipPropTypes.js | 4 +++ src/components/VideoPlayer/IconButton.js | 36 ++++++++++++------- .../VideoPlayer/VideoPlayerControls.js | 6 ++-- src/components/VideoPlayer/index.js | 2 +- src/components/VideoPlayerPreview/index.js | 2 +- src/components/VolumeButton/index.js | 3 +- src/languages/en.ts | 8 ++--- src/styles/getTooltipStyles.ts | 3 +- 10 files changed, 56 insertions(+), 25 deletions(-) diff --git a/src/components/Tooltip/BaseTooltip.js b/src/components/Tooltip/BaseTooltip.js index 3eb905e7a3e5..0c5d3f10dc7b 100644 --- a/src/components/Tooltip/BaseTooltip.js +++ b/src/components/Tooltip/BaseTooltip.js @@ -52,7 +52,19 @@ function chooseBoundingBox(target, clientX, clientY) { return target.getBoundingClientRect(); } -function Tooltip({children, numberOfLines, maxWidth, text, renderTooltipContent, renderTooltipContentKey, shouldHandleScroll, shiftHorizontal, shiftVertical, tooltipRef}) { +function Tooltip({ + children, + numberOfLines, + maxWidth, + text, + renderTooltipContent, + renderTooltipContentKey, + shouldHandleScroll, + shiftHorizontal, + shiftVertical, + tooltipRef, + forceRenderingBelow, +}) { const {preferredLocale} = useLocalize(); const {windowWidth} = useWindowDimensions(); @@ -192,6 +204,7 @@ function Tooltip({children, numberOfLines, maxWidth, text, renderTooltipContent, // We pass a key, so whenever the content changes this component will completely remount with a fresh state. // This prevents flickering/moving while remaining performant. key={[text, ...renderTooltipContentKey, preferredLocale]} + forceRenderingBelow={forceRenderingBelow} /> )} {}, + forceRenderingBelow: false, }; export {propTypes, defaultProps}; diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js index de0744f804dd..bf7d04a971de 100644 --- a/src/components/VideoPlayer/IconButton.js +++ b/src/components/VideoPlayer/IconButton.js @@ -2,6 +2,7 @@ import PropTypes from 'prop-types'; import React from 'react'; import Icon from '@components/Icon'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; +import Tooltip from '@components/Tooltip'; import styles from '@styles/styles'; import CONST from '@src/CONST'; @@ -13,12 +14,14 @@ const propTypes = { fill: PropTypes.string, - accessibilityLabel: PropTypes.string.isRequired, + tooltipText: PropTypes.string, // eslint-disable-next-line react/forbid-prop-types, style: PropTypes.object, small: PropTypes.bool, + + forceRenderingTooltipBelow: PropTypes.bool, }; const defaultProps = { @@ -26,22 +29,29 @@ const defaultProps = { onPress: () => {}, style: {}, small: false, + tooltipText: '', + forceRenderingTooltipBelow: false, }; -function IconButton({src, fill, onPress, style, accessibilityLabel, small}) { +function IconButton({src, fill, onPress, style, tooltipText, small, forceRenderingTooltipBelow}) { return ( - - - + + + + ); } diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index 6eabf7eb31cd..1bc520d9109d 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -82,7 +82,7 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef, small}) { showPopover(e.nativeEvent.pageY + CONST.VIDEO_PLAYER.POPOVER_Y_OFFSET, e.nativeEvent.pageX)} small={small} /> diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 97267a21da15..43b1d9ea1629 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -56,7 +56,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const onPlaybackStatusUpdate = useCallback( (e) => { - updateIsPlaying(e.isPlaying); + updateIsPlaying(e.isPlaying || false); setIsLoading(Number.isNaN(e.durationMillis)); // when video is ready to display duration is not NaN setDuration(e.durationMillis || 0); setPosition(e.positionMillis || 0); diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index 7e9012cdcdb2..c63c1995df40 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -76,7 +76,7 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, diff --git a/src/components/VolumeButton/index.js b/src/components/VolumeButton/index.js index abaebde562bd..42a23e8cbf17 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VolumeButton/index.js @@ -81,11 +81,12 @@ function ProgressBar({style, small}) { )} updateVolume(volume.value === 0 ? 1 : 0)} src={volumeIcon.icon} fill={colors.white} small={small} + forceRenderingTooltipBelow /> )} diff --git a/src/languages/en.ts b/src/languages/en.ts index 2e7976d15e9c..5668af5acb52 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -1963,11 +1963,11 @@ export default { copyReferralLink: 'Copy referral link', }, videoPlayer: { - tooglePlay: 'Toggle play', - moreOptions: 'More options', - enterFullScreen: 'Enter fullscreen', + play: 'Play', + pause: 'Pause', + fullscreen: 'Fullscreen', playbackSpeed: 'Playback speed', - openInAttachmentModal: 'Open in attachment modal', + expand: 'Expand', mute: 'Mute', unmute: 'Unmute', }, diff --git a/src/styles/getTooltipStyles.ts b/src/styles/getTooltipStyles.ts index 5c90027e10fd..8b47e2e2fff3 100644 --- a/src/styles/getTooltipStyles.ts +++ b/src/styles/getTooltipStyles.ts @@ -135,6 +135,7 @@ export default function getTooltipStyles( tooltipWrapperHeight: number, manualShiftHorizontal = 0, manualShiftVertical = 0, + forceRenderingBelow = false, ): TooltipStyles { const tooltipVerticalPadding = spacing.pv1; @@ -162,7 +163,7 @@ export default function getTooltipStyles( // If either a tooltip will try to render within GUTTER_WIDTH logical pixels of the top of the screen, // Or the wrapped component is overlapping at top-center with another element // we'll display it beneath its wrapped component rather than above it as usual. - shouldShowBelow = yOffset - tooltipHeight < GUTTER_WIDTH || isOverlappingAtTop(tooltip, xOffset, yOffset, tooltipTargetWidth, tooltipTargetHeight); + shouldShowBelow = forceRenderingBelow || yOffset - tooltipHeight < GUTTER_WIDTH || isOverlappingAtTop(tooltip, xOffset, yOffset, tooltipTargetWidth, tooltipTargetHeight); // When the tooltip size is ready, we can start animating the scale. scale = currentSize; From 5444822bd74157b4dfff61026425ff19b025e198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 23 Nov 2023 10:45:44 +0100 Subject: [PATCH 053/701] fix unnecessary rerenders inside video controls component --- src/components/VideoPlayer/VideoPlayerControls.js | 13 ++++++------- src/components/VideoPlayer/index.js | 6 +++++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index 1bc520d9109d..e09a6e5bc95a 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -25,6 +25,8 @@ const propTypes = { videoPlayerRef: refPropTypes.isRequired, + isPlaying: PropTypes.bool.isRequired, + // Defines if component should have small icons and tighter spacing inline small: PropTypes.bool, }; @@ -33,16 +35,13 @@ const defaultProps = { small: false, }; -function VideoPlayerControls({duration, position, url, videoPlayerRef, small}) { +function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying, small}) { const {translate} = useLocalize(); - const {togglePlay, isPlaying, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); + const {togglePlay, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const {showPopover} = useVideoPopoverMenuContext(); const [durationFormatted, setDurationFormatted] = useState('0:00'); const [shouldShowTime, setShouldShowTime] = useState(false); - const isCurrentlyURLSet = currentlyPlayingURL === url; - const isCurrentlyPlaying = isCurrentlyURLSet && isPlaying; - const iconSpacing = small ? spacing.mr3 : spacing.mr4; const togglePlayCurrentVideo = useCallback(() => { @@ -81,8 +80,8 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef, small}) { { - updateIsPlaying(e.isPlaying || false); + const isVideoPlaying = e.isPlaying || false; + setIsPlaying(isVideoPlaying); + updateIsPlaying(isVideoPlaying); setIsLoading(Number.isNaN(e.durationMillis)); // when video is ready to display duration is not NaN setDuration(e.durationMillis || 0); setPosition(e.positionMillis || 0); @@ -148,6 +151,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty position={position} url={url} videoPlayerRef={videoPlayerRef} + isPlaying={isPlaying} small={shouldUseSmallVideoControls} /> )} From 6cf89585819ed66b36288b735ddbb62860e574af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 23 Nov 2023 15:22:21 +0100 Subject: [PATCH 054/701] fix showing arrows inside attachment carousel when video is playing --- .../AttachmentCarousel/CarouselItem.js | 5 ++++- .../Attachments/AttachmentCarousel/index.js | 1 + .../AttachmentViewVideo/index.js | 13 ++++++++++-- .../Attachments/AttachmentView/index.js | 5 +++++ src/components/VideoPlayer/index.js | 21 +++++++++++++------ 5 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/components/Attachments/AttachmentCarousel/CarouselItem.js b/src/components/Attachments/AttachmentCarousel/CarouselItem.js index b6cc0cbf21a4..a9451dd46ebf 100644 --- a/src/components/Attachments/AttachmentCarousel/CarouselItem.js +++ b/src/components/Attachments/AttachmentCarousel/CarouselItem.js @@ -42,13 +42,15 @@ const propTypes = { /** onPress callback */ onPress: PropTypes.func, + + isModalHovered: PropTypes.bool.isRequired, }; const defaultProps = { onPress: undefined, }; -function CarouselItem({item, isFocused, onPress}) { +function CarouselItem({item, isFocused, onPress, isModalHovered}) { const styles = useThemeStyles(); const {translate} = useLocalize(); const {isAttachmentHidden} = useContext(ReportAttachmentsContext); @@ -102,6 +104,7 @@ function CarouselItem({item, isFocused, onPress}) { onPress={onPress} isUsedInCarousel transactionID={item.transactionID} + isHovered={isModalHovered} /> diff --git a/src/components/Attachments/AttachmentCarousel/index.js b/src/components/Attachments/AttachmentCarousel/index.js index fa4ff50512d0..2174463873c3 100644 --- a/src/components/Attachments/AttachmentCarousel/index.js +++ b/src/components/Attachments/AttachmentCarousel/index.js @@ -151,6 +151,7 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, item={item} isFocused={activeSource === item.source} onPress={canUseTouchScreen ? () => setShouldShowArrows(!shouldShowArrows) : undefined} + isModalHovered={shouldShowArrows} /> ), [activeSource, canUseTouchScreen, setShouldShowArrows, shouldShowArrows], diff --git a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js index a6096a3f1e15..ebaec94c3355 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js @@ -4,10 +4,18 @@ import VideoPlayer from '@components/VideoPlayer'; import useWindowDimensions from '@hooks/useWindowDimensions'; const propTypes = { + /** Video file source URL */ source: PropTypes.string.isRequired, + + /** Whether the video is currently being hovered over */ + isHovered: PropTypes.bool, +}; + +const defaultProps = { + isHovered: false, }; -function AttachmentViewVideo({source}) { +function AttachmentViewVideo({source, isHovered}) { const {isSmallScreenWidth} = useWindowDimensions(); return ( @@ -15,11 +23,12 @@ function AttachmentViewVideo({source}) { url={source} shouldPlay={false} shouldUseSharedVideoElement={!isSmallScreenWidth} + isHovered={isHovered} /> ); } AttachmentViewVideo.propTypes = propTypes; -AttachmentViewVideo.defaultProps = {}; +AttachmentViewVideo.defaultProps = defaultProps; export default React.memo(AttachmentViewVideo); diff --git a/src/components/Attachments/AttachmentView/index.js b/src/components/Attachments/AttachmentView/index.js index 749461dc7063..61b52a2a2ece 100755 --- a/src/components/Attachments/AttachmentView/index.js +++ b/src/components/Attachments/AttachmentView/index.js @@ -50,6 +50,8 @@ const propTypes = { /** The id of the transaction related to the attachment */ // eslint-disable-next-line react/no-unused-prop-types transactionID: PropTypes.string, + + isHovered: PropTypes.bool, }; const defaultProps = { @@ -60,6 +62,7 @@ const defaultProps = { containerStyles: [], isWorkspaceAvatar: false, transactionID: '', + isHovered: false, }; function AttachmentView({ @@ -79,6 +82,7 @@ function AttachmentView({ fallbackSource, transaction, isUsedInAttachmentModal, + isHovered, }) { const {updateCurrentlyPlayingURL} = usePlaybackContext(); const theme = useTheme(); @@ -198,6 +202,7 @@ function AttachmentView({ isImage={isImage} onPress={onPress} onScaleChanged={onScaleChanged} + isHovered={isHovered} /> ); } diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 971448008970..713abc3aaa62 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -29,6 +29,8 @@ const propTypes = { shouldUseSharedVideoElement: PropTypes.bool, shouldUseSmallVideoControls: PropTypes.bool, + + isHovered: PropTypes.bool, }; const defaultProps = { @@ -40,9 +42,10 @@ const defaultProps = { videoStyle: [styles.w100, styles.h100], shouldUseSharedVideoElement: false, shouldUseSmallVideoControls: false, + isHovered: false, }; -function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement, shouldUseSmallVideoControls}) { +function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement, shouldUseSmallVideoControls, isHovered}) { const {isSmallScreenWidth} = useWindowDimensions(); const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, updateCurrentVideoPlayerRef, currentVideoPlayerRef, updateIsPlaying} = usePlaybackContext(); const [duration, setDuration] = useState(0); @@ -107,10 +110,16 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty return ( {shouldUseSharedVideoElement ? ( - + <> + + {/* We are adding transaprent absolute View between appended video component and conttrol buttons to enable + catching onMosue events from Attachment Carousel. Due to late appending React doesn't handle + element's events properly. */} + + ) : ( } - {!isLoading && ( + {!isLoading && isHovered && ( Date: Mon, 27 Nov 2023 14:05:45 +0100 Subject: [PATCH 055/701] removed not used PlaybackContext props --- .../VideoPlayer/VideoPlayerControls.js | 8 +++-- src/components/VideoPlayer/index.js | 27 +++++++---------- .../VideoPlayerContexts/PlaybackContext.js | 30 ++++--------------- 3 files changed, 22 insertions(+), 43 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index e09a6e5bc95a..f42c2577d02f 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -37,7 +37,7 @@ const defaultProps = { function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying, small}) { const {translate} = useLocalize(); - const {togglePlay, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); + const {pauseVideo, playVideo, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); const {showPopover} = useVideoPopoverMenuContext(); const [durationFormatted, setDurationFormatted] = useState('0:00'); const [shouldShowTime, setShouldShowTime] = useState(false); @@ -47,10 +47,12 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying const togglePlayCurrentVideo = useCallback(() => { if (!isCurrentlyURLSet) { updateCurrentlyPlayingURL(url); + } else if (isPlaying) { + pauseVideo(); } else { - togglePlay(); + playVideo(); } - }, [isCurrentlyURLSet, togglePlay, updateCurrentlyPlayingURL, url]); + }, [isCurrentlyURLSet, isPlaying, pauseVideo, playVideo, updateCurrentlyPlayingURL, url]); const onLayout = (e) => { setShouldShowTime(e.nativeEvent.layout.width > CONST.VIDEO_PLAYER.HIDE_TIME_TEXT_WIDTH); diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 713abc3aaa62..eda3f2ce5de2 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -42,12 +42,12 @@ const defaultProps = { videoStyle: [styles.w100, styles.h100], shouldUseSharedVideoElement: false, shouldUseSmallVideoControls: false, - isHovered: false, + isHovered: true, }; function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement, shouldUseSmallVideoControls, isHovered}) { const {isSmallScreenWidth} = useWindowDimensions(); - const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, updateCurrentVideoPlayerRef, currentVideoPlayerRef, updateIsPlaying} = usePlaybackContext(); + const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, shareVideoPlayerElements, currentVideoPlayerRef} = usePlaybackContext(); const [duration, setDuration] = useState(0); const [position, setPosition] = useState(0); const [isPlaying, setIsPlaying] = useState(false); @@ -58,17 +58,13 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const sharedVideoPlayerParentRef = useRef(null); const sourceURLWithAuth = addEncryptedAuthTokenToURL(url); - const onPlaybackStatusUpdate = useCallback( - (e) => { - const isVideoPlaying = e.isPlaying || false; - setIsPlaying(isVideoPlaying); - updateIsPlaying(isVideoPlaying); - setIsLoading(Number.isNaN(e.durationMillis)); // when video is ready to display duration is not NaN - setDuration(e.durationMillis || 0); - setPosition(e.positionMillis || 0); - }, - [updateIsPlaying], - ); + const onPlaybackStatusUpdate = useCallback((e) => { + const isVideoPlaying = e.isPlaying || false; + setIsPlaying(isVideoPlaying); + setIsLoading(Number.isNaN(e.durationMillis)); // when video is ready to display duration is not NaN + setDuration(e.durationMillis || 0); + setPosition(e.positionMillis || 0); + }, []); const bindFunctions = useCallback(() => { currentVideoPlayerRef.current._onPlaybackStatusUpdate = onPlaybackStatusUpdate; @@ -83,9 +79,8 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty if (shouldUseSharedVideoElement || url !== currentlyPlayingURL) { return; } - updateSharedElements(videoPlayerElementParentRef.current, videoPlayerElementRef.current); - updateCurrentVideoPlayerRef(videoPlayerRef.current); - }, [currentlyPlayingURL, shouldUseSharedVideoElement, updateCurrentVideoPlayerRef, updateSharedElements, url]); + shareVideoPlayerElements(videoPlayerRef.current, videoPlayerElementParentRef.current, videoPlayerElementRef.current); + }, [currentlyPlayingURL, shouldUseSharedVideoElement, shareVideoPlayerElements, updateSharedElements, url]); // append shared video element to new parent (used for example in attachment modal) useEffect(() => { diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index 9dc129c79836..b934db632a00 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -10,8 +10,6 @@ function PlaybackContextProvider({children}) { const [originalParent, setOriginalParent] = useState(null); const currentVideoPlayerRef = useRef(null); - const [isPlaying, setIsPlaying] = useState(false); - const playbackSpeeds = CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS; const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); @@ -23,11 +21,6 @@ function PlaybackContextProvider({children}) { currentVideoPlayerRef.current.setStatusAsync({shouldPlay: true}); }, [currentVideoPlayerRef]); - const togglePlay = useCallback(() => { - currentVideoPlayerRef.current.setStatusAsync({shouldPlay: !isPlaying}); - setIsPlaying(!isPlaying); - }, [currentVideoPlayerRef, isPlaying]); - const updateCurrentlyPlayingURL = useCallback( (url) => { if (currentlyPlayingURL && url !== currentlyPlayingURL) { @@ -38,19 +31,16 @@ function PlaybackContextProvider({children}) { [currentlyPlayingURL, pauseVideo], ); - const updateCurrentVideoPlayerRef = useCallback( - (ref) => { + const shareVideoPlayerElements = useCallback( + (ref, parent, child) => { currentVideoPlayerRef.current = ref; + setOriginalParent(parent); + setSharedElement(child); playVideo(); }, [playVideo], ); - const updateSharedElements = useCallback((parent, child) => { - setOriginalParent(parent); - setSharedElement(child); - }, []); - const updatePlaybackSpeed = useCallback((newPlaybackSpeed) => { currentVideoPlayerRef.current.setStatusAsync({rate: newPlaybackSpeed}); setCurrentPlaybackSpeed(newPlaybackSpeed); @@ -62,33 +52,25 @@ function PlaybackContextProvider({children}) { currentlyPlayingURL, originalParent, sharedElement, - updateSharedElements, - togglePlay, - isPlaying, currentVideoPlayerRef, - updateCurrentVideoPlayerRef, + shareVideoPlayerElements, playVideo, pauseVideo, playbackSpeeds, updatePlaybackSpeed, currentPlaybackSpeed, - updateIsPlaying: setIsPlaying, }), [ updateCurrentlyPlayingURL, currentlyPlayingURL, originalParent, sharedElement, - updateSharedElements, - togglePlay, - isPlaying, - updateCurrentVideoPlayerRef, + shareVideoPlayerElements, playVideo, pauseVideo, playbackSpeeds, updatePlaybackSpeed, currentPlaybackSpeed, - setIsPlaying, ], ); return {children}; From 88372073a55d75b7ffc49df0a6e4dc6f88f66407 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 27 Nov 2023 15:22:23 +0100 Subject: [PATCH 056/701] add playback speed logic changes --- .../VideoPlayer/VideoPlayerControls.js | 6 ++++- .../VideoPlayerContexts/PlaybackContext.js | 24 +------------------ .../VideoPopoverMenuContext.js | 10 ++++---- src/components/VideoPopoverMenu/index.js | 24 +++++++++++++++---- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls.js index f42c2577d02f..7ac67dffd5a7 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls.js @@ -70,6 +70,10 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying [videoPlayerRef], ); + const showPopoverMenu = (e) => { + showPopover(videoPlayerRef.current, e.nativeEvent.pageY + CONST.VIDEO_PLAYER.POPOVER_Y_OFFSET, e.nativeEvent.pageX); + }; + useEffect(() => { setDurationFormatted(convertMillisecondsToTime(duration)); }, [duration]); @@ -108,7 +112,7 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying showPopover(e.nativeEvent.pageY + CONST.VIDEO_PLAYER.POPOVER_Y_OFFSET, e.nativeEvent.pageX)} + onPress={showPopoverMenu} small={small} /> diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index b934db632a00..6e5346724d23 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -10,9 +10,6 @@ function PlaybackContextProvider({children}) { const [originalParent, setOriginalParent] = useState(null); const currentVideoPlayerRef = useRef(null); - const playbackSpeeds = CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS; - const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); - const pauseVideo = useCallback(() => { currentVideoPlayerRef.current.setStatusAsync({shouldPlay: false}); }, [currentVideoPlayerRef]); @@ -41,11 +38,6 @@ function PlaybackContextProvider({children}) { [playVideo], ); - const updatePlaybackSpeed = useCallback((newPlaybackSpeed) => { - currentVideoPlayerRef.current.setStatusAsync({rate: newPlaybackSpeed}); - setCurrentPlaybackSpeed(newPlaybackSpeed); - }, []); - const contextValue = useMemo( () => ({ updateCurrentlyPlayingURL, @@ -56,22 +48,8 @@ function PlaybackContextProvider({children}) { shareVideoPlayerElements, playVideo, pauseVideo, - playbackSpeeds, - updatePlaybackSpeed, - currentPlaybackSpeed, }), - [ - updateCurrentlyPlayingURL, - currentlyPlayingURL, - originalParent, - sharedElement, - shareVideoPlayerElements, - playVideo, - pauseVideo, - playbackSpeeds, - updatePlaybackSpeed, - currentPlaybackSpeed, - ], + [updateCurrentlyPlayingURL, currentlyPlayingURL, originalParent, sharedElement, shareVideoPlayerElements, playVideo, pauseVideo], ); return {children}; } diff --git a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js index 7b415a51cf02..999be60774ce 100644 --- a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js +++ b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js @@ -1,11 +1,12 @@ import PropTypes from 'prop-types'; -import React, {useCallback, useContext, useMemo, useState} from 'react'; +import React, {useCallback, useContext, useMemo, useRef, useState} from 'react'; const VideoPopoverMenuContext = React.createContext(null); function VideoPopoverMenuContextProvider({children}) { const [isPopoverVisible, setIsPopoverVisible] = useState(false); const [anchorPosition, setAnchorPosition] = useState({vertical: 0, horizontal: 0}); + const targetVideoPlayerRef = useRef(null); const updateAnchorPosition = useCallback((y, x) => { setAnchorPosition({vertical: y, horizontal: x}); @@ -16,16 +17,17 @@ function VideoPopoverMenuContextProvider({children}) { }, []); const showPopover = useCallback( - (y = 0, x = 0) => { + (ref, y = 0, x = 0) => { setIsPopoverVisible(true); updateAnchorPosition(y, x); + targetVideoPlayerRef.current = ref; }, [updateAnchorPosition], ); const contextValue = useMemo( - () => ({isPopoverVisible, hidePopover, showPopover, anchorPosition, updateAnchorPosition}), - [anchorPosition, hidePopover, isPopoverVisible, showPopover, updateAnchorPosition], + () => ({isPopoverVisible, hidePopover, showPopover, anchorPosition, updateAnchorPosition, targetVideoPlayerRef}), + [anchorPosition, hidePopover, isPopoverVisible, showPopover, updateAnchorPosition, targetVideoPlayerRef], ); return {children}; } diff --git a/src/components/VideoPopoverMenu/index.js b/src/components/VideoPopoverMenu/index.js index 510e526c4bde..2f7227b33a50 100644 --- a/src/components/VideoPopoverMenu/index.js +++ b/src/components/VideoPopoverMenu/index.js @@ -1,11 +1,11 @@ -import React from 'react'; +import React, {useEffect, useState} from 'react'; import _ from 'underscore'; import * as Expensicons from '@components/Icon/Expensicons'; import PopoverMenu from '@components/PopoverMenu'; -import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; import {useVideoPopoverMenuContext} from '@components/VideoPlayerContexts/VideoPopoverMenuContext'; import useLocalize from '@hooks/useLocalize'; import useWindowDimensions from '@hooks/useWindowDimensions'; +import CONST from '@src/CONST'; const propTypes = {}; const defaultProps = {}; @@ -13,8 +13,15 @@ const defaultProps = {}; function VideoPopoverMenu() { const {translate} = useLocalize(); const {isSmallScreenWidth} = useWindowDimensions(); - const {playbackSpeeds, currentPlaybackSpeed, updatePlaybackSpeed} = usePlaybackContext(); - const {isPopoverVisible, hidePopover, anchorPosition} = useVideoPopoverMenuContext(); + const {isPopoverVisible, hidePopover, anchorPosition, targetVideoPlayerRef} = useVideoPopoverMenuContext(); + + const [playbackSpeeds] = useState(CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS); + const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); + + const updatePlaybackSpeed = (speed) => { + targetVideoPlayerRef.current.setStatusAsync({rate: speed}); + setCurrentPlaybackSpeed(speed); + }; const playbackSpeedSubMenuItems = _.map(playbackSpeeds, (speed) => ({ icon: currentPlaybackSpeed === speed ? Expensicons.Checkmark : null, @@ -38,6 +45,15 @@ function VideoPopoverMenu() { }, ]; + useEffect(() => { + if (!isPopoverVisible) { + return; + } + targetVideoPlayerRef.current.getStatusAsync().then((status) => { + setCurrentPlaybackSpeed(status.rate); + }); + }, [isPopoverVisible, playbackSpeeds, targetVideoPlayerRef]); + return ( Date: Mon, 27 Nov 2023 16:35:46 +0100 Subject: [PATCH 057/701] change structure --- .../{ => VideoPlayerControls}/ProgressBar.js | 0 .../VideoPlayerControls}/VolumeButton/index.js | 12 ++++++------ .../index.js} | 6 +++--- .../VideoPlayerContexts/PlaybackContext.js | 1 - 4 files changed, 9 insertions(+), 10 deletions(-) rename src/components/VideoPlayer/{ => VideoPlayerControls}/ProgressBar.js (100%) rename src/components/{ => VideoPlayer/VideoPlayerControls}/VolumeButton/index.js (93%) rename src/components/VideoPlayer/{VideoPlayerControls.js => VideoPlayerControls/index.js} (96%) diff --git a/src/components/VideoPlayer/ProgressBar.js b/src/components/VideoPlayer/VideoPlayerControls/ProgressBar.js similarity index 100% rename from src/components/VideoPlayer/ProgressBar.js rename to src/components/VideoPlayer/VideoPlayerControls/ProgressBar.js diff --git a/src/components/VolumeButton/index.js b/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js similarity index 93% rename from src/components/VolumeButton/index.js rename to src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js index 42a23e8cbf17..8ef5416e0824 100644 --- a/src/components/VolumeButton/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js @@ -1,5 +1,5 @@ import PropTypes from 'prop-types'; -import React, {useState} from 'react'; +import React, {memo, useState} from 'react'; import {View} from 'react-native'; import {Gesture, GestureDetector} from 'react-native-gesture-handler'; import Animated, {runOnJS, useAnimatedStyle} from 'react-native-reanimated'; @@ -32,7 +32,7 @@ const getVolumeIcon = (volume) => { return Expensicons.VolumeHigh; }; -function ProgressBar({style, small}) { +function VolumeButton({style, small}) { const {translate} = useLocalize(); const {updateVolume, volume} = useVolumeContext(); const [sliderHeight, setSliderHeight] = useState(1); @@ -94,8 +94,8 @@ function ProgressBar({style, small}) { ); } -ProgressBar.propTypes = propTypes; -ProgressBar.defaultProps = defaultProps; -ProgressBar.displayName = 'ProgressBar'; +VolumeButton.propTypes = propTypes; +VolumeButton.defaultProps = defaultProps; +VolumeButton.displayName = 'VolumeButton'; -export default ProgressBar; +export default memo(VolumeButton); diff --git a/src/components/VideoPlayer/VideoPlayerControls.js b/src/components/VideoPlayer/VideoPlayerControls/index.js similarity index 96% rename from src/components/VideoPlayer/VideoPlayerControls.js rename to src/components/VideoPlayer/VideoPlayerControls/index.js index 7ac67dffd5a7..e30494177da1 100644 --- a/src/components/VideoPlayer/VideoPlayerControls.js +++ b/src/components/VideoPlayer/VideoPlayerControls/index.js @@ -5,16 +5,16 @@ import Animated from 'react-native-reanimated'; import * as Expensicons from '@components/Icon/Expensicons'; import refPropTypes from '@components/refPropTypes'; import Text from '@components/Text'; +import IconButton from '@components/VideoPlayer/IconButton'; +import convertMillisecondsToTime from '@components/VideoPlayer/utils'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; import {useVideoPopoverMenuContext} from '@components/VideoPlayerContexts/VideoPopoverMenuContext'; -import VolumeButton from '@components/VolumeButton'; import useLocalize from '@hooks/useLocalize'; import styles from '@styles/styles'; import spacing from '@styles/utilities/spacing'; import CONST from '@src/CONST'; -import IconButton from './IconButton'; import ProgressBar from './ProgressBar'; -import convertMillisecondsToTime from './utils'; +import VolumeButton from './VolumeButton'; const propTypes = { duration: PropTypes.number.isRequired, diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index 6e5346724d23..a53ef4c9fda8 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -1,6 +1,5 @@ import PropTypes from 'prop-types'; import React, {useCallback, useContext, useMemo, useRef, useState} from 'react'; -import CONST from '@src/CONST'; const PlaybackContext = React.createContext(null); From 8bf30fcfef9a745affe303c62efd3a77e62a0cba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 27 Nov 2023 16:39:31 +0100 Subject: [PATCH 058/701] move Progressbar to another folder --- .../VideoPlayerControls/{ProgressBar.js => ProgressBar/index.js} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/components/VideoPlayer/VideoPlayerControls/{ProgressBar.js => ProgressBar/index.js} (100%) diff --git a/src/components/VideoPlayer/VideoPlayerControls/ProgressBar.js b/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js similarity index 100% rename from src/components/VideoPlayer/VideoPlayerControls/ProgressBar.js rename to src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js From c198199db14b8b17d4d0171017ef66a91eb5c7d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 27 Nov 2023 16:55:46 +0100 Subject: [PATCH 059/701] fix changing volume in other video player when different one is playing --- src/components/VideoPlayerContexts/VolumeContext.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/components/VideoPlayerContexts/VolumeContext.js b/src/components/VideoPlayerContexts/VolumeContext.js index 172eb354b5bc..524e5aed7d5f 100644 --- a/src/components/VideoPlayerContexts/VolumeContext.js +++ b/src/components/VideoPlayerContexts/VolumeContext.js @@ -1,22 +1,29 @@ import PropTypes from 'prop-types'; -import React, {useCallback, useContext, useMemo} from 'react'; +import React, {useCallback, useContext, useEffect, useMemo} from 'react'; import {useSharedValue} from 'react-native-reanimated'; import {usePlaybackContext} from './PlaybackContext'; const VolumeContext = React.createContext(null); function VolumeContextProvider({children}) { - const {currentVideoPlayerRef} = usePlaybackContext(); + const {currentVideoPlayerRef, sharedElement} = usePlaybackContext(); const volume = useSharedValue(0); const updateVolume = useCallback( (newVolume) => { + if (!currentVideoPlayerRef.current) { + return; + } currentVideoPlayerRef.current.setStatusAsync({volume: newVolume}); volume.value = newVolume; }, [currentVideoPlayerRef, volume], ); + useEffect(() => { + updateVolume(volume.value); + }, [sharedElement, updateVolume, volume.value]); + const contextValue = useMemo(() => ({updateVolume, volume}), [updateVolume, volume]); return {children}; } From fbe09d930d67ae02ba89dc7fa192985300be36df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 27 Nov 2023 17:05:58 +0100 Subject: [PATCH 060/701] add thumb to volume slider --- .../VideoPlayerControls/VolumeButton/index.js | 1 + src/styles/styles.ts | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js b/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js index 8ef5416e0824..35db97f177b1 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js @@ -73,6 +73,7 @@ function VolumeButton({style, small}) { style={[styles.volumeSliderOverlay]} onLayout={onSliderLayout} > + diff --git a/src/styles/styles.ts b/src/styles/styles.ts index 3183d36cb461..d781c845a2c9 100644 --- a/src/styles/styles.ts +++ b/src/styles/styles.ts @@ -4051,10 +4051,18 @@ const styles = (theme: ThemeColors) => backgroundColor: theme.transparentWhite, borderRadius: 10, marginTop: 10, - alignItems: 'flex-end', + alignItems: 'center', justifyContent: 'flex-end', }, + volumeSliderThumb: { + width: 8, + height: 8, + borderRadius: 8, + backgroundColor: colors.white, + marginBottom: -2, + }, + volumeSliderFill: { width: 4, height: 20, From 543d65bd1c84a3af0072eb5fc1461cd4e344fa49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Tue, 28 Nov 2023 09:52:08 +0100 Subject: [PATCH 061/701] add explanation to the fix in VolumeContext --- src/components/VideoPlayerContexts/VolumeContext.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/VideoPlayerContexts/VolumeContext.js b/src/components/VideoPlayerContexts/VolumeContext.js index 524e5aed7d5f..c09a95aa31c8 100644 --- a/src/components/VideoPlayerContexts/VolumeContext.js +++ b/src/components/VideoPlayerContexts/VolumeContext.js @@ -20,6 +20,8 @@ function VolumeContextProvider({children}) { [currentVideoPlayerRef, volume], ); + // We want to update the volume when currently playing video changes. + // When sharedElement changed we're sure that currentVideoPlayerRef is updated. So we can apply the new volume. useEffect(() => { updateVolume(volume.value); }, [sharedElement, updateVolume, volume.value]); From 4cbe61063edda870e8e855aa8f666fdc16e1b001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 28 Dec 2023 12:18:46 +0100 Subject: [PATCH 062/701] Fix video displaying in preview before uploading --- .../AttachmentViewVideo/index.js | 9 +- src/components/VideoPlayer/index.js | 115 +++++++++--------- 2 files changed, 66 insertions(+), 58 deletions(-) diff --git a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js index ebaec94c3355..e7c3e49adb36 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js @@ -9,21 +9,24 @@ const propTypes = { /** Whether the video is currently being hovered over */ isHovered: PropTypes.bool, + + shouldUseSharedVideoElement: PropTypes.bool, }; const defaultProps = { isHovered: false, + shouldUseSharedVideoElement: false, }; -function AttachmentViewVideo({source, isHovered}) { +function AttachmentViewVideo({source, isHovered, shouldUseSharedVideoElement}) { const {isSmallScreenWidth} = useWindowDimensions(); return ( ); } diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 770870151acf..9f338281c812 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -4,6 +4,7 @@ import PropTypes from 'prop-types'; import React, {useCallback, useEffect, useRef, useState} from 'react'; import {View} from 'react-native'; import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; +import Hoverable from '@components/Hoverable'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; @@ -30,7 +31,7 @@ const propTypes = { shouldUseSmallVideoControls: PropTypes.bool, - isHovered: PropTypes.bool, + isVideoHovered: PropTypes.bool, }; const defaultProps = { @@ -42,10 +43,10 @@ const defaultProps = { videoStyle: undefined, shouldUseSharedVideoElement: false, shouldUseSmallVideoControls: false, - isHovered: true, + isVideoHovered: false, }; -function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement, shouldUseSmallVideoControls, isHovered}) { +function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement, shouldUseSmallVideoControls, isVideoHovered}) { const styles = useThemeStyles(); const {isSmallScreenWidth} = useWindowDimensions(); const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, shareVideoPlayerElements, currentVideoPlayerRef} = usePlaybackContext(); @@ -57,7 +58,7 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty const videoPlayerElementParentRef = useRef(null); const videoPlayerElementRef = useRef(null); const sharedVideoPlayerParentRef = useRef(null); - const sourceURLWithAuth = addEncryptedAuthTokenToURL(url); + const [sourceURL] = useState(url.includes('blob:') ? url : addEncryptedAuthTokenToURL(url)); const onPlaybackStatusUpdate = useCallback((e) => { const isVideoPlaying = e.isPlaying || false; @@ -104,63 +105,67 @@ function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, sty }, [bindFunctions, currentVideoPlayerRef, currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); return ( - - {shouldUseSharedVideoElement ? ( - <> - - {/* We are adding transaprent absolute View between appended video component and conttrol buttons to enable + + {(isHovered) => ( + + {shouldUseSharedVideoElement ? ( + <> + + {/* We are adding transaprent absolute View between appended video component and conttrol buttons to enable catching onMosue events from Attachment Carousel. Due to late appending React doesn't handle element's events properly. */} - - - ) : ( - { - if (!el) { - return; - } - videoPlayerElementParentRef.current = el; - if (el.childNodes && el.childNodes[0]) { - videoPlayerElementRef.current = el.childNodes[0]; - } - }} - > - - + + ) : ( + { + if (!el) { + return; + } + videoPlayerElementParentRef.current = el; + if (el.childNodes && el.childNodes[0]) { + videoPlayerElementRef.current = el.childNodes[0]; + } }} - shouldPlay={shouldPlay} - useNativeControls={false} - resizeMode={resizeMode} - isLooping={isLooping} - onReadyForDisplay={onVideoLoaded} - onPlaybackStatusUpdate={onPlaybackStatusUpdate} + > + + + + + )} + + {isLoading && } + + {!isLoading && (isVideoHovered || isHovered) && ( + - + )} )} - - {isLoading && } - - {!isLoading && isHovered && ( - - )} - + ); } From f9ce18260e867eb021b47b6d163f10bfa621f409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 28 Dec 2023 12:21:37 +0100 Subject: [PATCH 063/701] Fix shared video player in attachment modal --- src/components/Attachments/AttachmentView/index.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/components/Attachments/AttachmentView/index.js b/src/components/Attachments/AttachmentView/index.js index a48c054d9a67..1b9643086743 100755 --- a/src/components/Attachments/AttachmentView/index.js +++ b/src/components/Attachments/AttachmentView/index.js @@ -201,14 +201,7 @@ function AttachmentView({ return ( ); From 3bb83557aa55d6bd24c4731eb8b1bdc739247fcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 28 Dec 2023 13:15:48 +0100 Subject: [PATCH 064/701] Remove js MenuItem component --- src/components/MenuItem.js | 417 ------------------------------------ src/components/MenuItem.tsx | 4 + 2 files changed, 4 insertions(+), 417 deletions(-) delete mode 100644 src/components/MenuItem.js diff --git a/src/components/MenuItem.js b/src/components/MenuItem.js deleted file mode 100644 index e2517149b08f..000000000000 --- a/src/components/MenuItem.js +++ /dev/null @@ -1,417 +0,0 @@ -import ExpensiMark from 'expensify-common/lib/ExpensiMark'; -import React, {useEffect, useMemo} from 'react'; -import {View} from 'react-native'; -import _ from 'underscore'; -import useStyleUtils from '@hooks/useStyleUtils'; -import useTheme from '@hooks/useTheme'; -import useThemeStyles from '@hooks/useThemeStyles'; -import useWindowDimensions from '@hooks/useWindowDimensions'; -import ControlSelection from '@libs/ControlSelection'; -import convertToLTR from '@libs/convertToLTR'; -import * as DeviceCapabilities from '@libs/DeviceCapabilities'; -import getButtonState from '@libs/getButtonState'; -import variables from '@styles/variables'; -import * as Session from '@userActions/Session'; -import CONST from '@src/CONST'; -import Avatar from './Avatar'; -import Badge from './Badge'; -import DisplayNames from './DisplayNames'; -import FormHelpMessage from './FormHelpMessage'; -import Hoverable from './Hoverable'; -import Icon from './Icon'; -import * as Expensicons from './Icon/Expensicons'; -import * as defaultWorkspaceAvatars from './Icon/WorkspaceDefaultAvatars'; -import menuItemPropTypes from './menuItemPropTypes'; -import MultipleAvatars from './MultipleAvatars'; -import PressableWithSecondaryInteraction from './PressableWithSecondaryInteraction'; -import RenderHTML from './RenderHTML'; -import SelectCircle from './SelectCircle'; -import Text from './Text'; - -const propTypes = menuItemPropTypes; - -const defaultProps = { - badgeText: undefined, - shouldShowRightIcon: false, - shouldShowSelectedState: false, - shouldShowBasicTitle: false, - shouldShowDescriptionOnTop: false, - shouldShowHeaderTitle: false, - shouldParseTitle: false, - wrapperStyle: [], - style: undefined, - titleStyle: {}, - shouldShowTitleIcon: false, - titleIcon: () => {}, - descriptionTextStyle: undefined, - success: false, - icon: undefined, - secondaryIcon: undefined, - iconWidth: undefined, - iconHeight: undefined, - description: undefined, - iconRight: Expensicons.ArrowRight, - iconStyles: [], - iconFill: undefined, - secondaryIconFill: undefined, - focused: false, - disabled: false, - isSelected: false, - subtitle: undefined, - iconType: CONST.ICON_TYPE_ICON, - onPress: () => {}, - onSecondaryInteraction: undefined, - interactive: true, - fallbackIcon: Expensicons.FallbackAvatar, - brickRoadIndicator: '', - floatRightAvatars: [], - shouldStackHorizontally: false, - avatarSize: CONST.AVATAR_SIZE.DEFAULT, - floatRightAvatarSize: undefined, - shouldBlockSelection: false, - hoverAndPressStyle: [], - furtherDetails: '', - furtherDetailsIcon: undefined, - isAnonymousAction: false, - isSmallAvatarSubscriptMenu: false, - title: '', - numberOfLinesTitle: 1, - shouldGreyOutWhenDisabled: true, - error: '', - shouldRenderAsHTML: false, - rightLabel: '', - rightComponent: undefined, - shouldShowRightComponent: false, - titleWithTooltips: [], - shouldCheckActionAllowedOnPress: true, - shouldPutLeftPaddingWhenNoIcon: false, -}; - -const MenuItem = React.forwardRef((props, ref) => { - const theme = useTheme(); - const styles = useThemeStyles(); - const StyleUtils = useStyleUtils(); - const style = StyleUtils.combineStyles(props.style, styles.popoverMenuItem); - const {isSmallScreenWidth} = useWindowDimensions(); - const [html, setHtml] = React.useState(''); - - const isDeleted = _.contains(style, styles.offlineFeedback.deleted); - const descriptionVerticalMargin = props.shouldShowDescriptionOnTop ? styles.mb1 : styles.mt1; - const titleTextStyle = StyleUtils.combineStyles( - [ - styles.flexShrink1, - styles.popoverMenuText, - props.icon && !_.isArray(props.icon) && (props.avatarSize === CONST.AVATAR_SIZE.SMALL ? styles.ml2 : styles.ml3), - props.shouldShowBasicTitle ? undefined : styles.textStrong, - props.shouldShowHeaderTitle ? styles.textHeadlineH1 : undefined, - props.numberOfLinesTitle !== 1 ? styles.preWrap : styles.pre, - props.interactive && props.disabled ? {...styles.userSelectNone} : undefined, - styles.ltr, - isDeleted ? styles.offlineFeedback.deleted : undefined, - props.titleTextStyle, - ], - props.titleStyle, - ); - const descriptionTextStyle = StyleUtils.combineStyles([ - styles.textLabelSupporting, - props.icon && !_.isArray(props.icon) ? styles.ml3 : undefined, - props.title ? descriptionVerticalMargin : StyleUtils.getFontSizeStyle(variables.fontSizeNormal), - props.descriptionTextStyle || styles.breakWord, - isDeleted ? styles.offlineFeedback.deleted : undefined, - ]); - - const fallbackAvatarSize = props.viewMode === CONST.OPTION_MODE.COMPACT ? CONST.AVATAR_SIZE.SMALL : CONST.AVATAR_SIZE.DEFAULT; - - const titleRef = React.useRef(''); - useEffect(() => { - if (!props.title || (titleRef.current.length && titleRef.current === props.title) || !props.shouldParseTitle) { - return; - } - const parser = new ExpensiMark(); - setHtml(parser.replace(props.title)); - titleRef.current = props.title; - }, [props.title, props.shouldParseTitle]); - - const getProcessedTitle = useMemo(() => { - let title = ''; - if (props.shouldRenderAsHTML) { - title = convertToLTR(props.title); - } - - if (props.shouldParseTitle) { - title = html; - } - - return title ? `${title}` : ''; - }, [props.title, props.shouldRenderAsHTML, props.shouldParseTitle, html]); - - const hasPressableRightComponent = props.iconRight || (props.rightComponent && props.shouldShowRightComponent); - - const renderTitleContent = () => { - if (props.titleWithTooltips && _.isArray(props.titleWithTooltips) && props.titleWithTooltips.length > 0) { - return ( - - ); - } - - return convertToLTR(props.title); - }; - - const onPressAction = (e) => { - if (props.disabled || !props.interactive) { - return; - } - - if (e && e.type === 'click') { - e.currentTarget.blur(); - } - - props.onPress(e); - }; - - return ( - - {(isHovered) => ( - props.shouldBlockSelection && isSmallScreenWidth && DeviceCapabilities.canUseTouchScreen() && ControlSelection.block()} - onPressOut={ControlSelection.unblock} - onSecondaryInteraction={props.onSecondaryInteraction} - style={({pressed}) => [ - props.containerStyle, - props.errorText ? styles.pb5 : {}, - style, - !props.interactive && styles.cursorDefault, - StyleUtils.getButtonBackgroundColorStyle(getButtonState(props.focused || isHovered, pressed, props.success, props.disabled, props.interactive), true), - (isHovered || pressed) && props.hoverAndPressStyle, - ...(_.isArray(props.wrapperStyle) ? props.wrapperStyle : [props.wrapperStyle]), - props.shouldGreyOutWhenDisabled && props.disabled && styles.buttonOpacityDisabled, - ]} - disabled={props.disabled} - ref={ref} - role={CONST.ROLE.MENUITEM} - accessibilityLabel={props.title ? props.title.toString() : ''} - > - {({pressed}) => ( - <> - - {Boolean(props.label) && ( - - - {props.label} - - - )} - - {Boolean(props.icon) && _.isArray(props.icon) && ( - - )} - {!props.icon && props.shouldPutLeftPaddingWhenNoIcon && ( - - )} - {Boolean(props.icon) && !_.isArray(props.icon) && ( - - {props.iconType === CONST.ICON_TYPE_ICON && ( - - )} - {props.iconType === CONST.ICON_TYPE_WORKSPACE && ( - - )} - {props.iconType === CONST.ICON_TYPE_AVATAR && ( - - )} - - )} - - {Boolean(props.secondaryIcon) && ( - - - - )} - - {Boolean(props.description) && props.shouldShowDescriptionOnTop && ( - - {props.description} - - )} - - {Boolean(props.title) && (Boolean(props.shouldRenderAsHTML) || (Boolean(props.shouldParseTitle) && Boolean(html.length))) && ( - - - - )} - {!props.shouldRenderAsHTML && !props.shouldParseTitle && Boolean(props.title) && ( - - {renderTitleContent()} - - )} - {Boolean(props.shouldShowTitleIcon) && ( - - - - )} - - {Boolean(props.description) && !props.shouldShowDescriptionOnTop && ( - - {props.description} - - )} - {Boolean(props.error) && ( - - {props.error} - - )} - {Boolean(props.furtherDetails) && ( - - - - {props.furtherDetails} - - - )} - - - - - {Boolean(props.badgeText) && ( - - )} - {/* Since subtitle can be of type number, we should allow 0 to be shown */} - {(props.subtitle || props.subtitle === 0) && ( - - {props.subtitle} - - )} - {!_.isEmpty(props.floatRightAvatars) && ( - - - - )} - {Boolean(props.brickRoadIndicator) && ( - - - - )} - {Boolean(props.rightLabel) && ( - - {props.rightLabel} - - )} - {Boolean(props.shouldShowRightIcon) && ( - - - - )} - {props.shouldShowRightComponent && props.rightComponent} - {props.shouldShowSelectedState && } - - {Boolean(props.errorText) && ( - - )} - - )} - - )} - - ); -}); - -MenuItem.propTypes = propTypes; -MenuItem.defaultProps = defaultProps; -MenuItem.displayName = 'MenuItem'; - -export default MenuItem; diff --git a/src/components/MenuItem.tsx b/src/components/MenuItem.tsx index db150d55f0d2..37a9405bfd03 100644 --- a/src/components/MenuItem.tsx +++ b/src/components/MenuItem.tsx @@ -230,6 +230,8 @@ type MenuItemProps = (ResponsiveProps | UnresponsiveProps) & /** Determines how the icon should be resized to fit its container */ contentFit?: ImageContentFit; + + shouldPutLeftPaddingWhenNoIcon?: boolean; }; function MenuItem( @@ -292,6 +294,7 @@ function MenuItem( titleWithTooltips, displayInDefaultIconColor = false, contentFit = 'cover', + shouldPutLeftPaddingWhenNoIcon = false, }: MenuItemProps, ref: ForwardedRef, ) { @@ -429,6 +432,7 @@ function MenuItem( ]} /> )} + {!icon && shouldPutLeftPaddingWhenNoIcon && } {icon && !Array.isArray(icon) && ( {typeof icon !== 'string' && iconType === CONST.ICON_TYPE_ICON && ( From bc80ac10f05bf167f0d7a91d195deed1c5fb705a Mon Sep 17 00:00:00 2001 From: Fitsum Abebe Date: Thu, 28 Dec 2023 15:45:47 +0300 Subject: [PATCH 065/701] migrated DistanceEReceipt to typescript --- ...stanceEReceipt.js => DistanceEReceipt.tsx} | 49 ++++++++----------- 1 file changed, 21 insertions(+), 28 deletions(-) rename src/components/{DistanceEReceipt.js => DistanceEReceipt.tsx} (77%) diff --git a/src/components/DistanceEReceipt.js b/src/components/DistanceEReceipt.tsx similarity index 77% rename from src/components/DistanceEReceipt.js rename to src/components/DistanceEReceipt.tsx index 0241eea44063..c9976988dab5 100644 --- a/src/components/DistanceEReceipt.js +++ b/src/components/DistanceEReceipt.tsx @@ -1,52 +1,47 @@ -import lodashGet from 'lodash/get'; +import _ from 'lodash'; import React, {useMemo} from 'react'; import {ScrollView, View} from 'react-native'; -import _ from 'underscore'; import EReceiptBackground from '@assets/images/eReceipt_background.svg'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; -import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import * as CurrencyUtils from '@libs/CurrencyUtils'; import * as ReceiptUtils from '@libs/ReceiptUtils'; import * as ReportUtils from '@libs/ReportUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; import tryResolveUrlFromApiRoot from '@libs/tryResolveUrlFromApiRoot'; +import {TranslationPaths} from '@src/languages/types'; +import {Transaction} from '@src/types/onyx'; +import {WaypointCollection} from '@src/types/onyx/Transaction'; import Icon from './Icon'; import * as Expensicons from './Icon/Expensicons'; import ImageSVG from './ImageSVG'; import PendingMapView from './MapView/PendingMapView'; import Text from './Text'; import ThumbnailImage from './ThumbnailImage'; -import transactionPropTypes from './transactionPropTypes'; -const propTypes = { +type DistanceEReceiptProps = { /** The transaction for the distance request */ - transaction: transactionPropTypes, + transaction: Transaction; }; -const defaultProps = { - transaction: {}, -}; - -function DistanceEReceipt({transaction}) { - const theme = useTheme(); +function DistanceEReceipt({transaction}: DistanceEReceiptProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); const {isOffline} = useNetwork(); - const {thumbnail} = TransactionUtils.hasReceipt(transaction) ? ReceiptUtils.getThumbnailAndImageURIs(transaction) : {}; - const {amount: transactionAmount, currency: transactionCurrency, merchant: transactionMerchant, created: transactionDate} = ReportUtils.getTransactionDetails(transaction); + const {thumbnail = ''} = TransactionUtils.hasReceipt(transaction) ? ReceiptUtils.getThumbnailAndImageURIs(transaction) : {}; + const {amount: transactionAmount, currency: transactionCurrency, merchant: transactionMerchant, created: transactionDate} = ReportUtils.getTransactionDetails(transaction) ?? {}; const formattedTransactionAmount = transactionAmount ? CurrencyUtils.convertToDisplayString(transactionAmount, transactionCurrency) : translate('common.tbd'); - const thumbnailSource = tryResolveUrlFromApiRoot(thumbnail || ''); - const waypoints = lodashGet(transaction, 'comment.waypoints', {}); - const sortedWaypoints = useMemo( + const thumbnailSource = tryResolveUrlFromApiRoot((thumbnail as string) || ''); + const waypoints = useMemo(() => transaction?.comment?.waypoints ?? {}, [transaction?.comment?.waypoints]); + const sortedWaypoints = useMemo( () => // The waypoint keys are sometimes out of order _.chain(waypoints) .keys() .sort((keyA, keyB) => TransactionUtils.getWaypointIndex(keyA) - TransactionUtils.getWaypointIndex(keyB)) .map((key) => ({[key]: waypoints[key]})) - .reduce((result, obj) => (obj ? _.assign(result, obj) : result), {}) + .reduce((result, obj) => (obj ? Object.assign(result, obj) : result), {}) .value(), [waypoints], ); @@ -64,7 +59,7 @@ function DistanceEReceipt({transaction}) { /> - {isOffline || !thumbnailSource ? ( + {isOffline === true || !thumbnailSource ? ( ) : ( {transactionMerchant} - {_.map(sortedWaypoints, (waypoint, key) => { + {Object.entries(sortedWaypoints).map(([key, waypoint]) => { const index = TransactionUtils.getWaypointIndex(key); let descriptionKey = 'distance.waypointDescription.'; if (index === 0) { descriptionKey += 'start'; - } else if (index === _.size(waypoints) - 1) { + } else if (index === Object.keys(waypoints).length - 1) { descriptionKey += 'finish'; } else { descriptionKey += 'stop'; @@ -95,9 +90,9 @@ function DistanceEReceipt({transaction}) { style={styles.gap1} key={key} > - {translate(descriptionKey)} - {waypoint.name && {waypoint.name}} - {waypoint.address && {waypoint.address}} + {translate(descriptionKey as TranslationPaths)} + {waypoint?.name && {waypoint.name}} + {waypoint?.address && {waypoint.address}} ); })} @@ -110,7 +105,6 @@ function DistanceEReceipt({transaction}) { @@ -122,7 +116,6 @@ function DistanceEReceipt({transaction}) { ); } -export default DistanceEReceipt; DistanceEReceipt.displayName = 'DistanceEReceipt'; -DistanceEReceipt.propTypes = propTypes; -DistanceEReceipt.defaultProps = defaultProps; + +export default DistanceEReceipt; From 6feacea53e275f7e61cdfed39ba9c721150d2b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 28 Dec 2023 16:03:32 +0100 Subject: [PATCH 066/701] Change native devices behavior --- src/components/VideoPlayer/BaseVideoPlayer.js | 176 +++++++++++++++++ src/components/VideoPlayer/index.js | 180 +----------------- src/components/VideoPlayer/index.native.js | 17 ++ 3 files changed, 203 insertions(+), 170 deletions(-) create mode 100644 src/components/VideoPlayer/BaseVideoPlayer.js create mode 100644 src/components/VideoPlayer/index.native.js diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js new file mode 100644 index 000000000000..501371066c7f --- /dev/null +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -0,0 +1,176 @@ +/* eslint-disable no-underscore-dangle */ +import {ResizeMode, Video} from 'expo-av'; +import PropTypes from 'prop-types'; +import React, {useCallback, useEffect, useRef, useState} from 'react'; +import {View} from 'react-native'; +import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; +import Hoverable from '@components/Hoverable'; +import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; +import useThemeStyles from '@hooks/useThemeStyles'; +import useWindowDimensions from '@hooks/useWindowDimensions'; +import addEncryptedAuthTokenToURL from '@libs/addEncryptedAuthTokenToURL'; +import stylePropTypes from '@styles/stylePropTypes'; +import VideoPlayerControls from './VideoPlayerControls'; + +const propTypes = { + url: PropTypes.string.isRequired, + + shouldPlay: PropTypes.bool, + + onVideoLoaded: PropTypes.func, + + resizeMode: PropTypes.string, + + isLooping: PropTypes.bool, + + style: stylePropTypes, + + videoStyle: stylePropTypes, + + shouldUseSharedVideoElement: PropTypes.bool, + + shouldUseSmallVideoControls: PropTypes.bool, + + isVideoHovered: PropTypes.bool, +}; + +const defaultProps = { + shouldPlay: false, + onVideoLoaded: () => {}, + resizeMode: ResizeMode.CONTAIN, + isLooping: false, + style: undefined, + videoStyle: undefined, + shouldUseSharedVideoElement: false, + shouldUseSmallVideoControls: false, + isVideoHovered: false, +}; + +function BaseVideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement, shouldUseSmallVideoControls, isVideoHovered}) { + const styles = useThemeStyles(); + const {isSmallScreenWidth} = useWindowDimensions(); + const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, shareVideoPlayerElements, currentVideoPlayerRef} = usePlaybackContext(); + const [duration, setDuration] = useState(0); + const [position, setPosition] = useState(0); + const [isPlaying, setIsPlaying] = useState(false); + const [isLoading, setIsLoading] = useState(true); + const videoPlayerRef = useRef(null); + const videoPlayerElementParentRef = useRef(null); + const videoPlayerElementRef = useRef(null); + const sharedVideoPlayerParentRef = useRef(null); + const [sourceURL] = useState(url.includes('blob:') ? url : addEncryptedAuthTokenToURL(url)); + + const onPlaybackStatusUpdate = useCallback((e) => { + const isVideoPlaying = e.isPlaying || false; + setIsPlaying(isVideoPlaying); + setIsLoading(Number.isNaN(e.durationMillis)); // when video is ready to display duration is not NaN + setDuration(e.durationMillis || 0); + setPosition(e.positionMillis || 0); + }, []); + + const bindFunctions = useCallback(() => { + currentVideoPlayerRef.current._onPlaybackStatusUpdate = onPlaybackStatusUpdate; + // update states after binding + currentVideoPlayerRef.current.getStatusAsync().then((status) => { + onPlaybackStatusUpdate(status); + }); + }, [currentVideoPlayerRef, onPlaybackStatusUpdate]); + + // update shared video elements + useEffect(() => { + if (shouldUseSharedVideoElement || url !== currentlyPlayingURL) { + return; + } + shareVideoPlayerElements(videoPlayerRef.current, videoPlayerElementParentRef.current, videoPlayerElementRef.current); + }, [currentlyPlayingURL, shouldUseSharedVideoElement, shareVideoPlayerElements, updateSharedElements, url]); + + // append shared video element to new parent (used for example in attachment modal) + useEffect(() => { + if (url !== currentlyPlayingURL || !sharedElement || !shouldUseSharedVideoElement) { + return; + } + + const newParentRef = sharedVideoPlayerParentRef.current; + videoPlayerRef.current = currentVideoPlayerRef.current; + if (currentlyPlayingURL === url) { + newParentRef.appendChild(sharedElement); + bindFunctions(); + } + return () => { + if (!originalParent && !newParentRef.childNodes[0]) { + return; + } + originalParent.appendChild(sharedElement); + }; + }, [bindFunctions, currentVideoPlayerRef, currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); + + return ( + + {(isHovered) => ( + + {shouldUseSharedVideoElement ? ( + <> + + {/* We are adding transaprent absolute View between appended video component and conttrol buttons to enable + catching onMosue events from Attachment Carousel. Due to late appending React doesn't handle + element's events properly. */} + + + ) : ( + { + if (!el) { + return; + } + videoPlayerElementParentRef.current = el; + if (el.childNodes && el.childNodes[0]) { + videoPlayerElementRef.current = el.childNodes[0]; + } + }} + > + + + + + )} + + {isLoading && } + + {!isLoading && (isVideoHovered || isHovered) && ( + + )} + + )} + + ); +} + +BaseVideoPlayer.propTypes = propTypes; +BaseVideoPlayer.defaultProps = defaultProps; +BaseVideoPlayer.displayName = 'VideoPlayer'; + +export default BaseVideoPlayer; diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 9f338281c812..f40968a0295b 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -1,176 +1,16 @@ -/* eslint-disable no-underscore-dangle */ -import {ResizeMode, Video} from 'expo-av'; -import PropTypes from 'prop-types'; -import React, {useCallback, useEffect, useRef, useState} from 'react'; -import {View} from 'react-native'; -import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; -import Hoverable from '@components/Hoverable'; -import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; -import useThemeStyles from '@hooks/useThemeStyles'; -import useWindowDimensions from '@hooks/useWindowDimensions'; -import addEncryptedAuthTokenToURL from '@libs/addEncryptedAuthTokenToURL'; -import stylePropTypes from '@styles/stylePropTypes'; -import VideoPlayerControls from './VideoPlayerControls'; - -const propTypes = { - url: PropTypes.string.isRequired, - - shouldPlay: PropTypes.bool, - - onVideoLoaded: PropTypes.func, - - resizeMode: PropTypes.string, - - isLooping: PropTypes.bool, - - style: stylePropTypes, - - videoStyle: stylePropTypes, - - shouldUseSharedVideoElement: PropTypes.bool, - - shouldUseSmallVideoControls: PropTypes.bool, - - isVideoHovered: PropTypes.bool, -}; - -const defaultProps = { - shouldPlay: false, - onVideoLoaded: () => {}, - resizeMode: ResizeMode.CONTAIN, - isLooping: false, - style: undefined, - videoStyle: undefined, - shouldUseSharedVideoElement: false, - shouldUseSmallVideoControls: false, - isVideoHovered: false, -}; - -function VideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement, shouldUseSmallVideoControls, isVideoHovered}) { - const styles = useThemeStyles(); - const {isSmallScreenWidth} = useWindowDimensions(); - const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, shareVideoPlayerElements, currentVideoPlayerRef} = usePlaybackContext(); - const [duration, setDuration] = useState(0); - const [position, setPosition] = useState(0); - const [isPlaying, setIsPlaying] = useState(false); - const [isLoading, setIsLoading] = useState(true); - const videoPlayerRef = useRef(null); - const videoPlayerElementParentRef = useRef(null); - const videoPlayerElementRef = useRef(null); - const sharedVideoPlayerParentRef = useRef(null); - const [sourceURL] = useState(url.includes('blob:') ? url : addEncryptedAuthTokenToURL(url)); - - const onPlaybackStatusUpdate = useCallback((e) => { - const isVideoPlaying = e.isPlaying || false; - setIsPlaying(isVideoPlaying); - setIsLoading(Number.isNaN(e.durationMillis)); // when video is ready to display duration is not NaN - setDuration(e.durationMillis || 0); - setPosition(e.positionMillis || 0); - }, []); - - const bindFunctions = useCallback(() => { - currentVideoPlayerRef.current._onPlaybackStatusUpdate = onPlaybackStatusUpdate; - // update states after binding - currentVideoPlayerRef.current.getStatusAsync().then((status) => { - onPlaybackStatusUpdate(status); - }); - }, [currentVideoPlayerRef, onPlaybackStatusUpdate]); - - // update shared video elements - useEffect(() => { - if (shouldUseSharedVideoElement || url !== currentlyPlayingURL) { - return; - } - shareVideoPlayerElements(videoPlayerRef.current, videoPlayerElementParentRef.current, videoPlayerElementRef.current); - }, [currentlyPlayingURL, shouldUseSharedVideoElement, shareVideoPlayerElements, updateSharedElements, url]); - - // append shared video element to new parent (used for example in attachment modal) - useEffect(() => { - if (url !== currentlyPlayingURL || !sharedElement || !shouldUseSharedVideoElement) { - return; - } - - const newParentRef = sharedVideoPlayerParentRef.current; - videoPlayerRef.current = currentVideoPlayerRef.current; - if (currentlyPlayingURL === url) { - newParentRef.appendChild(sharedElement); - bindFunctions(); - } - return () => { - if (!originalParent && !newParentRef.childNodes[0]) { - return; - } - originalParent.appendChild(sharedElement); - }; - }, [bindFunctions, currentVideoPlayerRef, currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); +import React, {forwardRef} from 'react'; +import VideoPlayer from './BaseVideoPlayer'; +function BaseVideoPlayer(props, ref) { return ( - - {(isHovered) => ( - - {shouldUseSharedVideoElement ? ( - <> - - {/* We are adding transaprent absolute View between appended video component and conttrol buttons to enable - catching onMosue events from Attachment Carousel. Due to late appending React doesn't handle - element's events properly. */} - - - ) : ( - { - if (!el) { - return; - } - videoPlayerElementParentRef.current = el; - if (el.childNodes && el.childNodes[0]) { - videoPlayerElementRef.current = el.childNodes[0]; - } - }} - > - - - - - )} - - {isLoading && } - - {!isLoading && (isVideoHovered || isHovered) && ( - - )} - - )} - + ); } -VideoPlayer.propTypes = propTypes; -VideoPlayer.defaultProps = defaultProps; -VideoPlayer.displayName = 'VideoPlayer'; +BaseVideoPlayer.displayName = 'VideoPlayer'; -export default VideoPlayer; +export default forwardRef(BaseVideoPlayer); diff --git a/src/components/VideoPlayer/index.native.js b/src/components/VideoPlayer/index.native.js new file mode 100644 index 000000000000..cc49448d20c7 --- /dev/null +++ b/src/components/VideoPlayer/index.native.js @@ -0,0 +1,17 @@ +import React, {forwardRef} from 'react'; +import VideoPlayer from './BaseVideoPlayer'; + +function BaseVideoPlayer(props, ref) { + return ( + + ); +} + +BaseVideoPlayer.displayName = 'VideoPlayer'; + +export default forwardRef(BaseVideoPlayer); From 0fd86d54725cb20ec65adcd620d6a4d1735c19bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 28 Dec 2023 18:01:53 +0100 Subject: [PATCH 067/701] Fix progress bars on native devices --- .../VideoPlayerControls/ProgressBar/index.js | 18 ++++++++++-------- .../VideoPlayerControls/VolumeButton/index.js | 15 ++++++++++----- src/components/VideoPlayer/index.native.js | 1 + 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js b/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js index 63439ceb1cc3..ce668f1be942 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js @@ -1,8 +1,7 @@ import PropTypes from 'prop-types'; import React, {useEffect, useState} from 'react'; -import {View} from 'react-native'; import {Gesture, GestureDetector} from 'react-native-gesture-handler'; -import Animated, {runOnJS, useAnimatedStyle, useSharedValue} from 'react-native-reanimated'; +import Animated, {runOnJS, useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -42,21 +41,24 @@ function ProgressBar({togglePlayCurrentVideo, duration, position, seekPosition}) }); useEffect(() => { - progressWidth.value = (position / duration) * 100; + progressWidth.value = withTiming((position / duration) * 100, {duration: 300}); }, [duration, position, progressWidth]); const progressBarStyle = useAnimatedStyle(() => ({width: `${progressWidth.value}%`})); return ( - - + - - - + + + ); } diff --git a/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js b/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js index 77ac718a3459..db8618d76e44 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js @@ -2,7 +2,7 @@ import PropTypes from 'prop-types'; import React, {memo, useState} from 'react'; import {View} from 'react-native'; import {Gesture, GestureDetector} from 'react-native-gesture-handler'; -import Animated, {runOnJS, useAnimatedStyle} from 'react-native-reanimated'; +import Animated, {runOnJS, useAnimatedStyle, useDerivedValue} from 'react-native-reanimated'; import Hoverable from '@components/Hoverable'; import * as Expensicons from '@components/Icon/Expensicons'; import IconButton from '@components/VideoPlayer/IconButton'; @@ -54,11 +54,16 @@ function VolumeButton({style, small}) { runOnJS(setIsSliderBeingUsed)(false); }); - const progressBarStyle = useAnimatedStyle(() => { + const progressBarStyle = useAnimatedStyle(() => ({height: `${volume.value * 100}%`})); + + const updateIcon = (vol) => { + setVolumeIcon({icon: getVolumeIcon(vol)}); + }; + + useDerivedValue(() => { runOnJS(updateVolume)(volume.value); - runOnJS(setVolumeIcon)({icon: getVolumeIcon(volume.value)}); - return {height: `${volume.value * 100}%`}; - }); + runOnJS(updateIcon)(volume.value); + }, [volume]); return ( diff --git a/src/components/VideoPlayer/index.native.js b/src/components/VideoPlayer/index.native.js index cc49448d20c7..403867629c1d 100644 --- a/src/components/VideoPlayer/index.native.js +++ b/src/components/VideoPlayer/index.native.js @@ -6,6 +6,7 @@ function BaseVideoPlayer(props, ref) { From f51aaf23543b25d55c3d39647b32cfed62599fe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 29 Dec 2023 10:38:15 +0100 Subject: [PATCH 068/701] Fix volume updating on native devices --- .../VideoPlayer/VideoPlayerControls/VolumeButton/index.js | 1 - src/components/VideoPlayerContexts/VolumeContext.js | 7 +++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js b/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js index db8618d76e44..42c30e04ba70 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js @@ -61,7 +61,6 @@ function VolumeButton({style, small}) { }; useDerivedValue(() => { - runOnJS(updateVolume)(volume.value); runOnJS(updateIcon)(volume.value); }, [volume]); diff --git a/src/components/VideoPlayerContexts/VolumeContext.js b/src/components/VideoPlayerContexts/VolumeContext.js index c09a95aa31c8..a4826d3f9a88 100644 --- a/src/components/VideoPlayerContexts/VolumeContext.js +++ b/src/components/VideoPlayerContexts/VolumeContext.js @@ -6,7 +6,7 @@ import {usePlaybackContext} from './PlaybackContext'; const VolumeContext = React.createContext(null); function VolumeContextProvider({children}) { - const {currentVideoPlayerRef, sharedElement} = usePlaybackContext(); + const {currentVideoPlayerRef, originalParent} = usePlaybackContext(); const volume = useSharedValue(0); const updateVolume = useCallback( @@ -23,8 +23,11 @@ function VolumeContextProvider({children}) { // We want to update the volume when currently playing video changes. // When sharedElement changed we're sure that currentVideoPlayerRef is updated. So we can apply the new volume. useEffect(() => { + if (!originalParent) { + return; + } updateVolume(volume.value); - }, [sharedElement, updateVolume, volume.value]); + }, [originalParent, updateVolume, volume.value]); const contextValue = useMemo(() => ({updateVolume, volume}), [updateVolume, volume]); return {children}; From 4995ea5f854a2dddf58574d544c7796856778e5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 29 Dec 2023 10:52:52 +0100 Subject: [PATCH 069/701] Change progress bar animation --- .../VideoPlayer/VideoPlayerControls/ProgressBar/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js b/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js index ce668f1be942..6f2ee407471f 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js @@ -1,7 +1,7 @@ import PropTypes from 'prop-types'; import React, {useEffect, useState} from 'react'; import {Gesture, GestureDetector} from 'react-native-gesture-handler'; -import Animated, {runOnJS, useAnimatedStyle, useSharedValue, withTiming} from 'react-native-reanimated'; +import Animated, {runOnJS, useAnimatedStyle, useSharedValue} from 'react-native-reanimated'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -41,7 +41,7 @@ function ProgressBar({togglePlayCurrentVideo, duration, position, seekPosition}) }); useEffect(() => { - progressWidth.value = withTiming((position / duration) * 100, {duration: 300}); + progressWidth.value = (position / duration) * 100; }, [duration, position, progressWidth]); const progressBarStyle = useAnimatedStyle(() => ({width: `${progressWidth.value}%`})); @@ -50,11 +50,11 @@ function ProgressBar({togglePlayCurrentVideo, duration, position, seekPosition}) From f7d47c179d97df6fbfcbc1336a45ac02b181ac2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 29 Dec 2023 11:34:07 +0100 Subject: [PATCH 070/701] Change native video controls style --- src/CONST.ts | 4 +++ .../AttachmentCarousel/CarouselItem.js | 3 ++- src/components/VideoPlayer/BaseVideoPlayer.js | 26 ++++++++++++++++--- .../VideoPlayer/VideoPlayerControls/index.js | 8 ++++-- src/components/VideoPlayer/index.native.js | 3 +++ .../VideoPlayerContexts/VolumeContext.js | 2 +- src/styles/index.ts | 6 ++--- 7 files changed, 42 insertions(+), 10 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index 21d56b9efb3e..8afe47dbd1ca 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -3065,6 +3065,10 @@ const CONST = { HIDE_TIME_TEXT_WIDTH: 250, MIN_WIDTH: 170, MIN_HEIGHT: 120, + CONTROLS_POSITION: { + NATIVE: 32, + NORMAL: 8, + }, }, } as const; diff --git a/src/components/Attachments/AttachmentCarousel/CarouselItem.js b/src/components/Attachments/AttachmentCarousel/CarouselItem.js index 2df43ba82277..5fcb0012d03d 100644 --- a/src/components/Attachments/AttachmentCarousel/CarouselItem.js +++ b/src/components/Attachments/AttachmentCarousel/CarouselItem.js @@ -49,7 +49,7 @@ const propTypes = { /** onPress callback */ onPress: PropTypes.func, - isModalHovered: PropTypes.bool.isRequired, + isModalHovered: PropTypes.bool, /** Whether the attachment is currently being viewed in the carousel */ isFocused: PropTypes.bool.isRequired, @@ -57,6 +57,7 @@ const propTypes = { const defaultProps = { onPress: undefined, + isModalHovered: false, }; function CarouselItem({item, index, activeIndex, isSingleItem, onPress, isFocused, isModalHovered}) { diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index 501371066c7f..f736fc51f49a 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -25,8 +25,12 @@ const propTypes = { style: stylePropTypes, + videoPlayerStyle: stylePropTypes, + videoStyle: stylePropTypes, + videoControlsStyle: stylePropTypes, + shouldUseSharedVideoElement: PropTypes.bool, shouldUseSmallVideoControls: PropTypes.bool, @@ -40,13 +44,28 @@ const defaultProps = { resizeMode: ResizeMode.CONTAIN, isLooping: false, style: undefined, + videoPlayerStyle: undefined, videoStyle: undefined, + videoControlsStyle: undefined, shouldUseSharedVideoElement: false, shouldUseSmallVideoControls: false, isVideoHovered: false, }; -function BaseVideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, style, videoStyle, shouldUseSharedVideoElement, shouldUseSmallVideoControls, isVideoHovered}) { +function BaseVideoPlayer({ + url, + resizeMode, + shouldPlay, + onVideoLoaded, + isLooping, + style, + videoPlayerStyle, + videoStyle, + videoControlsStyle, + shouldUseSharedVideoElement, + shouldUseSmallVideoControls, + isVideoHovered, +}) { const styles = useThemeStyles(); const {isSmallScreenWidth} = useWindowDimensions(); const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, shareVideoPlayerElements, currentVideoPlayerRef} = usePlaybackContext(); @@ -107,7 +126,7 @@ function BaseVideoPlayer({url, resizeMode, shouldPlay, onVideoLoaded, isLooping, return ( {(isHovered) => ( - + {shouldUseSharedVideoElement ? ( <> )} diff --git a/src/components/VideoPlayer/VideoPlayerControls/index.js b/src/components/VideoPlayer/VideoPlayerControls/index.js index f889788a7c21..7f6c3cac89a6 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/index.js @@ -11,6 +11,7 @@ import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContex import {useVideoPopoverMenuContext} from '@components/VideoPlayerContexts/VideoPopoverMenuContext'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; +import stylePropTypes from '@styles/stylePropTypes'; import CONST from '@src/CONST'; import ProgressBar from './ProgressBar'; import VolumeButton from './VolumeButton'; @@ -28,13 +29,16 @@ const propTypes = { // Defines if component should have small icons and tighter spacing inline small: PropTypes.bool, + + style: stylePropTypes, }; const defaultProps = { small: false, + style: undefined, }; -function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying, small}) { +function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying, small, style}) { const styles = useThemeStyles(); const {translate} = useLocalize(); const {pauseVideo, playVideo, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); @@ -80,7 +84,7 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying return ( diff --git a/src/components/VideoPlayer/index.native.js b/src/components/VideoPlayer/index.native.js index 403867629c1d..d50c127f7ca8 100644 --- a/src/components/VideoPlayer/index.native.js +++ b/src/components/VideoPlayer/index.native.js @@ -1,4 +1,5 @@ import React, {forwardRef} from 'react'; +import CONST from '@src/CONST'; import VideoPlayer from './BaseVideoPlayer'; function BaseVideoPlayer(props, ref) { @@ -8,6 +9,8 @@ function BaseVideoPlayer(props, ref) { {...props} isVideoHovered shouldUseSharedVideoElement={false} + // eslint-disable-next-line react/prop-types + videoControlsStyle={[{bottom: CONST.VIDEO_PLAYER.CONTROLS_POSITION.NATIVE}, props.style]} ref={ref} /> ); diff --git a/src/components/VideoPlayerContexts/VolumeContext.js b/src/components/VideoPlayerContexts/VolumeContext.js index a4826d3f9a88..1c38933c608f 100644 --- a/src/components/VideoPlayerContexts/VolumeContext.js +++ b/src/components/VideoPlayerContexts/VolumeContext.js @@ -21,7 +21,7 @@ function VolumeContextProvider({children}) { ); // We want to update the volume when currently playing video changes. - // When sharedElement changed we're sure that currentVideoPlayerRef is updated. So we can apply the new volume. + // When originalParent changed we're sure that currentVideoPlayerRef is updated. So we can apply the new volume. useEffect(() => { if (!originalParent) { return; diff --git a/src/styles/index.ts b/src/styles/index.ts index a430a170fdb3..bf722e7b30a8 100644 --- a/src/styles/index.ts +++ b/src/styles/index.ts @@ -4121,9 +4121,9 @@ const styles = (theme: ThemeColors) => videoPlayerControlsContainer: { position: 'absolute', - bottom: 8, - left: 8, - right: 8, + bottom: CONST.VIDEO_PLAYER.CONTROLS_POSITION.NORMAL, + left: CONST.VIDEO_PLAYER.CONTROLS_POSITION.NORMAL, + right: CONST.VIDEO_PLAYER.CONTROLS_POSITION.NORMAL, backgroundColor: theme.transparentAppBG, borderRadius: 8, flexDirection: 'column', From 689c22710e9a8f0457014630c8919ef344bacb0d Mon Sep 17 00:00:00 2001 From: Fitsum Abebe Date: Sun, 31 Dec 2023 20:49:06 +0300 Subject: [PATCH 071/701] removed lodash functions --- src/components/DistanceEReceipt.tsx | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/components/DistanceEReceipt.tsx b/src/components/DistanceEReceipt.tsx index c9976988dab5..9a90bf13493d 100644 --- a/src/components/DistanceEReceipt.tsx +++ b/src/components/DistanceEReceipt.tsx @@ -1,4 +1,3 @@ -import _ from 'lodash'; import React, {useMemo} from 'react'; import {ScrollView, View} from 'react-native'; import EReceiptBackground from '@assets/images/eReceipt_background.svg'; @@ -37,12 +36,10 @@ function DistanceEReceipt({transaction}: DistanceEReceiptProps) { const sortedWaypoints = useMemo( () => // The waypoint keys are sometimes out of order - _.chain(waypoints) - .keys() + Object.keys(waypoints) .sort((keyA, keyB) => TransactionUtils.getWaypointIndex(keyA) - TransactionUtils.getWaypointIndex(keyB)) .map((key) => ({[key]: waypoints[key]})) - .reduce((result, obj) => (obj ? Object.assign(result, obj) : result), {}) - .value(), + .reduce((result, obj) => (obj ? Object.assign(result, obj) : result), {}), [waypoints], ); return ( From a9124d1ffa16acadf8d4e4a90783d51d47214940 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Tue, 2 Jan 2024 12:35:08 +0100 Subject: [PATCH 072/701] Change video popover menu logic --- src/components/VideoPlayer/BaseVideoPlayer.js | 135 ++++++++++-------- .../VideoPlayer/VideoPlayerControls/index.js | 98 +++++++------ .../VideoPopoverMenuContext.js | 58 +++++--- src/components/VideoPopoverMenu/index.js | 67 +++------ src/pages/home/ReportScreen.js | 3 - 5 files changed, 180 insertions(+), 181 deletions(-) diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index f736fc51f49a..f54297ea5195 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -6,6 +6,7 @@ import {View} from 'react-native'; import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; import Hoverable from '@components/Hoverable'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; +import VideoPopoverMenu from '@components/VideoPopoverMenu'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import addEncryptedAuthTokenToURL from '@libs/addEncryptedAuthTokenToURL'; @@ -78,6 +79,15 @@ function BaseVideoPlayer({ const videoPlayerElementRef = useRef(null); const sharedVideoPlayerParentRef = useRef(null); const [sourceURL] = useState(url.includes('blob:') ? url : addEncryptedAuthTokenToURL(url)); + const [isPopoverVisible, setIsPopoverVisible] = useState(false); + + const showPopoverMenu = (e) => { + setIsPopoverVisible(true); + }; + + const hidePopoverMenu = () => { + setIsPopoverVisible(false); + }; const onPlaybackStatusUpdate = useCallback((e) => { const isVideoPlaying = e.isPlaying || false; @@ -124,68 +134,75 @@ function BaseVideoPlayer({ }, [bindFunctions, currentVideoPlayerRef, currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); return ( - - {(isHovered) => ( - - {shouldUseSharedVideoElement ? ( - <> - - {/* We are adding transaprent absolute View between appended video component and conttrol buttons to enable + <> + + {(isHovered) => ( + + {shouldUseSharedVideoElement ? ( + <> + + {/* We are adding transaprent absolute View between appended video component and conttrol buttons to enable catching onMosue events from Attachment Carousel. Due to late appending React doesn't handle element's events properly. */} - - - ) : ( - { - if (!el) { - return; - } - videoPlayerElementParentRef.current = el; - if (el.childNodes && el.childNodes[0]) { - videoPlayerElementRef.current = el.childNodes[0]; - } - }} - > - - + + + ) : ( + { + if (!el) { + return; + } + videoPlayerElementParentRef.current = el; + if (el.childNodes && el.childNodes[0]) { + videoPlayerElementRef.current = el.childNodes[0]; + } + }} + > + + + - - )} - - {isLoading && } - - {!isLoading && (isVideoHovered || isHovered) && ( - - )} - - )} - + )} + + {isLoading && } + + {!isLoading && (isPopoverVisible || isVideoHovered || isHovered) && ( + + )} + + )} + + + ); } diff --git a/src/components/VideoPlayer/VideoPlayerControls/index.js b/src/components/VideoPlayer/VideoPlayerControls/index.js index 7f6c3cac89a6..2ff11c313922 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/index.js @@ -8,7 +8,6 @@ import Text from '@components/Text'; import IconButton from '@components/VideoPlayer/IconButton'; import convertMillisecondsToTime from '@components/VideoPlayer/utils'; import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContext'; -import {useVideoPopoverMenuContext} from '@components/VideoPlayerContexts/VideoPopoverMenuContext'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import stylePropTypes from '@styles/stylePropTypes'; @@ -31,6 +30,8 @@ const propTypes = { small: PropTypes.bool, style: stylePropTypes, + + showPopoverMenu: PropTypes.func.isRequired, }; const defaultProps = { @@ -38,11 +39,10 @@ const defaultProps = { style: undefined, }; -function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying, small, style}) { +function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying, small, style, showPopoverMenu}) { const styles = useThemeStyles(); const {translate} = useLocalize(); const {pauseVideo, playVideo, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); - const {showPopover} = useVideoPopoverMenuContext(); const [durationFormatted, setDurationFormatted] = useState('0:00'); const [shouldShowTime, setShouldShowTime] = useState(false); const isCurrentlyURLSet = currentlyPlayingURL === url; @@ -74,62 +74,60 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying [videoPlayerRef], ); - const showPopoverMenu = (e) => { - showPopover(videoPlayerRef.current, e.nativeEvent.pageY + CONST.VIDEO_PLAYER.POPOVER_Y_OFFSET, e.nativeEvent.pageX); - }; - useEffect(() => { setDurationFormatted(convertMillisecondsToTime(duration)); }, [duration]); return ( - - - - - {shouldShowTime && ( - - {convertMillisecondsToTime(position)} - / - {durationFormatted} - - )} + <> + + + + + {shouldShowTime && ( + + {convertMillisecondsToTime(position)} + / + {durationFormatted} + + )} + + + + + + - - - - - - - - + + ); } diff --git a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js index 999be60774ce..af16c939935b 100644 --- a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js +++ b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js @@ -1,34 +1,50 @@ import PropTypes from 'prop-types'; -import React, {useCallback, useContext, useMemo, useRef, useState} from 'react'; +import React, {useCallback, useContext, useMemo, useState} from 'react'; +import _ from 'underscore'; +import * as Expensicons from '@components/Icon/Expensicons'; +import useLocalize from '@hooks/useLocalize'; +import CONST from '@src/CONST'; const VideoPopoverMenuContext = React.createContext(null); function VideoPopoverMenuContextProvider({children}) { - const [isPopoverVisible, setIsPopoverVisible] = useState(false); - const [anchorPosition, setAnchorPosition] = useState({vertical: 0, horizontal: 0}); - const targetVideoPlayerRef = useRef(null); + const {translate} = useLocalize(); + const [playbackSpeeds] = useState(CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS); + const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); - const updateAnchorPosition = useCallback((y, x) => { - setAnchorPosition({vertical: y, horizontal: x}); + const updatePlaybackSpeed = useCallback((speed) => { + setCurrentPlaybackSpeed(speed); }, []); - const hidePopover = useCallback(() => { - setIsPopoverVisible(false); - }, []); - - const showPopover = useCallback( - (ref, y = 0, x = 0) => { - setIsPopoverVisible(true); - updateAnchorPosition(y, x); - targetVideoPlayerRef.current = ref; - }, - [updateAnchorPosition], + const menuItems = useMemo( + () => [ + { + icon: Expensicons.Download, + text: translate('common.download'), + onSelected: () => { + // TODO: Implement download + }, + }, + { + icon: Expensicons.Meter, + text: translate('videoPlayer.playbackSpeed'), + subMenuItems: [ + ..._.map(playbackSpeeds, (speed) => ({ + icon: currentPlaybackSpeed === speed ? Expensicons.Checkmark : null, + text: speed.toString(), + onSelected: () => { + // updatePlaybackSpeed(speed); + console.log(`SPEED: ${speed}`); + }, + shouldPutLeftPaddingWhenNoIcon: true, + })), + ], + }, + ], + [currentPlaybackSpeed, playbackSpeeds, translate], ); - const contextValue = useMemo( - () => ({isPopoverVisible, hidePopover, showPopover, anchorPosition, updateAnchorPosition, targetVideoPlayerRef}), - [anchorPosition, hidePopover, isPopoverVisible, showPopover, updateAnchorPosition, targetVideoPlayerRef], - ); + const contextValue = useMemo(() => ({menuItems, updatePlaybackSpeed}), [menuItems, updatePlaybackSpeed]); return {children}; } diff --git a/src/components/VideoPopoverMenu/index.js b/src/components/VideoPopoverMenu/index.js index 2f7227b33a50..fc0866255e79 100644 --- a/src/components/VideoPopoverMenu/index.js +++ b/src/components/VideoPopoverMenu/index.js @@ -1,58 +1,29 @@ -import React, {useEffect, useState} from 'react'; -import _ from 'underscore'; -import * as Expensicons from '@components/Icon/Expensicons'; +import PropTypes from 'prop-types'; +import React from 'react'; import PopoverMenu from '@components/PopoverMenu'; import {useVideoPopoverMenuContext} from '@components/VideoPlayerContexts/VideoPopoverMenuContext'; -import useLocalize from '@hooks/useLocalize'; import useWindowDimensions from '@hooks/useWindowDimensions'; -import CONST from '@src/CONST'; -const propTypes = {}; -const defaultProps = {}; +const propTypes = { + isPopoverVisible: PropTypes.bool.isRequired, -function VideoPopoverMenu() { - const {translate} = useLocalize(); - const {isSmallScreenWidth} = useWindowDimensions(); - const {isPopoverVisible, hidePopover, anchorPosition, targetVideoPlayerRef} = useVideoPopoverMenuContext(); - - const [playbackSpeeds] = useState(CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS); - const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); - - const updatePlaybackSpeed = (speed) => { - targetVideoPlayerRef.current.setStatusAsync({rate: speed}); - setCurrentPlaybackSpeed(speed); - }; + hidePopover: PropTypes.func.isRequired, - const playbackSpeedSubMenuItems = _.map(playbackSpeeds, (speed) => ({ - icon: currentPlaybackSpeed === speed ? Expensicons.Checkmark : null, - text: speed.toString(), - onSelected: () => updatePlaybackSpeed(speed), - shouldPutLeftPaddingWhenNoIcon: true, - })); + anchorPosition: PropTypes.shape({ + horizontal: PropTypes.number.isRequired, + vertical: PropTypes.number.isRequired, + }), +}; +const defaultProps = { + anchorPosition: { + horizontal: 0, + vertical: 0, + }, +}; - const menuItems = [ - { - icon: Expensicons.Download, - text: translate('common.download'), - onSelected: () => { - // TODO: Implement download - }, - }, - { - icon: Expensicons.Meter, - text: translate('videoPlayer.playbackSpeed'), - subMenuItems: playbackSpeedSubMenuItems, - }, - ]; - - useEffect(() => { - if (!isPopoverVisible) { - return; - } - targetVideoPlayerRef.current.getStatusAsync().then((status) => { - setCurrentPlaybackSpeed(status.rate); - }); - }, [isPopoverVisible, playbackSpeeds, targetVideoPlayerRef]); +function VideoPopoverMenu({isPopoverVisible, hidePopover, anchorPosition}) { + const {isSmallScreenWidth} = useWindowDimensions(); + const {menuItems} = useVideoPopoverMenuContext(); return ( - - From 7e81b74a1560e7ed042d8b99e3e56cbc8ee64e56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Tue, 2 Jan 2024 15:14:03 +0100 Subject: [PATCH 073/701] Fix menu options functionalities --- .../VideoPopoverMenuContext.js | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js index af16c939935b..03af50cc9c3e 100644 --- a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js +++ b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js @@ -3,18 +3,33 @@ import React, {useCallback, useContext, useMemo, useState} from 'react'; import _ from 'underscore'; import * as Expensicons from '@components/Icon/Expensicons'; import useLocalize from '@hooks/useLocalize'; +import fileDownload from '@libs/fileDownload'; +import * as Url from '@libs/Url'; import CONST from '@src/CONST'; +import {usePlaybackContext} from './PlaybackContext'; const VideoPopoverMenuContext = React.createContext(null); function VideoPopoverMenuContextProvider({children}) { + const {currentVideoPlayerRef} = usePlaybackContext(); const {translate} = useLocalize(); const [playbackSpeeds] = useState(CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS); const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); - const updatePlaybackSpeed = useCallback((speed) => { - setCurrentPlaybackSpeed(speed); - }, []); + const updatePlaybackSpeed = useCallback( + (speed) => { + setCurrentPlaybackSpeed(speed); + currentVideoPlayerRef.current.setStatusAsync({rate: speed}); + }, + [currentVideoPlayerRef], + ); + + const downloadAttachment = useCallback(() => { + currentVideoPlayerRef.current.getStatusAsync().then((status) => { + const sourceURI = `/${Url.getPathFromURL(status.uri)}`; + fileDownload(sourceURI); + }); + }, [currentVideoPlayerRef]); const menuItems = useMemo( () => [ @@ -22,7 +37,7 @@ function VideoPopoverMenuContextProvider({children}) { icon: Expensicons.Download, text: translate('common.download'), onSelected: () => { - // TODO: Implement download + downloadAttachment(); }, }, { @@ -33,15 +48,14 @@ function VideoPopoverMenuContextProvider({children}) { icon: currentPlaybackSpeed === speed ? Expensicons.Checkmark : null, text: speed.toString(), onSelected: () => { - // updatePlaybackSpeed(speed); - console.log(`SPEED: ${speed}`); + updatePlaybackSpeed(speed); }, shouldPutLeftPaddingWhenNoIcon: true, })), ], }, ], - [currentPlaybackSpeed, playbackSpeeds, translate], + [currentPlaybackSpeed, downloadAttachment, playbackSpeeds, translate, updatePlaybackSpeed], ); const contextValue = useMemo(() => ({menuItems, updatePlaybackSpeed}), [menuItems, updatePlaybackSpeed]); From efeb4466b55dbd2f3247f4e312a58651fd61f24a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Tue, 2 Jan 2024 15:53:44 +0100 Subject: [PATCH 074/701] Fix PopoverMenu items updating --- src/components/PopoverMenu/index.js | 7 ++++--- src/components/VideoPopoverMenu/index.js | 14 ++++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/components/PopoverMenu/index.js b/src/components/PopoverMenu/index.js index 630fe70cd2ca..d1d41b9b7fdc 100644 --- a/src/components/PopoverMenu/index.js +++ b/src/components/PopoverMenu/index.js @@ -113,11 +113,12 @@ function PopoverMenu(props) { ); useEffect(() => { - if (menuItems.length !== 0) { + if (props.menuItems.length === 0) { return; } + setEnteredSubMenuIndexes([]); setMenuItems(props.menuItems); - }, [menuItems, props.menuItems]); + }, [props.menuItems]); return ( { - setMenuItems([]); + setMenuItems(props.menuItems); setEnteredSubMenuIndexes([]); props.onClose(); }} diff --git a/src/components/VideoPopoverMenu/index.js b/src/components/VideoPopoverMenu/index.js index fc0866255e79..82e2324771ab 100644 --- a/src/components/VideoPopoverMenu/index.js +++ b/src/components/VideoPopoverMenu/index.js @@ -2,12 +2,11 @@ import PropTypes from 'prop-types'; import React from 'react'; import PopoverMenu from '@components/PopoverMenu'; import {useVideoPopoverMenuContext} from '@components/VideoPlayerContexts/VideoPopoverMenuContext'; -import useWindowDimensions from '@hooks/useWindowDimensions'; const propTypes = { - isPopoverVisible: PropTypes.bool.isRequired, + isPopoverVisible: PropTypes.bool, - hidePopover: PropTypes.func.isRequired, + hidePopover: PropTypes.func, anchorPosition: PropTypes.shape({ horizontal: PropTypes.number.isRequired, @@ -15,14 +14,15 @@ const propTypes = { }), }; const defaultProps = { + isPopoverVisible: false, anchorPosition: { horizontal: 0, vertical: 0, }, + hidePopover: () => {}, }; function VideoPopoverMenu({isPopoverVisible, hidePopover, anchorPosition}) { - const {isSmallScreenWidth} = useWindowDimensions(); const {menuItems} = useVideoPopoverMenuContext(); return ( @@ -30,8 +30,10 @@ function VideoPopoverMenu({isPopoverVisible, hidePopover, anchorPosition}) { onClose={hidePopover} onItemSelected={hidePopover} isVisible={isPopoverVisible} - anchorPosition={anchorPosition} - fromSidebarMediumScreen={!isSmallScreenWidth} + anchorPosition={{ + horizontal: 0, + vertical: 0, + }} menuItems={menuItems} withoutOverlay /> From a0358004b715b33dea8512b98773d31875d60d47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Wed, 3 Jan 2024 15:28:32 +0100 Subject: [PATCH 075/701] Add popover positioning --- src/components/VideoPlayer/BaseVideoPlayer.js | 3 +++ src/components/VideoPopoverMenu/index.js | 5 +---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index f54297ea5195..dde990c8bc50 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -80,8 +80,10 @@ function BaseVideoPlayer({ const sharedVideoPlayerParentRef = useRef(null); const [sourceURL] = useState(url.includes('blob:') ? url : addEncryptedAuthTokenToURL(url)); const [isPopoverVisible, setIsPopoverVisible] = useState(false); + const [popoverAnchorPosition, setPopoverAnchorPosition] = useState({horizontal: 0, vertical: 0}); const showPopoverMenu = (e) => { + setPopoverAnchorPosition({horizontal: e.nativeEvent.pageX, vertical: e.nativeEvent.pageY}); setIsPopoverVisible(true); }; @@ -201,6 +203,7 @@ function BaseVideoPlayer({ ); diff --git a/src/components/VideoPopoverMenu/index.js b/src/components/VideoPopoverMenu/index.js index 82e2324771ab..01aaa8e35174 100644 --- a/src/components/VideoPopoverMenu/index.js +++ b/src/components/VideoPopoverMenu/index.js @@ -30,10 +30,7 @@ function VideoPopoverMenu({isPopoverVisible, hidePopover, anchorPosition}) { onClose={hidePopover} onItemSelected={hidePopover} isVisible={isPopoverVisible} - anchorPosition={{ - horizontal: 0, - vertical: 0, - }} + anchorPosition={anchorPosition} menuItems={menuItems} withoutOverlay /> From 3983d102a334e37727111c091513607a93a6865d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Wed, 3 Jan 2024 16:34:51 +0100 Subject: [PATCH 076/701] Fix web popover visibility bug after merging main --- src/components/PopoverWithoutOverlay/index.tsx | 3 ++- src/styles/variables.ts | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/PopoverWithoutOverlay/index.tsx b/src/components/PopoverWithoutOverlay/index.tsx index f83949bcbe9d..5d73dfdeb700 100644 --- a/src/components/PopoverWithoutOverlay/index.tsx +++ b/src/components/PopoverWithoutOverlay/index.tsx @@ -6,6 +6,7 @@ import useSafeAreaInsets from '@hooks/useSafeAreaInsets'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; +import variables from '@styles/variables'; import * as Modal from '@userActions/Modal'; import PopoverWithoutOverlayProps from './types'; @@ -117,7 +118,7 @@ function PopoverWithoutOverlay( return ( Date: Wed, 3 Jan 2024 22:30:07 +0300 Subject: [PATCH 077/701] fixed based on comments --- src/components/DistanceEReceipt.tsx | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/components/DistanceEReceipt.tsx b/src/components/DistanceEReceipt.tsx index 9a90bf13493d..e82dcaa2792b 100644 --- a/src/components/DistanceEReceipt.tsx +++ b/src/components/DistanceEReceipt.tsx @@ -28,7 +28,7 @@ function DistanceEReceipt({transaction}: DistanceEReceiptProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); const {isOffline} = useNetwork(); - const {thumbnail = ''} = TransactionUtils.hasReceipt(transaction) ? ReceiptUtils.getThumbnailAndImageURIs(transaction) : {}; + const thumbnail = TransactionUtils.hasReceipt(transaction) ? ReceiptUtils.getThumbnailAndImageURIs(transaction).thumbnail : null; const {amount: transactionAmount, currency: transactionCurrency, merchant: transactionMerchant, created: transactionDate} = ReportUtils.getTransactionDetails(transaction) ?? {}; const formattedTransactionAmount = transactionAmount ? CurrencyUtils.convertToDisplayString(transactionAmount, transactionCurrency) : translate('common.tbd'); const thumbnailSource = tryResolveUrlFromApiRoot((thumbnail as string) || ''); @@ -56,7 +56,7 @@ function DistanceEReceipt({transaction}: DistanceEReceiptProps) { /> - {isOffline === true || !thumbnailSource ? ( + {!!isOffline || !thumbnailSource ? ( ) : ( {Object.entries(sortedWaypoints).map(([key, waypoint]) => { const index = TransactionUtils.getWaypointIndex(key); - let descriptionKey = 'distance.waypointDescription.'; + let descriptionKey: TranslationPaths = 'distance.waypointDescription.stop'; if (index === 0) { - descriptionKey += 'start'; + descriptionKey = 'distance.waypointDescription.start'; } else if (index === Object.keys(waypoints).length - 1) { - descriptionKey += 'finish'; - } else { - descriptionKey += 'stop'; + descriptionKey = 'distance.waypointDescription.finish'; } + return ( - {translate(descriptionKey as TranslationPaths)} - {waypoint?.name && {waypoint.name}} - {waypoint?.address && {waypoint.address}} + {translate(descriptionKey)} + {!!waypoint?.name && {waypoint.name}} + {!!waypoint?.address && {waypoint.address}} ); })} From 9df04edb070ca6eb1f71d3ae493c121b9a2fbe48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Thu, 4 Jan 2024 22:06:17 +0100 Subject: [PATCH 078/701] Add button hover styles --- src/components/VideoPlayer/IconButton.js | 35 ++++++++++++++---------- src/styles/index.ts | 4 +++ 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js index a75073481987..1ca91c0967ea 100644 --- a/src/components/VideoPlayer/IconButton.js +++ b/src/components/VideoPlayer/IconButton.js @@ -1,10 +1,10 @@ import PropTypes from 'prop-types'; import React from 'react'; +import Hoverable from '@components/Hoverable'; import Icon from '@components/Icon'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; import Tooltip from '@components/Tooltip'; import useThemeStyles from '@hooks/useThemeStyles'; -import CONST from '@src/CONST'; const propTypes = { // eslint-disable-next-line react/forbid-prop-types @@ -19,6 +19,9 @@ const propTypes = { // eslint-disable-next-line react/forbid-prop-types, style: PropTypes.object, + // eslint-disable-next-line react/forbid-prop-types + hoverStyle: PropTypes.object, + small: PropTypes.bool, forceRenderingTooltipBelow: PropTypes.bool, @@ -28,30 +31,34 @@ const defaultProps = { fill: 'white', onPress: () => {}, style: {}, + hoverStyle: {}, small: false, tooltipText: '', forceRenderingTooltipBelow: false, }; -function IconButton({src, fill, onPress, style, tooltipText, small, forceRenderingTooltipBelow}) { +function IconButton({src, fill, onPress, style, hoverStyle, tooltipText, small, forceRenderingTooltipBelow}) { const styles = useThemeStyles(); return ( - - - + + {(isHovered) => ( + + + + )} + ); } diff --git a/src/styles/index.ts b/src/styles/index.ts index 209062a6d935..525e40e25e67 100644 --- a/src/styles/index.ts +++ b/src/styles/index.ts @@ -4229,6 +4229,10 @@ const styles = (theme: ThemeColors) => borderRadius: 4, }, + videoIconButtonHovered: { + backgroundColor: colors.green700, + }, + videoThumbnailContainer: { width: '100%', height: '100%', From 259c734b01b8e65a7749eb5b905d3d0b1f257892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 5 Jan 2024 09:05:43 +0100 Subject: [PATCH 079/701] Change light theme colors --- src/components/VideoPlayer/VideoPlayerControls/index.js | 2 +- src/styles/index.ts | 7 ++++--- src/styles/theme/themes/dark.ts | 2 +- src/styles/theme/themes/light.ts | 2 ++ src/styles/theme/types.ts | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls/index.js b/src/components/VideoPlayer/VideoPlayerControls/index.js index 2ff11c313922..4bf61698fc2e 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/index.js @@ -118,7 +118,7 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying /> - + bottom: CONST.VIDEO_PLAYER.CONTROLS_POSITION.NORMAL, left: CONST.VIDEO_PLAYER.CONTROLS_POSITION.NORMAL, right: CONST.VIDEO_PLAYER.CONTROLS_POSITION.NORMAL, - backgroundColor: theme.transparentAppBG, + backgroundColor: theme.videoPlayerBG, borderRadius: 8, flexDirection: 'column', overflow: 'visible', @@ -4186,6 +4186,7 @@ const styles = (theme: ThemeColors) => fontSize: variables.fontSizeLabel, fontWeight: '700', lineHeight: 16, + color: theme.white, }, volumeSliderContainer: { @@ -4244,7 +4245,7 @@ const styles = (theme: ThemeColors) => }, videoThumbnailPlayButton: { - backgroundColor: theme.transparentAppBG, + backgroundColor: theme.videoPlayerBG, borderRadius: 100, width: 72, height: 72, @@ -4256,7 +4257,7 @@ const styles = (theme: ThemeColors) => position: 'absolute', top: 10, right: 10, - backgroundColor: theme.transparentAppBG, + backgroundColor: theme.videoPlayerBG, borderRadius: 8, padding: 8, }, diff --git a/src/styles/theme/themes/dark.ts b/src/styles/theme/themes/dark.ts index e447e7556d5e..fff075e84590 100644 --- a/src/styles/theme/themes/dark.ts +++ b/src/styles/theme/themes/dark.ts @@ -6,7 +6,6 @@ import SCREENS from '@src/SCREENS'; const darkTheme = { // Figma keys appBG: colors.productDark100, - transparentAppBG: `${colors.productDark100}cc`, splashBG: colors.green400, highlightBG: colors.productDark200, border: colors.productDark400, @@ -85,6 +84,7 @@ const darkTheme = { loungeAccessOverlay: colors.blue800, mapAttributionText: colors.black, white: colors.white, + videoPlayerBG: `${colors.productDark100}cc`, transparentWhite: `${colors.white}51`, // Adding a color here will animate the status bar to the right color when the screen is opened. diff --git a/src/styles/theme/themes/light.ts b/src/styles/theme/themes/light.ts index 663b94aa0fc7..00ca17b6cf63 100644 --- a/src/styles/theme/themes/light.ts +++ b/src/styles/theme/themes/light.ts @@ -84,6 +84,8 @@ const lightTheme = { loungeAccessOverlay: colors.blue800, mapAttributionText: colors.black, white: colors.white, + videoPlayerBG: `${colors.productDark100}cc`, + transparentWhite: `${colors.white}51`, // Adding a color here will animate the status bar to the right color when the screen is opened. // Note that it needs to be a screen name, not a route url. diff --git a/src/styles/theme/types.ts b/src/styles/theme/types.ts index aec50c48e436..1b5cdf95bbfb 100644 --- a/src/styles/theme/types.ts +++ b/src/styles/theme/types.ts @@ -9,7 +9,6 @@ type ThemePreferenceWithoutSystem = Exclude; From bd6eeb9e648aea98a32959c2e73481b51f7e643a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 5 Jan 2024 09:30:56 +0100 Subject: [PATCH 080/701] Fix volume slider --- .../VideoPlayer/VideoPlayerControls/ProgressBar/index.js | 2 +- .../VideoPlayer/VideoPlayerControls/VolumeButton/index.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js b/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js index 6f2ee407471f..7e68027cf402 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js @@ -48,7 +48,7 @@ function ProgressBar({togglePlayCurrentVideo, duration, position, seekPosition}) return ( - + { + runOnJS(updateVolume)(volume.value); runOnJS(updateIcon)(volume.value); }, [volume]); return ( {(isHovered) => ( - + {(isSliderBeingUsed || isHovered) && ( From 301464ce611485d0caebcad81cbacd29a5e28706 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 5 Jan 2024 09:31:11 +0100 Subject: [PATCH 081/701] Fix new icons on web --- assets/images/fullscreen.svg | 8 ++++---- assets/images/meter.svg | 2 +- assets/images/mute.svg | 4 ++-- assets/images/pause.svg | 4 ++-- assets/images/play.svg | 2 +- assets/images/volume-high.svg | 6 +++--- assets/images/volume-low.svg | 4 ++-- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/assets/images/fullscreen.svg b/assets/images/fullscreen.svg index ed4667fe0951..6ae05ed9ad16 100644 --- a/assets/images/fullscreen.svg +++ b/assets/images/fullscreen.svg @@ -1,6 +1,6 @@ - - - - + + + + diff --git a/assets/images/meter.svg b/assets/images/meter.svg index 671f2a15e3c6..4808c3e6870a 100644 --- a/assets/images/meter.svg +++ b/assets/images/meter.svg @@ -1,3 +1,3 @@ - + diff --git a/assets/images/mute.svg b/assets/images/mute.svg index e123c36ec789..afe5e802e640 100644 --- a/assets/images/mute.svg +++ b/assets/images/mute.svg @@ -1,4 +1,4 @@ - - + + diff --git a/assets/images/pause.svg b/assets/images/pause.svg index 1a831956b6d3..8546a7e5a0ee 100644 --- a/assets/images/pause.svg +++ b/assets/images/pause.svg @@ -1,4 +1,4 @@ - - + + diff --git a/assets/images/play.svg b/assets/images/play.svg index db378eb6a4b3..1695800f8498 100644 --- a/assets/images/play.svg +++ b/assets/images/play.svg @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/assets/images/volume-high.svg b/assets/images/volume-high.svg index d83e4dbce821..90eb27e24e85 100644 --- a/assets/images/volume-high.svg +++ b/assets/images/volume-high.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/assets/images/volume-low.svg b/assets/images/volume-low.svg index 1575d657be96..d0d4224f0660 100644 --- a/assets/images/volume-low.svg +++ b/assets/images/volume-low.svg @@ -1,4 +1,4 @@ - - + + From 83010eee433229e989739989f2db6d7e286d4269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Fri, 5 Jan 2024 16:29:54 +0100 Subject: [PATCH 082/701] Add unloading players when changing pages --- .../AttachmentViewVideo/index.js | 1 - src/components/VideoPlayer/BaseVideoPlayer.js | 25 ++++++++++++------- src/components/VideoPlayer/index.js | 10 ++++---- src/components/VideoPlayer/index.native.js | 10 ++++---- .../VideoPlayerContexts/PlaybackContext.js | 18 ++++++++++++- src/components/VideoPlayerPreview/index.js | 1 - 6 files changed, 43 insertions(+), 22 deletions(-) diff --git a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js index e7c3e49adb36..0c99c82fbdaa 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js @@ -24,7 +24,6 @@ function AttachmentViewVideo({source, isHovered, shouldUseSharedVideoElement}) { return ( diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index dde990c8bc50..d989825e7e61 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -1,4 +1,5 @@ /* eslint-disable no-underscore-dangle */ +import {useIsFocused} from '@react-navigation/native'; import {ResizeMode, Video} from 'expo-av'; import PropTypes from 'prop-types'; import React, {useCallback, useEffect, useRef, useState} from 'react'; @@ -16,8 +17,6 @@ import VideoPlayerControls from './VideoPlayerControls'; const propTypes = { url: PropTypes.string.isRequired, - shouldPlay: PropTypes.bool, - onVideoLoaded: PropTypes.func, resizeMode: PropTypes.string, @@ -40,7 +39,6 @@ const propTypes = { }; const defaultProps = { - shouldPlay: false, onVideoLoaded: () => {}, resizeMode: ResizeMode.CONTAIN, isLooping: false, @@ -56,7 +54,6 @@ const defaultProps = { function BaseVideoPlayer({ url, resizeMode, - shouldPlay, onVideoLoaded, isLooping, style, @@ -67,6 +64,7 @@ function BaseVideoPlayer({ shouldUseSmallVideoControls, isVideoHovered, }) { + const isFocused = useIsFocused(); const styles = useThemeStyles(); const {isSmallScreenWidth} = useWindowDimensions(); const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, shareVideoPlayerElements, currentVideoPlayerRef} = usePlaybackContext(); @@ -109,15 +107,15 @@ function BaseVideoPlayer({ // update shared video elements useEffect(() => { - if (shouldUseSharedVideoElement || url !== currentlyPlayingURL) { + if (!isFocused || shouldUseSharedVideoElement || url !== currentlyPlayingURL) { return; } shareVideoPlayerElements(videoPlayerRef.current, videoPlayerElementParentRef.current, videoPlayerElementRef.current); - }, [currentlyPlayingURL, shouldUseSharedVideoElement, shareVideoPlayerElements, updateSharedElements, url]); + }, [currentlyPlayingURL, shouldUseSharedVideoElement, shareVideoPlayerElements, updateSharedElements, url, isFocused]); // append shared video element to new parent (used for example in attachment modal) useEffect(() => { - if (url !== currentlyPlayingURL || !sharedElement || !shouldUseSharedVideoElement) { + if (!isFocused || url !== currentlyPlayingURL || !sharedElement || !shouldUseSharedVideoElement) { return; } @@ -133,7 +131,16 @@ function BaseVideoPlayer({ } originalParent.appendChild(sharedElement); }; - }, [bindFunctions, currentVideoPlayerRef, currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); + }, [bindFunctions, currentVideoPlayerRef, currentlyPlayingURL, isFocused, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); + + useEffect(() => { + // pause and unload video player when screen is not focused + if (isFocused || !videoPlayerRef.current) { + return; + } + videoPlayerRef.current.setStatusAsync({shouldPlay: false}); + videoPlayerRef.current.unloadAsync(); + }, [isFocused]); return ( <> @@ -172,7 +179,7 @@ function BaseVideoPlayer({ source={{ uri: sourceURL, // testing video url: 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', }} - shouldPlay={shouldPlay} + shouldPlay={false} useNativeControls={false} resizeMode={resizeMode} isLooping={isLooping} diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index f40968a0295b..5708b8d4db72 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -1,9 +1,9 @@ import React, {forwardRef} from 'react'; -import VideoPlayer from './BaseVideoPlayer'; +import BaseVideoPlayer from './BaseVideoPlayer'; -function BaseVideoPlayer(props, ref) { +function VideoPlayer(props, ref) { return ( - { currentVideoPlayerRef.current.setStatusAsync({shouldPlay: false}); @@ -37,6 +39,20 @@ function PlaybackContextProvider({children}) { [playVideo], ); + const resetVideoPlayerData = useCallback(() => { + setCurrentlyPlayingURL(null); + setSharedElement(null); + setOriginalParent(null); + currentVideoPlayerRef.current = null; + }, []); + + useEffect(() => { + if (!currentReportID) { + return; + } + resetVideoPlayerData(); + }, [currentReportID, resetVideoPlayerData]); + const contextValue = useMemo( () => ({ updateCurrentlyPlayingURL, diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index 2b5d1f9e5e06..1f9097b6dd29 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -68,7 +68,6 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, <> Date: Fri, 5 Jan 2024 17:24:06 +0100 Subject: [PATCH 083/701] Change empty video thumbnail styles --- src/styles/index.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/styles/index.ts b/src/styles/index.ts index fcfdd98c18af..52a575ee86cb 100644 --- a/src/styles/index.ts +++ b/src/styles/index.ts @@ -208,11 +208,9 @@ const webViewStyles = (theme: ThemeColors) => video: { minWidth: CONST.VIDEO_PLAYER.MIN_WIDTH, minHeight: CONST.VIDEO_PLAYER.MIN_HEIGHT, - borderColor: theme.border, borderRadius: variables.componentBorderRadiusNormal, - borderWidth: 1, overflow: 'hidden', - backgroundColor: colors.green800, + backgroundColor: theme.highlightBG, ...touchCalloutNone, }, From 4ce49a31b793f21a671515f2f82c70ac7fad38c2 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 7 Jan 2024 19:11:54 +0100 Subject: [PATCH 084/701] improve --- .../AttachmentCarousel/CarouselItem.js | 17 +-- .../AttachmentCarousel/Pager/index.js | 106 +++++++++--------- .../AttachmentCarousel/index.native.js | 32 +----- .../AttachmentViewImage/index.js | 21 +--- .../Attachments/AttachmentView/index.js | 8 -- .../Attachments/AttachmentView/propTypes.js | 17 +-- src/components/ImageView/index.native.js | 11 +- src/components/ImageView/propTypes.js | 16 --- src/components/Lightbox.js | 60 +++++----- src/components/MultiGestureCanvas/index.js | 57 ++-------- .../MultiGestureCanvas/propTypes.js | 4 + .../MultiGestureCanvas/usePanGesture.js | 10 +- .../MultiGestureCanvas/usePinchGesture.js | 6 +- .../MultiGestureCanvas/useTapGestures.js | 23 +++- 14 files changed, 144 insertions(+), 244 deletions(-) diff --git a/src/components/Attachments/AttachmentCarousel/CarouselItem.js b/src/components/Attachments/AttachmentCarousel/CarouselItem.js index 5552f15320f3..abe371768879 100644 --- a/src/components/Attachments/AttachmentCarousel/CarouselItem.js +++ b/src/components/Attachments/AttachmentCarousel/CarouselItem.js @@ -37,15 +37,6 @@ const propTypes = { transactionID: PropTypes.string, }).isRequired, - /** Whether there is only one element in the attachment carousel */ - isSingleItem: PropTypes.bool.isRequired, - - /** The index of the carousel item */ - index: PropTypes.number.isRequired, - - /** The index of the currently active carousel item */ - activeIndex: PropTypes.number.isRequired, - /** onPress callback */ onPress: PropTypes.func, }; @@ -54,7 +45,7 @@ const defaultProps = { onPress: undefined, }; -function CarouselItem({item, index, activeIndex, isSingleItem, onPress}) { +function CarouselItem({item, onPress}) { const styles = useThemeStyles(); const {translate} = useLocalize(); const {isAttachmentHidden} = useContext(ReportAttachmentsContext); @@ -103,12 +94,8 @@ function CarouselItem({item, index, activeIndex, isSingleItem, onPress}) { diff --git a/src/components/Attachments/AttachmentCarousel/Pager/index.js b/src/components/Attachments/AttachmentCarousel/Pager/index.js index e0f652e47e4c..84f77dae4953 100644 --- a/src/components/Attachments/AttachmentCarousel/Pager/index.js +++ b/src/components/Attachments/AttachmentCarousel/Pager/index.js @@ -3,8 +3,9 @@ import React, {useEffect, useImperativeHandle, useMemo, useRef, useState} from ' import {View} from 'react-native'; import {createNativeWrapper} from 'react-native-gesture-handler'; import PagerView from 'react-native-pager-view'; -import Animated, {runOnJS, useAnimatedProps, useAnimatedReaction, useEvent, useHandler, useSharedValue} from 'react-native-reanimated'; +import Animated, {runOnJS, useAnimatedReaction, useEvent, useHandler, useSharedValue} from 'react-native-reanimated'; import _ from 'underscore'; +import CarouselItem from '@components/Attachments/AttachmentCarousel/CarouselItem'; import refPropTypes from '@components/refPropTypes'; import useThemeStyles from '@hooks/useThemeStyles'; import AttachmentCarouselPagerContext from './AttachmentCarouselPagerContext'; @@ -36,8 +37,9 @@ const pagerPropTypes = { url: PropTypes.string, }), ).isRequired, - renderItem: PropTypes.func.isRequired, - initialIndex: PropTypes.number, + activeSource: PropTypes.string.isRequired, + initialPage: PropTypes.number, + scrollEnabled: PropTypes.bool, onPageSelected: PropTypes.func, onTap: PropTypes.func, onScaleChanged: PropTypes.func, @@ -45,53 +47,61 @@ const pagerPropTypes = { }; const pagerDefaultProps = { - initialIndex: 0, + initialPage: 0, + scrollEnabled: true, onPageSelected: () => {}, onTap: () => {}, onScaleChanged: () => {}, forwardedRef: null, }; -function AttachmentCarouselPager({items, renderItem, initialIndex, onPageSelected, onTap, onScaleChanged, forwardedRef}) { +function AttachmentCarouselPager({items, activeSource, initialPage, scrollEnabled, onPageSelected, onTap, onScaleChanged, forwardedRef}) { const styles = useThemeStyles(); - const shouldPagerScroll = useSharedValue(true); const pagerRef = useRef(null); - const isSwipingInPager = useSharedValue(false); - const activeIndex = useSharedValue(initialIndex); + const activePage = useSharedValue(initialPage); + const [activePageState, setActivePageState] = useState(initialPage); + // Set active page initially and when initial page changes + useEffect(() => { + setActivePageState(initialPage); + activePage.value = initialPage; + }, [activePage, initialPage]); + + const itemsMeta = useMemo(() => _.map(items, (item, index) => ({source: item.source, index, isActive: index === activePageState})), [activePageState, items]); + + const isPagerSwiping = useSharedValue(false); const pageScrollHandler = usePageScrollHandler( { onPageScroll: (e) => { 'worklet'; - activeIndex.value = e.position; - isSwipingInPager.value = e.offset !== 0; + activePage.value = e.position; + isPagerSwiping.value = e.offset !== 0; }, }, [], ); - const [activePage, setActivePage] = useState(initialIndex); - - useEffect(() => { - setActivePage(initialIndex); - activeIndex.value = initialIndex; - }, [activeIndex, initialIndex]); - - // we use reanimated for this since onPageSelected is called - // in the middle of the pager animation + const [isPagerSwipingState, setPagerSwipingState] = useState(false); useAnimatedReaction( - () => isSwipingInPager.value, - (stillScrolling) => { - if (stillScrolling) { - return; - } - - runOnJS(setActivePage)(activeIndex.value); + () => [isPagerSwiping.value], + (isSwiping) => { + runOnJS(setPagerSwipingState)(isSwiping); }, ); + const contextValue = useMemo( + () => ({ + itemsMeta, + activePage: activePageState, + isPagerSwiping: isPagerSwipingState, + onTap, + onScaleChanged, + }), + [activePageState, isPagerSwipingState, itemsMeta, onScaleChanged, onTap], + ); + useImperativeHandle( forwardedRef, () => ({ @@ -100,19 +110,22 @@ function AttachmentCarouselPager({items, renderItem, initialIndex, onPageSelecte [], ); - const animatedProps = useAnimatedProps(() => ({ - scrollEnabled: shouldPagerScroll.value, - })); - - const contextValue = useMemo( - () => ({ - onTap, - onScaleChanged, - pagerRef, - shouldPagerScroll, - isSwipingInPager, - }), - [isSwipingInPager, shouldPagerScroll, onScaleChanged, onTap], + const Content = useMemo( + () => + _.map(items, (item, index) => ( + + + + )), + [activePageState, activeSource, items, styles.flex1], ); return ( @@ -120,21 +133,14 @@ function AttachmentCarouselPager({items, renderItem, initialIndex, onPageSelecte - {_.map(items, (item, index) => ( - - {renderItem({item, index, isActive: index === activePage})} - - ))} + {Content} ); diff --git a/src/components/Attachments/AttachmentCarousel/index.native.js b/src/components/Attachments/AttachmentCarousel/index.native.js index 8f168093c217..64262b38b0d1 100644 --- a/src/components/Attachments/AttachmentCarousel/index.native.js +++ b/src/components/Attachments/AttachmentCarousel/index.native.js @@ -13,7 +13,6 @@ import variables from '@styles/variables'; import ONYXKEYS from '@src/ONYXKEYS'; import {defaultProps, propTypes} from './attachmentCarouselPropTypes'; import CarouselButtons from './CarouselButtons'; -import CarouselItem from './CarouselItem'; import extractAttachmentsFromReport from './extractAttachmentsFromReport'; import AttachmentCarouselPager from './Pager'; import useCarouselArrows from './useCarouselArrows'; @@ -88,25 +87,6 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, [autoHideArrows, page, updatePage], ); - /** - * Defines how a single attachment should be rendered - * @param {{ reportActionID: String, isAuthTokenRequired: Boolean, source: String, file: { name: String }, hasBeenFlagged: Boolean }} item - * @returns {JSX.Element} - */ - const renderItem = useCallback( - ({item, index, isActive}) => ( - setShouldShowArrows(!shouldShowArrows)} - /> - ), - [activeSource, attachments.length, page, setShouldShowArrows, shouldShowArrows], - ); - const handleScaleChange = useCallback( (newScale) => { const newIsZoomedOut = newScale === 1; @@ -122,11 +102,7 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, ); return ( - setShouldShowArrows(true)} - onMouseLeave={() => setShouldShowArrows(false)} - > + {page == null ? ( ) : ( @@ -152,8 +128,10 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, setShouldShowArrows(!shouldShowArrows)} onPageSelected={({nativeEvent: {position: newPage}}) => updatePage(newPage)} onScaleChanged={handleScaleChange} ref={pagerRef} diff --git a/src/components/Attachments/AttachmentView/AttachmentViewImage/index.js b/src/components/Attachments/AttachmentView/AttachmentViewImage/index.js index f53b993f6053..05c27213557f 100755 --- a/src/components/Attachments/AttachmentView/AttachmentViewImage/index.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewImage/index.js @@ -12,22 +12,7 @@ const propTypes = { ...withLocalizePropTypes, }; -function AttachmentViewImage({ - source, - file, - isAuthTokenRequired, - isUsedInCarousel, - isSingleCarouselItem, - carouselItemIndex, - carouselActiveItemIndex, - isFocused, - loadComplete, - onPress, - onError, - isImage, - onScaleChanged, - translate, -}) { +function AttachmentViewImage({source, file, isAuthTokenRequired, isFocused, loadComplete, onPress, onError, isImage, onScaleChanged, translate}) { const styles = useThemeStyles(); const children = ( ); diff --git a/src/components/Attachments/AttachmentView/index.js b/src/components/Attachments/AttachmentView/index.js index b0060afdb813..179d627a23fa 100755 --- a/src/components/Attachments/AttachmentView/index.js +++ b/src/components/Attachments/AttachmentView/index.js @@ -72,9 +72,6 @@ function AttachmentView({ translate, isFocused, isUsedInCarousel, - isSingleCarouselItem, - carouselItemIndex, - carouselActiveItemIndex, isUsedInAttachmentModal, isWorkspaceAvatar, fallbackSource, @@ -138,8 +135,6 @@ function AttachmentView({ isFocused={isFocused} isAuthTokenRequired={isAuthTokenRequired} encryptedSourceUrl={encryptedSourceUrl} - carouselItemIndex={carouselItemIndex} - carouselActiveItemIndex={carouselActiveItemIndex} onPress={onPress} onScaleChanged={onScaleChanged} onToggleKeyboard={onToggleKeyboard} @@ -169,9 +164,6 @@ function AttachmentView({ loadComplete={loadComplete} isFocused={isFocused} isUsedInCarousel={isUsedInCarousel} - isSingleCarouselItem={isSingleCarouselItem} - carouselItemIndex={carouselItemIndex} - carouselActiveItemIndex={carouselActiveItemIndex} isImage={isImage} onPress={onPress} onScaleChanged={onScaleChanged} diff --git a/src/components/Attachments/AttachmentView/propTypes.js b/src/components/Attachments/AttachmentView/propTypes.js index 286c903ccf5b..31750da53e77 100644 --- a/src/components/Attachments/AttachmentView/propTypes.js +++ b/src/components/Attachments/AttachmentView/propTypes.js @@ -17,18 +17,6 @@ const attachmentViewPropTypes = { /** Whether this AttachmentView is shown as part of a AttachmentCarousel */ isUsedInCarousel: PropTypes.bool, - /** When "isUsedInCarousel" is set to true, determines whether there is only one item in the carousel */ - isSingleCarouselItem: PropTypes.bool, - - /** Whether this AttachmentView is shown as part of an AttachmentModal */ - isUsedInAttachmentModal: PropTypes.bool, - - /** The index of the carousel item */ - carouselItemIndex: PropTypes.number, - - /** The index of the currently active carousel item */ - carouselActiveItemIndex: PropTypes.number, - /** Function for handle on press */ onPress: PropTypes.func, @@ -42,11 +30,8 @@ const attachmentViewDefaultProps = { name: '', }, isFocused: false, - isUsedInCarousel: false, - isSingleCarouselItem: false, - carouselItemIndex: 0, - carouselActiveItemIndex: 0, isSingleElement: false, + isUsedInCarousel: false, isUsedInAttachmentModal: false, onPress: undefined, onScaleChanged: () => {}, diff --git a/src/components/ImageView/index.native.js b/src/components/ImageView/index.native.js index 98349b213aa5..007bc753ec0d 100644 --- a/src/components/ImageView/index.native.js +++ b/src/components/ImageView/index.native.js @@ -11,9 +11,6 @@ const propTypes = { ...imageViewPropTypes, ...zoomRangePropTypes, - /** Function for handle on press */ - onPress: PropTypes.func, - /** Additional styles to add to the component */ style: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]), }; @@ -26,20 +23,14 @@ const defaultProps = { style: {}, }; -function ImageView({isAuthTokenRequired, url, onScaleChanged, onPress, style, zoomRange, onError, isUsedInCarousel, isSingleCarouselItem, carouselItemIndex, carouselActiveItemIndex}) { - const hasSiblingCarouselItems = isUsedInCarousel && !isSingleCarouselItem; - +function ImageView({isAuthTokenRequired, url, onScaleChanged, style, zoomRange, onError}) { return ( ); diff --git a/src/components/ImageView/propTypes.js b/src/components/ImageView/propTypes.js index 3809d9aed043..359626e4bd69 100644 --- a/src/components/ImageView/propTypes.js +++ b/src/components/ImageView/propTypes.js @@ -19,28 +19,12 @@ const imageViewPropTypes = { /** Whether this view is the active screen */ isFocused: PropTypes.bool, - - /** Whether this AttachmentView is shown as part of a AttachmentCarousel */ - isUsedInCarousel: PropTypes.bool, - - /** When "isUsedInCarousel" is set to true, determines whether there is only one item in the carousel */ - isSingleCarouselItem: PropTypes.bool, - - /** The index of the carousel item */ - carouselItemIndex: PropTypes.number, - - /** The index of the currently active carousel item */ - carouselActiveItemIndex: PropTypes.number, }; const imageViewDefaultProps = { isAuthTokenRequired: false, onError: () => {}, isFocused: true, - isUsedInCarousel: false, - isSingleCarouselItem: false, - carouselItemIndex: 0, - carouselActiveItemIndex: 0, }; export {imageViewPropTypes, imageViewDefaultProps}; diff --git a/src/components/Lightbox.js b/src/components/Lightbox.js index 366759cc6cd7..6f1f7a0c6437 100644 --- a/src/components/Lightbox.js +++ b/src/components/Lightbox.js @@ -1,8 +1,10 @@ /* eslint-disable es/no-optional-chaining */ +import _ from 'lodash'; import PropTypes from 'prop-types'; -import React, {useCallback, useEffect, useMemo, useState} from 'react'; +import React, {useCallback, useContext, useEffect, useMemo, useState} from 'react'; import {ActivityIndicator, PixelRatio, StyleSheet, View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; +import AttachmentCarouselPagerContext from './Attachments/AttachmentCarousel/Pager/AttachmentCarouselPagerContext'; import * as AttachmentsPropTypes from './Attachments/propTypes'; import Image from './Image'; import MultiGestureCanvas from './MultiGestureCanvas'; @@ -25,9 +27,6 @@ const propTypes = { /** Triggers whenever the zoom scale changes */ onScaleChanged: PropTypes.func, - /** Function for handle on press */ - onPress: PropTypes.func, - /** Handles errors while displaying the image */ onError: PropTypes.func, @@ -37,15 +36,6 @@ const propTypes = { /** Whether source url requires authentication */ isAuthTokenRequired: PropTypes.bool, - /** Whether the Lightbox is used within a carousel component and there are other sibling elements */ - hasSiblingCarouselItems: PropTypes.bool, - - /** The index of the carousel item */ - index: PropTypes.number, - - /** The index of the currently active carousel item */ - activeIndex: PropTypes.number, - /** Additional styles to add to the component */ style: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.object), PropTypes.object]), }; @@ -54,20 +44,39 @@ const defaultProps = { ...zoomRangeDefaultProps, isAuthTokenRequired: false, - index: 0, - activeIndex: 0, - hasSiblingCarouselItems: false, onScaleChanged: () => {}, - onPress: () => {}, onError: () => {}, style: {}, }; const DEFAULT_IMAGE_SIZE = 200; -function Lightbox({isAuthTokenRequired, source, onScaleChanged, onPress, onError, style, index, activeIndex, hasSiblingCarouselItems, zoomRange}) { +function Lightbox({isAuthTokenRequired, source, onScaleChanged, onError, style, zoomRange}) { const StyleUtils = useStyleUtils(); + const attachmentCarouselPagerContext = useContext(AttachmentCarouselPagerContext); + const {isUsedInCarousel, isSingleCarouselItem, page, activePage, onTap, isPagerSwiping} = useMemo(() => { + if (attachmentCarouselPagerContext == null) { + return { + isUsedInCarousel: false, + isSingleCarouselItem: true, + page: 0, + activePage: 0, + onTap: () => {}, + isPagerSwiping: false, + }; + } + + const foundPageIndex = _.findIndex(attachmentCarouselPagerContext.itemsMeta, (item) => item.source === source); + return { + ...attachmentCarouselPagerContext, + isUsedInCarousel: true, + isSingleCarouselItem: attachmentCarouselPagerContext.itemsMeta.length === 1, + page: foundPageIndex, + }; + }, [attachmentCarouselPagerContext, source]); + const hasSiblingCarouselItems = isUsedInCarousel && !isSingleCarouselItem; + const [containerSize, setContainerSize] = useState({width: 0, height: 0}); const isContainerLoaded = containerSize.width !== 0 && containerSize.height !== 0; @@ -77,8 +86,8 @@ function Lightbox({isAuthTokenRequired, source, onScaleChanged, onPress, onError cachedDimensions.set(source, newDimensions); }; - const isItemActive = index === activeIndex; - const [isActive, setActive] = useState(isItemActive); + const isActivePage = page === activePage; + const [isActive, setActive] = useState(isActivePage); const [isImageLoaded, setImageLoaded] = useState(false); const isInactiveCarouselItem = hasSiblingCarouselItems && !isActive; @@ -92,9 +101,9 @@ function Lightbox({isAuthTokenRequired, source, onScaleChanged, onPress, onError } const indexCanvasOffset = Math.floor((NUMBER_OF_CONCURRENT_LIGHTBOXES - 1) / 2) || 0; - const indexOutOfRange = index > activeIndex + indexCanvasOffset || index < activeIndex - indexCanvasOffset; + const indexOutOfRange = page > activePage + indexCanvasOffset || page < activePage - indexCanvasOffset; return !indexOutOfRange; - }, [activeIndex, index]); + }, [activePage, page]); const isLightboxVisible = isLightboxInRange && (isActive || isLightboxLoaded || isFallbackLoaded); // If the fallback image is currently visible, we want to hide the Lightbox until the fallback gets hidden, @@ -114,12 +123,12 @@ function Lightbox({isAuthTokenRequired, source, onScaleChanged, onPress, onError // to prevent the image transformer from flashing while still rendering // Instead, we show the fallback image while the image transformer is loading the image useEffect(() => { - if (isItemActive) { + if (isActivePage) { setTimeout(() => setActive(true), 1); } else { setActive(false); } - }, [isItemActive]); + }, [isActivePage]); useEffect(() => { if (isLightboxVisible) { @@ -171,7 +180,6 @@ function Lightbox({isAuthTokenRequired, source, onScaleChanged, onPress, onError return ( @@ -181,6 +189,8 @@ function Lightbox({isAuthTokenRequired, source, onScaleChanged, onPress, onError - attachmentCarouselPagerContext || { - onTap: () => {}, - onScaleChanged: () => {}, - pagerRef: pagerRefFallback, - shouldPagerScroll: false, - isSwipingInPager: false, - }, - [attachmentCarouselPagerContext], - ); - - const onScaleChanged = useCallback( - (newScale) => { - onScaleChangedProp(newScale); - onScaleChangedContext(newScale); - }, - [onScaleChangedContext, onScaleChangedProp], - ); - // Based on the (original) content size and the canvas size, we calculate the horizontal and vertical scale factors // to fit the content inside the canvas // We later use the lower of the two scale factors to fit the content inside the canvas @@ -123,7 +92,8 @@ function MultiGestureCanvas({canvasSize, isActive = true, onScaleChanged: onScal zoomScale.value = 1; }); - const {singleTapGesture: basicSingleTapGesture, doubleTapGesture} = useTapGestures({ + const {singleTapGesture: baseSingleTapGesture, doubleTapGesture} = useTapGestures({ + areTransformationsEnabled, canvasSize, contentSize, minContentScale, @@ -138,9 +108,10 @@ function MultiGestureCanvas({canvasSize, isActive = true, onScaleChanged: onScal onScaleChanged, onTap, }); - const singleTapGesture = basicSingleTapGesture.requireExternalGestureToFail(doubleTapGesture, panGestureRef); + const singleTapGesture = baseSingleTapGesture.requireExternalGestureToFail(doubleTapGesture, panGestureRef); const panGesture = usePanGesture({ + areTransformationsEnabled, canvasSize, contentSize, zoomScale, @@ -149,13 +120,13 @@ function MultiGestureCanvas({canvasSize, isActive = true, onScaleChanged: onScal offsetY, panTranslateX, panTranslateY, - isSwipingInPager, stopAnimation, }) - .simultaneousWithExternalGesture(pagerRef, singleTapGesture, doubleTapGesture) + .simultaneousWithExternalGesture(singleTapGesture, doubleTapGesture) .withRef(panGestureRef); const pinchGesture = usePinchGesture({ + areTransformationsEnabled, canvasSize, zoomScale, zoomRange, @@ -164,20 +135,10 @@ function MultiGestureCanvas({canvasSize, isActive = true, onScaleChanged: onScal pinchTranslateX, pinchTranslateY, pinchScale, - isSwipingInPager, stopAnimation, onScaleChanged, }).simultaneousWithExternalGesture(panGesture, singleTapGesture, doubleTapGesture); - // Enables/disables the pager scroll based on the zoom scale - // When the content is zoomed in/out, the pager should be disabled - useAnimatedReaction( - () => zoomScale.value, - () => { - shouldPagerScroll.value = zoomScale.value === 1; - }, - ); - // Trigger a reset when the canvas gets inactive, but only if it was already mounted before const mounted = useRef(false); useEffect(() => { diff --git a/src/components/MultiGestureCanvas/propTypes.js b/src/components/MultiGestureCanvas/propTypes.js index f1961ec0e156..744dd07db0c8 100644 --- a/src/components/MultiGestureCanvas/propTypes.js +++ b/src/components/MultiGestureCanvas/propTypes.js @@ -29,6 +29,9 @@ const multiGestureCanvasPropTypes = { */ isActive: PropTypes.bool, + /** Whether pan, pinch and double tap transformations are enabled */ + areTransformationsEnabled: PropTypes.bool, + /** Handles scale changed event */ onScaleChanged: PropTypes.func, @@ -64,6 +67,7 @@ const multiGestureCanvasPropTypes = { const multiGestureCanvasDefaultProps = { isActive: true, + areTransformationsEnabled: true, onScaleChanged: () => undefined, contentSize: undefined, contentScaling: undefined, diff --git a/src/components/MultiGestureCanvas/usePanGesture.js b/src/components/MultiGestureCanvas/usePanGesture.js index aec24cb2e99e..27067511a135 100644 --- a/src/components/MultiGestureCanvas/usePanGesture.js +++ b/src/components/MultiGestureCanvas/usePanGesture.js @@ -8,7 +8,7 @@ import * as MultiGestureCanvasUtils from './utils'; // https://docs.swmansion.com/react-native-reanimated/docs/animations/withDecay/ const PAN_DECAY_DECELARATION = 0.9915; -const usePanGesture = ({canvasSize, contentSize, zoomScale, totalScale, offsetX, offsetY, panTranslateX, panTranslateY, isSwipingInPager, stopAnimation}) => { +const usePanGesture = ({areTransformationsEnabled, canvasSize, contentSize, zoomScale, totalScale, offsetX, offsetY, panTranslateX, panTranslateY, stopAnimation}) => { // The content size after fitting it to the canvas and zooming const zoomedContentWidth = useDerivedValue(() => contentSize.width * totalScale.value, [contentSize.width]); const zoomedContentHeight = useDerivedValue(() => contentSize.height * totalScale.value, [contentSize.height]); @@ -107,8 +107,8 @@ const usePanGesture = ({canvasSize, contentSize, zoomScale, totalScale, offsetX, .manualActivation(true) .averageTouches(true) .onTouchesMove((_evt, state) => { - // We only allow panning when the content is zoomed in - if (zoomScale.value <= 1 || isSwipingInPager.value) { + // We only allow panning when the content is zoomed in and the tranformations are enabled + if (zoomScale.value <= 1 || !areTransformationsEnabled) { return; } @@ -137,8 +137,8 @@ const usePanGesture = ({canvasSize, contentSize, zoomScale, totalScale, offsetX, panTranslateX.value = 0; panTranslateY.value = 0; - // If we are swiping (in the pager), we don't want to return to boundaries - if (isSwipingInPager.value) { + // If we the MultiGestureCanvas is disabled, we don't want to return to boundaries + if (!areTransformationsEnabled) { return; } diff --git a/src/components/MultiGestureCanvas/usePinchGesture.js b/src/components/MultiGestureCanvas/usePinchGesture.js index 21c5e55e0117..63f023251aa4 100644 --- a/src/components/MultiGestureCanvas/usePinchGesture.js +++ b/src/components/MultiGestureCanvas/usePinchGesture.js @@ -5,6 +5,7 @@ import {runOnJS, useAnimatedReaction, useSharedValue, withSpring} from 'react-na import * as MultiGestureCanvasUtils from './utils'; const usePinchGesture = ({ + areTransformationsEnabled, canvasSize, zoomScale, zoomRange, @@ -13,7 +14,6 @@ const usePinchGesture = ({ pinchTranslateX: totalPinchTranslateX, pinchTranslateY: totalPinchTranslateY, pinchScale, - isSwipingInPager, stopAnimation, onScaleChanged, }) => { @@ -71,8 +71,8 @@ const usePinchGesture = ({ const pinchGesture = Gesture.Pinch() .enabled(pinchEnabled) .onTouchesDown((_evt, state) => { - // We don't want to activate pinch gesture when we are swiping in the pager - if (!isSwipingInPager.value) { + // We don't want to activate pinch gesture when transformations are disabled + if (!areTransformationsEnabled) { return; } diff --git a/src/components/MultiGestureCanvas/useTapGestures.js b/src/components/MultiGestureCanvas/useTapGestures.js index eefe8c506b33..467b005fb1a2 100644 --- a/src/components/MultiGestureCanvas/useTapGestures.js +++ b/src/components/MultiGestureCanvas/useTapGestures.js @@ -6,7 +6,21 @@ import * as MultiGestureCanvasUtils from './utils'; const DOUBLE_TAP_SCALE = 3; -const useTapGestures = ({canvasSize, contentSize, minContentScale, maxContentScale, offsetX, offsetY, pinchScale, zoomScale, reset, stopAnimation, onScaleChanged, onTap}) => { +const useTapGestures = ({ + areTransformationsEnabled, + canvasSize, + contentSize, + minContentScale, + maxContentScale, + offsetX, + offsetY, + pinchScale, + zoomScale, + reset, + stopAnimation, + onScaleChanged, + onTap, +}) => { // The content size after scaling it with minimum scale to fit the content into the canvas const scaledContentWidth = useMemo(() => contentSize.width * minContentScale, [contentSize.width, minContentScale]); const scaledContentHeight = useMemo(() => contentSize.height * minContentScale, [contentSize.height, minContentScale]); @@ -88,6 +102,13 @@ const useTapGestures = ({canvasSize, contentSize, minContentScale, maxContentSca ); const doubleTapGesture = Gesture.Tap() + .onTouchesDown((_evt, state) => { + if (areTransformationsEnabled) { + return; + } + + state.fail(); + }) .numberOfTaps(2) .maxDelay(150) .maxDistance(20) From 79bfaa3e14810b3729aa25435892bc4a6f971fa4 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 7 Jan 2024 21:52:00 +0100 Subject: [PATCH 085/701] add callbacks --- src/components/Lightbox.js | 10 ++++----- src/components/MultiGestureCanvas/index.js | 11 +++++----- .../MultiGestureCanvas/usePinchGesture.js | 2 ++ .../MultiGestureCanvas/useTapGestures.js | 22 ++++++++++++------- 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/components/Lightbox.js b/src/components/Lightbox.js index 6f1f7a0c6437..2ce3ca8eb51f 100644 --- a/src/components/Lightbox.js +++ b/src/components/Lightbox.js @@ -24,9 +24,6 @@ const cachedDimensions = new Map(); const propTypes = { ...zoomRangePropTypes, - /** Triggers whenever the zoom scale changes */ - onScaleChanged: PropTypes.func, - /** Handles errors while displaying the image */ onError: PropTypes.func, @@ -51,19 +48,20 @@ const defaultProps = { const DEFAULT_IMAGE_SIZE = 200; -function Lightbox({isAuthTokenRequired, source, onScaleChanged, onError, style, zoomRange}) { +function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { const StyleUtils = useStyleUtils(); const attachmentCarouselPagerContext = useContext(AttachmentCarouselPagerContext); - const {isUsedInCarousel, isSingleCarouselItem, page, activePage, onTap, isPagerSwiping} = useMemo(() => { + const {isUsedInCarousel, isSingleCarouselItem, isPagerSwiping, page, activePage, onTap, onScaleChanged} = useMemo(() => { if (attachmentCarouselPagerContext == null) { return { isUsedInCarousel: false, isSingleCarouselItem: true, + isPagerSwiping: false, page: 0, activePage: 0, onTap: () => {}, - isPagerSwiping: false, + onScaleChanged: () => {}, }; } diff --git a/src/components/MultiGestureCanvas/index.js b/src/components/MultiGestureCanvas/index.js index 049fe85cd53c..300d273c3274 100644 --- a/src/components/MultiGestureCanvas/index.js +++ b/src/components/MultiGestureCanvas/index.js @@ -65,12 +65,11 @@ function MultiGestureCanvas({canvasSize, isActive, areTransformationsEnabled, on /** * Resets the canvas to the initial state and animates back smoothly */ - const reset = MultiGestureCanvasUtils.useWorkletCallback((animated) => { - pinchScale.value = 1; - - stopAnimation(); + const reset = MultiGestureCanvasUtils.useWorkletCallback((animated, callbackProp) => { + const callback = callbackProp || (() => {}); pinchScale.value = 1; + stopAnimation(); if (animated) { offsetX.value = withSpring(0, MultiGestureCanvasUtils.SPRING_CONFIG); @@ -79,7 +78,7 @@ function MultiGestureCanvas({canvasSize, isActive, areTransformationsEnabled, on panTranslateY.value = withSpring(0, MultiGestureCanvasUtils.SPRING_CONFIG); pinchTranslateX.value = withSpring(0, MultiGestureCanvasUtils.SPRING_CONFIG); pinchTranslateY.value = withSpring(0, MultiGestureCanvasUtils.SPRING_CONFIG); - zoomScale.value = withSpring(1, MultiGestureCanvasUtils.SPRING_CONFIG); + zoomScale.value = withSpring(1, MultiGestureCanvasUtils.SPRING_CONFIG, callback); return; } @@ -90,6 +89,8 @@ function MultiGestureCanvas({canvasSize, isActive, areTransformationsEnabled, on pinchTranslateX.value = 0; pinchTranslateY.value = 0; zoomScale.value = 1; + + callback(); }); const {singleTapGesture: baseSingleTapGesture, doubleTapGesture} = useTapGestures({ diff --git a/src/components/MultiGestureCanvas/usePinchGesture.js b/src/components/MultiGestureCanvas/usePinchGesture.js index 63f023251aa4..b363f3cf1218 100644 --- a/src/components/MultiGestureCanvas/usePinchGesture.js +++ b/src/components/MultiGestureCanvas/usePinchGesture.js @@ -141,6 +141,8 @@ const usePinchGesture = ({ } const triggerScaleChangeCallback = () => { + 'worklet'; + if (onScaleChanged == null) { return; } diff --git a/src/components/MultiGestureCanvas/useTapGestures.js b/src/components/MultiGestureCanvas/useTapGestures.js index 467b005fb1a2..ebc573301927 100644 --- a/src/components/MultiGestureCanvas/useTapGestures.js +++ b/src/components/MultiGestureCanvas/useTapGestures.js @@ -29,7 +29,7 @@ const useTapGestures = ({ const doubleTapScale = useMemo(() => Math.max(DOUBLE_TAP_SCALE, maxContentScale / minContentScale), [maxContentScale, minContentScale]); const zoomToCoordinates = MultiGestureCanvasUtils.useWorkletCallback( - (focalX, focalY) => { + (focalX, focalY, callbackProp) => { 'worklet'; stopAnimation(); @@ -93,9 +93,11 @@ const useTapGestures = ({ offsetAfterZooming.y = 0; } + const callback = callbackProp || (() => {}); + offsetX.value = withSpring(offsetAfterZooming.x, MultiGestureCanvasUtils.SPRING_CONFIG); offsetY.value = withSpring(offsetAfterZooming.y, MultiGestureCanvasUtils.SPRING_CONFIG); - zoomScale.value = withSpring(doubleTapScale, MultiGestureCanvasUtils.SPRING_CONFIG); + zoomScale.value = withSpring(doubleTapScale, MultiGestureCanvasUtils.SPRING_CONFIG, callback); pinchScale.value = doubleTapScale; }, [scaledContentWidth, scaledContentHeight, canvasSize, doubleTapScale], @@ -113,16 +115,20 @@ const useTapGestures = ({ .maxDelay(150) .maxDistance(20) .onEnd((evt) => { + const triggerScaleChangedEvent = () => { + 'worklet'; + + if (onScaleChanged != null) { + runOnJS(onScaleChanged)(zoomScale.value); + } + }; + // If the content is already zoomed, we want to reset the zoom, // otherwwise we want to zoom in if (zoomScale.value > 1) { - reset(true); + reset(true, triggerScaleChangedEvent); } else { - zoomToCoordinates(evt.x, evt.y); - } - - if (onScaleChanged != null) { - runOnJS(onScaleChanged)(zoomScale.value); + zoomToCoordinates(evt.x, evt.y, triggerScaleChangedEvent); } }); From 391d0357065a067e2e24ddfc5fabdfe47a83ef65 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 7 Jan 2024 21:58:33 +0100 Subject: [PATCH 086/701] fix: typo --- src/components/Attachments/AttachmentCarousel/CarouselItem.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Attachments/AttachmentCarousel/CarouselItem.js b/src/components/Attachments/AttachmentCarousel/CarouselItem.js index abe371768879..a73b1f58e7b3 100644 --- a/src/components/Attachments/AttachmentCarousel/CarouselItem.js +++ b/src/components/Attachments/AttachmentCarousel/CarouselItem.js @@ -94,7 +94,7 @@ function CarouselItem({item, onPress}) { From be3c6744e9d3c28742104045ed56470fcd084a56 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 7 Jan 2024 22:00:23 +0100 Subject: [PATCH 087/701] move prop --- src/components/Attachments/AttachmentCarousel/CarouselItem.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Attachments/AttachmentCarousel/CarouselItem.js b/src/components/Attachments/AttachmentCarousel/CarouselItem.js index a73b1f58e7b3..878b4eef9539 100644 --- a/src/components/Attachments/AttachmentCarousel/CarouselItem.js +++ b/src/components/Attachments/AttachmentCarousel/CarouselItem.js @@ -94,8 +94,8 @@ function CarouselItem({item, onPress}) { From 30313f21d1a7423985c82c418020dad4baa0ee6b Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 7 Jan 2024 22:19:13 +0100 Subject: [PATCH 088/701] fix: wrong condition --- src/components/Lightbox.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Lightbox.js b/src/components/Lightbox.js index 2ce3ca8eb51f..e5c8f044485d 100644 --- a/src/components/Lightbox.js +++ b/src/components/Lightbox.js @@ -187,7 +187,7 @@ function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { Date: Sun, 7 Jan 2024 22:24:21 +0100 Subject: [PATCH 089/701] pass pagerRef --- src/components/Lightbox.js | 3 ++- src/components/MultiGestureCanvas/index.js | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/Lightbox.js b/src/components/Lightbox.js index e5c8f044485d..8d3cc474167e 100644 --- a/src/components/Lightbox.js +++ b/src/components/Lightbox.js @@ -52,7 +52,7 @@ function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { const StyleUtils = useStyleUtils(); const attachmentCarouselPagerContext = useContext(AttachmentCarouselPagerContext); - const {isUsedInCarousel, isSingleCarouselItem, isPagerSwiping, page, activePage, onTap, onScaleChanged} = useMemo(() => { + const {isUsedInCarousel, isSingleCarouselItem, isPagerSwiping, page, activePage, onTap, onScaleChanged, pagerRef} = useMemo(() => { if (attachmentCarouselPagerContext == null) { return { isUsedInCarousel: false, @@ -193,6 +193,7 @@ function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { canvasSize={containerSize} contentSize={imageDimensions?.lightboxSize} zoomRange={zoomRange} + pagerRef={pagerRef} > Date: Sun, 7 Jan 2024 22:24:31 +0100 Subject: [PATCH 090/701] fix: arrow button visibility --- .../Attachments/AttachmentCarousel/index.native.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/Attachments/AttachmentCarousel/index.native.js b/src/components/Attachments/AttachmentCarousel/index.native.js index 64262b38b0d1..3d06ceeaa1ec 100644 --- a/src/components/Attachments/AttachmentCarousel/index.native.js +++ b/src/components/Attachments/AttachmentCarousel/index.native.js @@ -131,7 +131,12 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, initialPage={page} scrollEnabled={isZoomedOut} activeSource={activeSource} - onTap={() => setShouldShowArrows(!shouldShowArrows)} + onTap={() => { + if (!isZoomedOut) { + return; + } + setShouldShowArrows(!shouldShowArrows); + }} onPageSelected={({nativeEvent: {position: newPage}}) => updatePage(newPage)} onScaleChanged={handleScaleChange} ref={pagerRef} From 934bfd3377a385707c8d5c5810f0a5b6c27748f0 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 7 Jan 2024 22:26:09 +0100 Subject: [PATCH 091/701] pass pagerRef --- src/components/Attachments/AttachmentCarousel/Pager/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Attachments/AttachmentCarousel/Pager/index.js b/src/components/Attachments/AttachmentCarousel/Pager/index.js index 84f77dae4953..3fd6475f314c 100644 --- a/src/components/Attachments/AttachmentCarousel/Pager/index.js +++ b/src/components/Attachments/AttachmentCarousel/Pager/index.js @@ -98,6 +98,7 @@ function AttachmentCarouselPager({items, activeSource, initialPage, scrollEnable isPagerSwiping: isPagerSwipingState, onTap, onScaleChanged, + pagerRef, }), [activePageState, isPagerSwipingState, itemsMeta, onScaleChanged, onTap], ); From 6be9adbe56b4113f874612167fe86c57dd5e410f Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Sun, 7 Jan 2024 22:46:37 +0100 Subject: [PATCH 092/701] fix: pager swiping --- .../AttachmentCarousel/Pager/index.js | 30 +++++++------------ src/components/Lightbox.js | 2 +- src/components/MultiGestureCanvas/index.js | 8 ++--- .../MultiGestureCanvas/usePanGesture.js | 6 ++-- .../MultiGestureCanvas/usePinchGesture.js | 4 +-- .../MultiGestureCanvas/useTapGestures.js | 4 +-- 6 files changed, 23 insertions(+), 31 deletions(-) diff --git a/src/components/Attachments/AttachmentCarousel/Pager/index.js b/src/components/Attachments/AttachmentCarousel/Pager/index.js index 3fd6475f314c..ab7c07c1dc30 100644 --- a/src/components/Attachments/AttachmentCarousel/Pager/index.js +++ b/src/components/Attachments/AttachmentCarousel/Pager/index.js @@ -3,7 +3,7 @@ import React, {useEffect, useImperativeHandle, useMemo, useRef, useState} from ' import {View} from 'react-native'; import {createNativeWrapper} from 'react-native-gesture-handler'; import PagerView from 'react-native-pager-view'; -import Animated, {runOnJS, useAnimatedReaction, useEvent, useHandler, useSharedValue} from 'react-native-reanimated'; +import Animated, {useEvent, useHandler, useSharedValue} from 'react-native-reanimated'; import _ from 'underscore'; import CarouselItem from '@components/Attachments/AttachmentCarousel/CarouselItem'; import refPropTypes from '@components/refPropTypes'; @@ -59,18 +59,10 @@ function AttachmentCarouselPager({items, activeSource, initialPage, scrollEnable const styles = useThemeStyles(); const pagerRef = useRef(null); + const isPagerSwiping = useSharedValue(false); const activePage = useSharedValue(initialPage); const [activePageState, setActivePageState] = useState(initialPage); - // Set active page initially and when initial page changes - useEffect(() => { - setActivePageState(initialPage); - activePage.value = initialPage; - }, [activePage, initialPage]); - - const itemsMeta = useMemo(() => _.map(items, (item, index) => ({source: item.source, index, isActive: index === activePageState})), [activePageState, items]); - - const isPagerSwiping = useSharedValue(false); const pageScrollHandler = usePageScrollHandler( { onPageScroll: (e) => { @@ -83,24 +75,24 @@ function AttachmentCarouselPager({items, activeSource, initialPage, scrollEnable [], ); - const [isPagerSwipingState, setPagerSwipingState] = useState(false); - useAnimatedReaction( - () => [isPagerSwiping.value], - (isSwiping) => { - runOnJS(setPagerSwipingState)(isSwiping); - }, - ); + // Set active page initially and when initial page changes + useEffect(() => { + setActivePageState(initialPage); + activePage.value = initialPage; + }, [activePage, initialPage]); + + const itemsMeta = useMemo(() => _.map(items, (item, index) => ({source: item.source, index, isActive: index === activePageState})), [activePageState, items]); const contextValue = useMemo( () => ({ itemsMeta, activePage: activePageState, - isPagerSwiping: isPagerSwipingState, + isPagerSwiping, onTap, onScaleChanged, pagerRef, }), - [activePageState, isPagerSwipingState, itemsMeta, onScaleChanged, onTap], + [activePageState, isPagerSwiping, itemsMeta, onScaleChanged, onTap], ); useImperativeHandle( diff --git a/src/components/Lightbox.js b/src/components/Lightbox.js index 8d3cc474167e..17d249113eb7 100644 --- a/src/components/Lightbox.js +++ b/src/components/Lightbox.js @@ -187,13 +187,13 @@ function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { { +const usePanGesture = ({canvasSize, contentSize, zoomScale, totalScale, offsetX, offsetY, panTranslateX, panTranslateY, stopAnimation, isPagerSwiping}) => { // The content size after fitting it to the canvas and zooming const zoomedContentWidth = useDerivedValue(() => contentSize.width * totalScale.value, [contentSize.width]); const zoomedContentHeight = useDerivedValue(() => contentSize.height * totalScale.value, [contentSize.height]); @@ -108,7 +108,7 @@ const usePanGesture = ({areTransformationsEnabled, canvasSize, contentSize, zoom .averageTouches(true) .onTouchesMove((_evt, state) => { // We only allow panning when the content is zoomed in and the tranformations are enabled - if (zoomScale.value <= 1 || !areTransformationsEnabled) { + if (zoomScale.value <= 1 || isPagerSwiping.value) { return; } @@ -138,7 +138,7 @@ const usePanGesture = ({areTransformationsEnabled, canvasSize, contentSize, zoom panTranslateY.value = 0; // If we the MultiGestureCanvas is disabled, we don't want to return to boundaries - if (!areTransformationsEnabled) { + if (isPagerSwiping.value) { return; } diff --git a/src/components/MultiGestureCanvas/usePinchGesture.js b/src/components/MultiGestureCanvas/usePinchGesture.js index b363f3cf1218..73a51dc96087 100644 --- a/src/components/MultiGestureCanvas/usePinchGesture.js +++ b/src/components/MultiGestureCanvas/usePinchGesture.js @@ -5,7 +5,6 @@ import {runOnJS, useAnimatedReaction, useSharedValue, withSpring} from 'react-na import * as MultiGestureCanvasUtils from './utils'; const usePinchGesture = ({ - areTransformationsEnabled, canvasSize, zoomScale, zoomRange, @@ -16,6 +15,7 @@ const usePinchGesture = ({ pinchScale, stopAnimation, onScaleChanged, + isPagerSwiping, }) => { // The current pinch gesture event scale const currentPinchScale = useSharedValue(1); @@ -72,7 +72,7 @@ const usePinchGesture = ({ .enabled(pinchEnabled) .onTouchesDown((_evt, state) => { // We don't want to activate pinch gesture when transformations are disabled - if (!areTransformationsEnabled) { + if (!isPagerSwiping.value) { return; } diff --git a/src/components/MultiGestureCanvas/useTapGestures.js b/src/components/MultiGestureCanvas/useTapGestures.js index ebc573301927..18b67a2b2fe0 100644 --- a/src/components/MultiGestureCanvas/useTapGestures.js +++ b/src/components/MultiGestureCanvas/useTapGestures.js @@ -7,7 +7,6 @@ import * as MultiGestureCanvasUtils from './utils'; const DOUBLE_TAP_SCALE = 3; const useTapGestures = ({ - areTransformationsEnabled, canvasSize, contentSize, minContentScale, @@ -20,6 +19,7 @@ const useTapGestures = ({ stopAnimation, onScaleChanged, onTap, + isPagerSwiping, }) => { // The content size after scaling it with minimum scale to fit the content into the canvas const scaledContentWidth = useMemo(() => contentSize.width * minContentScale, [contentSize.width, minContentScale]); @@ -105,7 +105,7 @@ const useTapGestures = ({ const doubleTapGesture = Gesture.Tap() .onTouchesDown((_evt, state) => { - if (areTransformationsEnabled) { + if (!isPagerSwiping.value) { return; } From 5fbcd6e562da1967d28c3476b0846e912904b256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ska=C5=82ka?= Date: Mon, 8 Jan 2024 09:05:25 +0100 Subject: [PATCH 093/701] Fix pausing video player when opening the modal --- src/components/VideoPlayer/BaseVideoPlayer.js | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index d989825e7e61..160a145607dd 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -1,5 +1,4 @@ /* eslint-disable no-underscore-dangle */ -import {useIsFocused} from '@react-navigation/native'; import {ResizeMode, Video} from 'expo-av'; import PropTypes from 'prop-types'; import React, {useCallback, useEffect, useRef, useState} from 'react'; @@ -64,7 +63,6 @@ function BaseVideoPlayer({ shouldUseSmallVideoControls, isVideoHovered, }) { - const isFocused = useIsFocused(); const styles = useThemeStyles(); const {isSmallScreenWidth} = useWindowDimensions(); const {currentlyPlayingURL, updateSharedElements, sharedElement, originalParent, shareVideoPlayerElements, currentVideoPlayerRef} = usePlaybackContext(); @@ -107,15 +105,15 @@ function BaseVideoPlayer({ // update shared video elements useEffect(() => { - if (!isFocused || shouldUseSharedVideoElement || url !== currentlyPlayingURL) { + if (shouldUseSharedVideoElement || url !== currentlyPlayingURL) { return; } shareVideoPlayerElements(videoPlayerRef.current, videoPlayerElementParentRef.current, videoPlayerElementRef.current); - }, [currentlyPlayingURL, shouldUseSharedVideoElement, shareVideoPlayerElements, updateSharedElements, url, isFocused]); + }, [currentlyPlayingURL, shouldUseSharedVideoElement, shareVideoPlayerElements, updateSharedElements, url]); // append shared video element to new parent (used for example in attachment modal) useEffect(() => { - if (!isFocused || url !== currentlyPlayingURL || !sharedElement || !shouldUseSharedVideoElement) { + if (url !== currentlyPlayingURL || !sharedElement || !shouldUseSharedVideoElement) { return; } @@ -131,16 +129,7 @@ function BaseVideoPlayer({ } originalParent.appendChild(sharedElement); }; - }, [bindFunctions, currentVideoPlayerRef, currentlyPlayingURL, isFocused, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); - - useEffect(() => { - // pause and unload video player when screen is not focused - if (isFocused || !videoPlayerRef.current) { - return; - } - videoPlayerRef.current.setStatusAsync({shouldPlay: false}); - videoPlayerRef.current.unloadAsync(); - }, [isFocused]); + }, [bindFunctions, currentVideoPlayerRef, currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); return ( <> From 3376f869266fb598ee4fb8ff0d027a5e1ac72f44 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Mon, 8 Jan 2024 09:41:09 +0100 Subject: [PATCH 094/701] generalize MultiGestureCanvas props --- src/components/Lightbox.js | 4 ++-- src/components/MultiGestureCanvas/index.js | 23 +++++++++++++++---- .../MultiGestureCanvas/usePanGesture.js | 6 ++--- .../MultiGestureCanvas/usePinchGesture.js | 4 ++-- .../MultiGestureCanvas/useTapGestures.js | 4 ++-- 5 files changed, 27 insertions(+), 14 deletions(-) diff --git a/src/components/Lightbox.js b/src/components/Lightbox.js index 17d249113eb7..e301e94b5200 100644 --- a/src/components/Lightbox.js +++ b/src/components/Lightbox.js @@ -192,8 +192,8 @@ function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { canvasSize={containerSize} contentSize={imageDimensions?.lightboxSize} zoomRange={zoomRange} - pagerRef={pagerRef} - isPagerSwiping={isPagerSwiping} + externalGestureRef={pagerRef} + shouldDisableTransformationGestures={isPagerSwiping} > { +const usePanGesture = ({canvasSize, contentSize, zoomScale, totalScale, offsetX, offsetY, panTranslateX, panTranslateY, stopAnimation, shouldDisableTransformationGestures}) => { // The content size after fitting it to the canvas and zooming const zoomedContentWidth = useDerivedValue(() => contentSize.width * totalScale.value, [contentSize.width]); const zoomedContentHeight = useDerivedValue(() => contentSize.height * totalScale.value, [contentSize.height]); @@ -108,7 +108,7 @@ const usePanGesture = ({canvasSize, contentSize, zoomScale, totalScale, offsetX, .averageTouches(true) .onTouchesMove((_evt, state) => { // We only allow panning when the content is zoomed in and the tranformations are enabled - if (zoomScale.value <= 1 || isPagerSwiping.value) { + if (zoomScale.value <= 1 || shouldDisableTransformationGestures.value) { return; } @@ -138,7 +138,7 @@ const usePanGesture = ({canvasSize, contentSize, zoomScale, totalScale, offsetX, panTranslateY.value = 0; // If we the MultiGestureCanvas is disabled, we don't want to return to boundaries - if (isPagerSwiping.value) { + if (shouldDisableTransformationGestures.value) { return; } diff --git a/src/components/MultiGestureCanvas/usePinchGesture.js b/src/components/MultiGestureCanvas/usePinchGesture.js index 73a51dc96087..154a232f584d 100644 --- a/src/components/MultiGestureCanvas/usePinchGesture.js +++ b/src/components/MultiGestureCanvas/usePinchGesture.js @@ -15,7 +15,7 @@ const usePinchGesture = ({ pinchScale, stopAnimation, onScaleChanged, - isPagerSwiping, + shouldDisableTransformationGestures, }) => { // The current pinch gesture event scale const currentPinchScale = useSharedValue(1); @@ -72,7 +72,7 @@ const usePinchGesture = ({ .enabled(pinchEnabled) .onTouchesDown((_evt, state) => { // We don't want to activate pinch gesture when transformations are disabled - if (!isPagerSwiping.value) { + if (!shouldDisableTransformationGestures.value) { return; } diff --git a/src/components/MultiGestureCanvas/useTapGestures.js b/src/components/MultiGestureCanvas/useTapGestures.js index 18b67a2b2fe0..0a97ce379f76 100644 --- a/src/components/MultiGestureCanvas/useTapGestures.js +++ b/src/components/MultiGestureCanvas/useTapGestures.js @@ -19,7 +19,7 @@ const useTapGestures = ({ stopAnimation, onScaleChanged, onTap, - isPagerSwiping, + shouldDisableTransformationGestures, }) => { // The content size after scaling it with minimum scale to fit the content into the canvas const scaledContentWidth = useMemo(() => contentSize.width * minContentScale, [contentSize.width, minContentScale]); @@ -105,7 +105,7 @@ const useTapGestures = ({ const doubleTapGesture = Gesture.Tap() .onTouchesDown((_evt, state) => { - if (!isPagerSwiping.value) { + if (!shouldDisableTransformationGestures.value) { return; } From 7195fdf84ae74034c8d97064c9487e4034989477 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Mon, 8 Jan 2024 10:52:15 +0100 Subject: [PATCH 095/701] add more improvements to Lightbox --- src/components/ImageView/index.native.js | 2 +- src/components/Lightbox.js | 142 ++++++++++----------- src/components/MultiGestureCanvas/utils.ts | 23 +++- 3 files changed, 90 insertions(+), 77 deletions(-) diff --git a/src/components/ImageView/index.native.js b/src/components/ImageView/index.native.js index 007bc753ec0d..9189548ce1a7 100644 --- a/src/components/ImageView/index.native.js +++ b/src/components/ImageView/index.native.js @@ -26,7 +26,7 @@ const defaultProps = { function ImageView({isAuthTokenRequired, url, onScaleChanged, style, zoomRange, onError}) { return ( setCanvasSize({width: PixelRatio.roundToNearestPixel(width), height: PixelRatio.roundToNearestPixel(height)}), + [], + ); + + const [contentSize, setInternalContentSize] = useState(() => cachedImageDimensions.get(uri)); + const setContentSize = useCallback( + (newDimensions) => { + setInternalContentSize(newDimensions); + cachedImageDimensions.set(uri, newDimensions); + }, + [uri], + ); + const updateContentSize = useCallback(({nativeEvent: {width, height}}) => setContentSize({width: width * PixelRatio.get(), height: height * PixelRatio.get()}), [setContentSize]); + const contentLoaded = contentSize != null; + const attachmentCarouselPagerContext = useContext(AttachmentCarouselPagerContext); const {isUsedInCarousel, isSingleCarouselItem, isPagerSwiping, page, activePage, onTap, onScaleChanged, pagerRef} = useMemo(() => { if (attachmentCarouselPagerContext == null) { @@ -65,34 +90,35 @@ function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { }; } - const foundPageIndex = _.findIndex(attachmentCarouselPagerContext.itemsMeta, (item) => item.source === source); + const foundPageIndex = _.findIndex(attachmentCarouselPagerContext.itemsMeta, (item) => item.source === uri); return { ...attachmentCarouselPagerContext, isUsedInCarousel: true, isSingleCarouselItem: attachmentCarouselPagerContext.itemsMeta.length === 1, page: foundPageIndex, }; - }, [attachmentCarouselPagerContext, source]); + }, [attachmentCarouselPagerContext, uri]); const hasSiblingCarouselItems = isUsedInCarousel && !isSingleCarouselItem; - const [containerSize, setContainerSize] = useState({width: 0, height: 0}); - const isContainerLoaded = containerSize.width !== 0 && containerSize.height !== 0; - - const [imageDimensions, _setImageDimensions] = useState(() => cachedDimensions.get(source)); - const setImageDimensions = (newDimensions) => { - _setImageDimensions(newDimensions); - cachedDimensions.set(source, newDimensions); - }; - const isActivePage = page === activePage; const [isActive, setActive] = useState(isActivePage); - const [isImageLoaded, setImageLoaded] = useState(false); const isInactiveCarouselItem = hasSiblingCarouselItems && !isActive; const [isFallbackVisible, setFallbackVisible] = useState(isInactiveCarouselItem); - const [isFallbackLoaded, setFallbackLoaded] = useState(false); + const [isFallbackImageLoaded, setFallbackImageLoaded] = useState(false); + const fallbackSize = useMemo(() => { + if (!hasSiblingCarouselItems || contentSize == null || canvasSize.width === 0 || canvasSize.height === 0) { + return DEFAULT_IMAGE_DIMENSIONS; + } + + const {minScale} = MultiGestureCanvasUtils.getCanvasFitScale({canvasSize, contentSize}); + + return { + width: PixelRatio.roundToNearestPixel(contentSize.width * minScale), + height: PixelRatio.roundToNearestPixel(contentSize.height * minScale), + }; + }, [canvasSize, hasSiblingCarouselItems, contentSize]); - const isLightboxLoaded = imageDimensions?.lightboxSize != null; const isLightboxInRange = useMemo(() => { if (NUMBER_OF_CONCURRENT_LIGHTBOXES === -1) { return true; @@ -102,20 +128,17 @@ function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { const indexOutOfRange = page > activePage + indexCanvasOffset || page < activePage - indexCanvasOffset; return !indexOutOfRange; }, [activePage, page]); - const isLightboxVisible = isLightboxInRange && (isActive || isLightboxLoaded || isFallbackLoaded); + const [isLightboxImageLoaded, setLightboxImageLoaded] = useState(false); + const isLightboxVisible = isLightboxInRange && (isActive || isLightboxImageLoaded || isFallbackImageLoaded); // If the fallback image is currently visible, we want to hide the Lightbox until the fallback gets hidden, // so that we don't see two overlapping images at the same time. + // We cannot NOT render it, because we need to render the Lightbox to get the correct dimensions for the fallback image. // If there the Lightbox is not used within a carousel, we don't need to hide the Lightbox, // because it's only going to be rendered after the fallback image is hidden. const shouldHideLightbox = hasSiblingCarouselItems && isFallbackVisible; - const isLoading = isActive && (!isContainerLoaded || !isImageLoaded); - - const updateCanvasSize = useCallback( - ({nativeEvent}) => setContainerSize({width: PixelRatio.roundToNearestPixel(nativeEvent.layout.width), height: PixelRatio.roundToNearestPixel(nativeEvent.layout.height)}), - [], - ); + const isLoading = isActive && (!isCanvasLoaded || !contentLoaded); // We delay setting a page to active state by a (few) millisecond(s), // to prevent the image transformer from flashing while still rendering @@ -132,8 +155,8 @@ function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { if (isLightboxVisible) { return; } - setImageLoaded(false); - }, [isLightboxVisible]); + setContentSize(undefined); + }, [isLightboxVisible, setContentSize]); useEffect(() => { if (!hasSiblingCarouselItems) { @@ -141,47 +164,29 @@ function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { } if (isActive) { - if (isImageLoaded && isFallbackVisible) { + if (contentLoaded && isFallbackVisible) { // We delay hiding the fallback image while image transformer is still rendering setTimeout(() => { setFallbackVisible(false); - setFallbackLoaded(false); + setFallbackImageLoaded(false); }, 100); } } else { - if (isLightboxVisible && isLightboxLoaded) { + if (isLightboxVisible && isLightboxImageLoaded) { return; } // Show fallback when the image goes out of focus or when the image is loading setFallbackVisible(true); } - }, [hasSiblingCarouselItems, isActive, isImageLoaded, isFallbackVisible, isLightboxLoaded, isLightboxVisible]); - - const fallbackSize = useMemo(() => { - if (!hasSiblingCarouselItems || (imageDimensions?.lightboxSize == null && imageDimensions?.fallbackSize == null) || containerSize.width === 0 || containerSize.height === 0) { - return { - width: DEFAULT_IMAGE_SIZE, - height: DEFAULT_IMAGE_SIZE, - }; - } - - const imageSize = imageDimensions.lightboxSize || imageDimensions.fallbackSize; - - const {minScale} = getCanvasFitScale({canvasSize: containerSize, contentSize: imageSize}); - - return { - width: PixelRatio.roundToNearestPixel(imageSize.width * minScale), - height: PixelRatio.roundToNearestPixel(imageSize.height * minScale), - }; - }, [containerSize, hasSiblingCarouselItems, imageDimensions]); + }, [hasSiblingCarouselItems, isActive, isFallbackVisible, isLightboxVisible, contentLoaded, isLightboxImageLoaded]); return ( - {isContainerLoaded && ( + {isCanvasLoaded && ( <> {isLightboxVisible && ( @@ -189,23 +194,19 @@ function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { isActive={isActive} onTap={onTap} onScaleChanged={onScaleChanged} - canvasSize={containerSize} - contentSize={imageDimensions?.lightboxSize} + canvasSize={canvasSize} + contentSize={contentSize} zoomRange={zoomRange} externalGestureRef={pagerRef} shouldDisableTransformationGestures={isPagerSwiping} > setImageLoaded(true)} - onLoad={(e) => { - const width = (e.nativeEvent?.width || 0) * PixelRatio.get(); - const height = (e.nativeEvent?.height || 0) * PixelRatio.get(); - setImageDimensions({...imageDimensions, lightboxSize: {width, height}}); - }} + onLoad={updateContentSize} + onLoadEnd={() => setLightboxImageLoaded(true)} /> @@ -215,21 +216,12 @@ function Lightbox({isAuthTokenRequired, source, onError, style, zoomRange}) { {isFallbackVisible && ( setFallbackLoaded(true)} - onLoad={(e) => { - const width = (e.nativeEvent?.width || 0) * PixelRatio.get(); - const height = (e.nativeEvent?.height || 0) * PixelRatio.get(); - - if (imageDimensions?.lightboxSize != null) { - return; - } - - setImageDimensions({...imageDimensions, fallbackSize: {width, height}}); - }} + onLoad={updateContentSize} + onLoadEnd={() => setFallbackImageLoaded(true)} /> )} diff --git a/src/components/MultiGestureCanvas/utils.ts b/src/components/MultiGestureCanvas/utils.ts index 5cddd009117a..d61eb8c6efcd 100644 --- a/src/components/MultiGestureCanvas/utils.ts +++ b/src/components/MultiGestureCanvas/utils.ts @@ -43,4 +43,25 @@ const useWorkletCallback = (callback: Parameters[0], deps: P return useCallback(callback, deps); }; -export {SPRING_CONFIG, zoomScaleBounceFactors, clamp, useWorkletCallback}; +type GetCanvasFitScale = (props: { + canvasSize: { + width: number; + height: number; + }; + contentSize: { + width: number; + height: number; + }; +}) => {scaleX: number; scaleY: number; minScale: number; maxScale: number}; + +const getCanvasFitScale: GetCanvasFitScale = ({canvasSize, contentSize}) => { + const scaleX = canvasSize.width / contentSize.width; + const scaleY = canvasSize.height / contentSize.height; + + const minScale = Math.min(scaleX, scaleY); + const maxScale = Math.max(scaleX, scaleY); + + return {scaleX, scaleY, minScale, maxScale}; +}; + +export {SPRING_CONFIG, zoomScaleBounceFactors, clamp, useWorkletCallback, getCanvasFitScale}; From c5669ddbd97b2e4068157ff225b6410bf4290b0c Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Mon, 8 Jan 2024 10:55:40 +0100 Subject: [PATCH 096/701] rename prop --- src/components/Lightbox.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Lightbox.js b/src/components/Lightbox.js index c456929ee3f4..adc5ff1c3976 100644 --- a/src/components/Lightbox.js +++ b/src/components/Lightbox.js @@ -67,9 +67,9 @@ function Lightbox({isAuthTokenRequired, uri, onError, style, zoomRange}) { const [contentSize, setInternalContentSize] = useState(() => cachedImageDimensions.get(uri)); const setContentSize = useCallback( - (newDimensions) => { - setInternalContentSize(newDimensions); - cachedImageDimensions.set(uri, newDimensions); + (newContentSize) => { + setInternalContentSize(newContentSize); + cachedImageDimensions.set(uri, newContentSize); }, [uri], ); From b768721086acb72f6915a7950b1d19c34c973a54 Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Mon, 8 Jan 2024 11:29:04 +0100 Subject: [PATCH 097/701] Migrate ArrowIcon to TS --- .../{ArrowIcon.js => ArrowIcon.tsx} | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) rename src/components/DatePicker/CalendarPicker/{ArrowIcon.js => ArrowIcon.tsx} (61%) diff --git a/src/components/DatePicker/CalendarPicker/ArrowIcon.js b/src/components/DatePicker/CalendarPicker/ArrowIcon.tsx similarity index 61% rename from src/components/DatePicker/CalendarPicker/ArrowIcon.js rename to src/components/DatePicker/CalendarPicker/ArrowIcon.tsx index 11455cb4f78a..5c58ed22f6fa 100644 --- a/src/components/DatePicker/CalendarPicker/ArrowIcon.js +++ b/src/components/DatePicker/CalendarPicker/ArrowIcon.tsx @@ -1,6 +1,6 @@ -import PropTypes from 'prop-types'; import React from 'react'; import {View} from 'react-native'; +import type {ValueOf} from 'type-fest'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; import useStyleUtils from '@hooks/useStyleUtils'; @@ -8,25 +8,20 @@ import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; -const propTypes = { +type ArrowIconProps = { /** Specifies if the arrow icon should be disabled or not. */ - disabled: PropTypes.bool, + disabled?: boolean; /** Specifies direction of icon */ - direction: PropTypes.oneOf([CONST.DIRECTION.LEFT, CONST.DIRECTION.RIGHT]), + direction?: ValueOf; }; -const defaultProps = { - disabled: false, - direction: CONST.DIRECTION.RIGHT, -}; - -function ArrowIcon(props) { +function ArrowIcon({disabled = false, direction = CONST.DIRECTION.RIGHT}: ArrowIconProps) { const theme = useTheme(); const styles = useThemeStyles(); const StyleUtils = useStyleUtils(); return ( - + Date: Mon, 8 Jan 2024 11:45:56 +0100 Subject: [PATCH 098/701] rename variable --- src/components/Lightbox.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Lightbox.js b/src/components/Lightbox.js index adc5ff1c3976..14db04d328cd 100644 --- a/src/components/Lightbox.js +++ b/src/components/Lightbox.js @@ -90,12 +90,12 @@ function Lightbox({isAuthTokenRequired, uri, onError, style, zoomRange}) { }; } - const foundPageIndex = _.findIndex(attachmentCarouselPagerContext.itemsMeta, (item) => item.source === uri); + const foundPage = _.findIndex(attachmentCarouselPagerContext.itemsMeta, (item) => item.source === uri); return { ...attachmentCarouselPagerContext, isUsedInCarousel: true, isSingleCarouselItem: attachmentCarouselPagerContext.itemsMeta.length === 1, - page: foundPageIndex, + page: foundPage, }; }, [attachmentCarouselPagerContext, uri]); const hasSiblingCarouselItems = isUsedInCarousel && !isSingleCarouselItem; From e4d30dd20588877b28318bcc9d4a716be8cadba6 Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Mon, 8 Jan 2024 11:50:05 +0100 Subject: [PATCH 099/701] update prop types --- .../MultiGestureCanvas/propTypes.js | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/src/components/MultiGestureCanvas/propTypes.js b/src/components/MultiGestureCanvas/propTypes.js index 744dd07db0c8..a72d2364e0a5 100644 --- a/src/components/MultiGestureCanvas/propTypes.js +++ b/src/components/MultiGestureCanvas/propTypes.js @@ -1,4 +1,5 @@ import PropTypes from 'prop-types'; +import refPropTypes from '@components/refPropTypes'; const defaultZoomRange = { min: 1, @@ -24,35 +25,35 @@ const multiGestureCanvasPropTypes = { ...zoomRangePropTypes, /** - * Wheter the canvas is currently active (in the screen) or not. - * Disables certain gestures and functionality + * Wheter the canvas is currently active (in the screen) or not. + * Disables certain gestures and functionality */ isActive: PropTypes.bool, - /** Whether pan, pinch and double tap transformations are enabled */ - areTransformationsEnabled: PropTypes.bool, - /** Handles scale changed event */ onScaleChanged: PropTypes.func, - /** The width and height of the canvas. - * This is needed in order to properly scale the content in the canvas + /** + * The width and height of the canvas. + * This is needed in order to properly scale the content in the canvas */ canvasSize: PropTypes.shape({ width: PropTypes.number.isRequired, height: PropTypes.number.isRequired, }).isRequired, - /** The width and height of the content. - * This is needed in order to properly scale the content in the canvas + /** + * The width and height of the content. + * This is needed in order to properly scale the content in the canvas */ contentSize: PropTypes.shape({ width: PropTypes.number, height: PropTypes.number, }), - /** The scale factors (scaleX, scaleY) that are used to scale the content (width/height) to the canvas size. - * `scaledWidth` and `scaledHeight` reflect the actual size of the content after scaling. + /** + * The scale factors (scaleX, scaleY) that are used to scale the content (width/height) to the canvas size. + * `scaledWidth` and `scaledHeight` reflect the actual size of the content after scaling. */ contentScaling: PropTypes.shape({ scaleX: PropTypes.number, @@ -61,6 +62,17 @@ const multiGestureCanvasPropTypes = { scaledHeight: PropTypes.number, }), + /** + * A shared value of type boolean, that indicates disabled the transformation gestures (pinch, pan, double tap) + */ + shouldDisableTransformationGestures: PropTypes.shape({value: PropTypes.bool}), + + /** + * A ref to an external gesture handler, like a PagerView from `react-native-pager-view` + * Used to disable the pan, pinch and double tap gesture when the user is swiping between pages + */ + externalGestureRef: refPropTypes, + /** Content that should be transformed inside the canvas (images, pdf, ...) */ children: PropTypes.node.isRequired, }; From d469354122ae2d9cfa8dc442b0a6008b8ba51e4a Mon Sep 17 00:00:00 2001 From: Christoph Pader Date: Mon, 8 Jan 2024 12:01:35 +0100 Subject: [PATCH 100/701] fix: propType --- src/components/Lightbox.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/Lightbox.js b/src/components/Lightbox.js index 14db04d328cd..455afaa24b44 100644 --- a/src/components/Lightbox.js +++ b/src/components/Lightbox.js @@ -5,7 +5,6 @@ import React, {useCallback, useContext, useEffect, useMemo, useState} from 'reac import {ActivityIndicator, PixelRatio, StyleSheet, View} from 'react-native'; import useStyleUtils from '@hooks/useStyleUtils'; import AttachmentCarouselPagerContext from './Attachments/AttachmentCarousel/Pager/AttachmentCarouselPagerContext'; -import * as AttachmentsPropTypes from './Attachments/propTypes'; import Image from './Image'; import MultiGestureCanvas from './MultiGestureCanvas'; import {zoomRangeDefaultProps, zoomRangePropTypes} from './MultiGestureCanvas/propTypes'; @@ -33,7 +32,7 @@ const propTypes = { onError: PropTypes.func, /** URI to full-sized attachment, SVG function, or numeric static image on native platforms */ - uri: AttachmentsPropTypes.string.isRequired, + uri: PropTypes.string.isRequired, /** Whether source url requires authentication */ isAuthTokenRequired: PropTypes.bool, From 7d2ee903cc48b5039e7a3001e63e9720b38eb234 Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Mon, 8 Jan 2024 12:45:28 +0100 Subject: [PATCH 101/701] Migrate YearPickerModal and generateMonthMatrix with tests to TS --- ...YearPickerModal.js => YearPickerModal.tsx} | 79 ++++++++++++------- ...eMonthMatrix.js => generateMonthMatrix.ts} | 14 ++-- ...trixTest.js => generateMonthMatrixTest.ts} | 12 +-- 3 files changed, 63 insertions(+), 42 deletions(-) rename src/components/DatePicker/CalendarPicker/{YearPickerModal.js => YearPickerModal.tsx} (57%) rename src/components/DatePicker/CalendarPicker/{generateMonthMatrix.js => generateMonthMatrix.ts} (87%) rename tests/unit/{generateMonthMatrixTest.js => generateMonthMatrixTest.ts} (93%) diff --git a/src/components/DatePicker/CalendarPicker/YearPickerModal.js b/src/components/DatePicker/CalendarPicker/YearPickerModal.tsx similarity index 57% rename from src/components/DatePicker/CalendarPicker/YearPickerModal.js rename to src/components/DatePicker/CalendarPicker/YearPickerModal.tsx index e8883648051c..99ca743333c0 100644 --- a/src/components/DatePicker/CalendarPicker/YearPickerModal.js +++ b/src/components/DatePicker/CalendarPicker/YearPickerModal.tsx @@ -1,63 +1,86 @@ -import PropTypes from 'prop-types'; import React, {useEffect, useMemo, useState} from 'react'; -import _ from 'underscore'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import Modal from '@components/Modal'; import ScreenWrapper from '@components/ScreenWrapper'; import SelectionList from '@components/SelectionList'; -import {radioListItemPropTypes} from '@components/SelectionList/selectionListPropTypes'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; -const propTypes = { +type RadioItem = { + /** Text to display */ + text: string; + + /** Alternate text to display */ + alternateText?: string; + + /** Key used internally by React */ + keyForList: string; + + /** Whether this option is selected */ + isSelected?: boolean; + + /** Element to show on the right side of the item */ + rightElement?: undefined; + + /** Whether this option is disabled for selection */ + isDisabled?: undefined; + + invitedSecondaryLogin?: undefined; + + /** Errors that this user may contain */ + errors?: undefined; + + /** The type of action that's pending */ + pendingAction?: undefined; + + sectionIndex: number; // smb throw this out + + index: number; // mb throw this out +}; + +type YearPickerModalProps = { /** Whether the modal is visible */ - isVisible: PropTypes.bool.isRequired, + isVisible: boolean; /** The list of years to render */ - years: PropTypes.arrayOf(PropTypes.shape(radioListItemPropTypes.item)).isRequired, + years: RadioItem[]; /** Currently selected year */ - currentYear: PropTypes.number, + currentYear?: number; /** Function to call when the user selects a year */ - onYearChange: PropTypes.func, + onYearChange?: (year: number) => void; /** Function to call when the user closes the year picker */ - onClose: PropTypes.func, -}; - -const defaultProps = { - currentYear: new Date().getFullYear(), - onYearChange: () => {}, - onClose: () => {}, + onClose?: () => void; }; -function YearPickerModal(props) { +function YearPickerModal({isVisible, years, currentYear = new Date().getFullYear(), onYearChange, onClose}: YearPickerModalProps) { const styles = useThemeStyles(); const {translate} = useLocalize(); const [searchText, setSearchText] = useState(''); const {sections, headerMessage} = useMemo(() => { - const yearsList = searchText === '' ? props.years : _.filter(props.years, (year) => year.text.includes(searchText)); + const yearsList = searchText === '' ? years : years.filter((year) => year.text.includes(searchText)); return { headerMessage: !yearsList.length ? translate('common.noResultsFound') : '', sections: [{data: yearsList, indexOffset: 0}], }; - }, [props.years, searchText, translate]); + }, [years, searchText, translate]); useEffect(() => { - if (props.isVisible) { + if (isVisible) { return; } setSearchText(''); - }, [props.isVisible]); + }, [isVisible]); return ( onClose?.()} + onModalHide={onClose} hideModalContentWhileAnimating useNativeDriver > @@ -69,19 +92,19 @@ function YearPickerModal(props) { > setSearchText(text.replace(CONST.REGEX.NON_NUMERIC, '').trim())} + onChangeText={(text: string) => setSearchText(text.replace(CONST.REGEX.NON_NUMERIC, '').trim())} inputMode={CONST.INPUT_MODE.NUMERIC} headerMessage={headerMessage} sections={sections} - onSelectRow={(option) => props.onYearChange(option.value)} - initiallyFocusedOptionKey={props.currentYear.toString()} + onSelectRow={(option) => onYearChange?.(option.value)} + initiallyFocusedOptionKey={currentYear.toString()} showScrollIndicator shouldStopPropagation /> @@ -90,8 +113,6 @@ function YearPickerModal(props) { ); } -YearPickerModal.propTypes = propTypes; -YearPickerModal.defaultProps = defaultProps; YearPickerModal.displayName = 'YearPickerModal'; export default YearPickerModal; diff --git a/src/components/DatePicker/CalendarPicker/generateMonthMatrix.js b/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts similarity index 87% rename from src/components/DatePicker/CalendarPicker/generateMonthMatrix.js rename to src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts index ecf338d36424..0109fa27ce0a 100644 --- a/src/components/DatePicker/CalendarPicker/generateMonthMatrix.js +++ b/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts @@ -8,16 +8,16 @@ import DateUtils from '@libs/DateUtils'; * @param {Number} month - The month (0-indexed) for which to generate the month matrix. * @returns {Array>} - A 2D array of the month's calendar days, with null values representing days outside the current month. */ -export default function generateMonthMatrix(year, month) { - if (typeof year !== 'number') { - throw new TypeError('Year must be a number'); - } +export default function generateMonthMatrix(year: number, month: number) { + // if (typeof year !== 'number') { + // throw new TypeError('Year must be a number'); + // } if (year < 0) { throw new Error('Year cannot be less than 0'); } - if (typeof month !== 'number') { - throw new TypeError('Month must be a number'); - } + // if (typeof month !== 'number') { + // throw new TypeError('Month must be a number'); + // } if (month < 0) { throw new Error('Month cannot be less than 0'); } diff --git a/tests/unit/generateMonthMatrixTest.js b/tests/unit/generateMonthMatrixTest.ts similarity index 93% rename from tests/unit/generateMonthMatrixTest.js rename to tests/unit/generateMonthMatrixTest.ts index 67dd65e6b1fd..6403595832bb 100644 --- a/tests/unit/generateMonthMatrixTest.js +++ b/tests/unit/generateMonthMatrixTest.ts @@ -125,12 +125,12 @@ describe('generateMonthMatrix', () => { expect(() => generateMonthMatrix(-1, 0)).toThrow(); }); - it('throws an error if year or month is not a number', () => { - expect(() => generateMonthMatrix()).toThrow(); - expect(() => generateMonthMatrix(2022, 'invalid')).toThrow(); - expect(() => generateMonthMatrix('2022', '0')).toThrow(); - expect(() => generateMonthMatrix(null, undefined)).toThrow(); - }); + // it('throws an error if year or month is not a number', () => { + // expect(() => generateMonthMatrix()).toThrow(); + // expect(() => generateMonthMatrix(2022, 'invalid')).toThrow(); + // expect(() => generateMonthMatrix('2022', '0')).toThrow(); + // expect(() => generateMonthMatrix(null, undefined)).toThrow(); + // }); it('returns a matrix with 6 rows and 7 columns for January 2022', () => { const matrix = generateMonthMatrix(2022, 0); From 0a2d2f0ed6ff4f1aeabba774a7db577a505d569e Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Mon, 8 Jan 2024 15:53:40 +0100 Subject: [PATCH 102/701] Rewrite CalendarDatePicker to functional component --- .../DatePicker/CalendarPicker/index.js | 347 ++++++++---------- 1 file changed, 162 insertions(+), 185 deletions(-) diff --git a/src/components/DatePicker/CalendarPicker/index.js b/src/components/DatePicker/CalendarPicker/index.js index 571ddc820d43..7c48d540fc13 100644 --- a/src/components/DatePicker/CalendarPicker/index.js +++ b/src/components/DatePicker/CalendarPicker/index.js @@ -1,7 +1,7 @@ import {addMonths, endOfDay, endOfMonth, format, getYear, isSameDay, parseISO, setDate, setYear, startOfDay, startOfMonth, subMonths} from 'date-fns'; import Str from 'expensify-common/lib/str'; import PropTypes from 'prop-types'; -import React from 'react'; +import React, {useEffect, useState} from 'react'; import {View} from 'react-native'; import _ from 'underscore'; import PressableWithFeedback from '@components/Pressable/PressableWithFeedback'; @@ -10,6 +10,8 @@ import Text from '@components/Text'; import withLocalize, {withLocalizePropTypes} from '@components/withLocalize'; import withStyleUtils, {withStyleUtilsPropTypes} from '@components/withStyleUtils'; import withThemeStyles, {withThemeStylesPropTypes} from '@components/withThemeStyles'; +import useStyleUtils from '@hooks/useStyleUtils'; +import useThemeStyles from '@hooks/useThemeStyles'; import compose from '@libs/compose'; import DateUtils from '@libs/DateUtils'; import getButtonState from '@libs/getButtonState'; @@ -43,221 +45,196 @@ const defaultProps = { onSelected: () => {}, }; -class CalendarPicker extends React.PureComponent { - constructor(props) { - super(props); - - if (props.minDate >= props.maxDate) { - throw new Error('Minimum date cannot be greater than the maximum date.'); - } - let currentDateView = typeof props.value === 'string' ? parseISO(props.value) : new Date(props.value); +function CalendarPicker(props) { + const themeStyles = useThemeStyles(); + const StyleUtils = useStyleUtils(); + const [currentDateView, setCurrentDateView] = useState(props.value === 'string' ? parseISO(props.value) : new Date(props.value)); + const [isYearPickerVisible, setIsYearPickerVisible] = useState(false); + + const minYear = getYear(new Date(props.minDate)); + const maxYear = getYear(new Date(props.maxDate)); + + const [years, setYears] = useState( + // eslint-disable-next-line rulesdir/prefer-underscore-method + Array.from({length: maxYear - minYear + 1}, (v, i) => i + minYear).map((value) => ({ + text: value.toString(), + value, + keyForList: value.toString(), + isSelected: value === currentDateView.getFullYear(), + })), + ); + + useEffect(() => { if (props.maxDate < currentDateView) { - currentDateView = props.maxDate; + setCurrentDateView(props.maxDate); } else if (props.minDate > currentDateView) { - currentDateView = props.minDate; + setCurrentDateView(props.minDate); } - - const minYear = getYear(new Date(this.props.minDate)); - const maxYear = getYear(new Date(this.props.maxDate)); - - this.state = { - currentDateView, - isYearPickerVisible: false, - years: _.map( - Array.from({length: maxYear - minYear + 1}, (v, i) => i + minYear), - (value) => ({ - text: value.toString(), - value, - keyForList: value.toString(), - isSelected: value === currentDateView.getFullYear(), - }), - ), - }; - - this.moveToPrevMonth = this.moveToPrevMonth.bind(this); - this.moveToNextMonth = this.moveToNextMonth.bind(this); - this.onDayPressed = this.onDayPressed.bind(this); - this.onYearSelected = this.onYearSelected.bind(this); - } - - onYearSelected(year) { - this.setState((prev) => { - const newCurrentDateView = setYear(new Date(prev.currentDateView), year); - - return { - currentDateView: newCurrentDateView, - isYearPickerVisible: false, - years: _.map(prev.years, (item) => ({ + }, []); + + const onYearSelected = (year) => { + setIsYearPickerVisible(false); + setCurrentDateView((prev) => { + const newCurrentDateView = setYear(new Date(prev), year); + setYears((prevYears) => + // eslint-disable-next-line rulesdir/prefer-underscore-method + prevYears.map((item) => ({ ...item, isSelected: item.value === newCurrentDateView.getFullYear(), })), - }; + ); + return newCurrentDateView; }); - } + }; /** * Calls the onSelected function with the selected date. * @param {Number} day - The day of the month that was selected. */ - onDayPressed(day) { - this.setState( - (prev) => ({ - currentDateView: setDate(new Date(prev.currentDateView), day), - }), - () => this.props.onSelected(format(new Date(this.state.currentDateView), CONST.DATE.FNS_FORMAT_STRING)), - ); - } + const onDayPressed = (day) => { + setCurrentDateView((prev) => { + const newCurrentDateView = setDate(new Date(prev), day); + props.onSelected(format(new Date(newCurrentDateView), CONST.DATE.FNS_FORMAT_STRING)); + return newCurrentDateView; + }); + }; /** * Handles the user pressing the previous month arrow of the calendar picker. */ - moveToPrevMonth() { - this.setState((prev) => ({currentDateView: subMonths(new Date(prev.currentDateView), 1)})); - } + const moveToPrevMonth = () => { + setCurrentDateView((prev) => subMonths(new Date(prev), 1)); + }; /** * Handles the user pressing the next month arrow of the calendar picker. */ - moveToNextMonth() { - this.setState((prev) => ({currentDateView: addMonths(new Date(prev.currentDateView), 1)})); - } - - render() { - const monthNames = _.map(DateUtils.getMonthNames(this.props.preferredLocale), Str.recapitalize); - const daysOfWeek = _.map(DateUtils.getDaysOfWeek(this.props.preferredLocale), (day) => day.toUpperCase()); - const currentMonthView = this.state.currentDateView.getMonth(); - const currentYearView = this.state.currentDateView.getFullYear(); - const calendarDaysMatrix = generateMonthMatrix(currentYearView, currentMonthView); - const hasAvailableDatesNextMonth = startOfDay(new Date(this.props.maxDate)) > endOfMonth(new Date(this.state.currentDateView)); - const hasAvailableDatesPrevMonth = endOfDay(new Date(this.props.minDate)) < startOfMonth(new Date(this.state.currentDateView)); - - return ( - - { + setCurrentDateView((prev) => addMonths(new Date(prev), 1)); + }; + + const monthNames = _.map(DateUtils.getMonthNames(props.preferredLocale), Str.recapitalize); + const daysOfWeek = _.map(DateUtils.getDaysOfWeek(props.preferredLocale), (day) => day.toUpperCase()); + const currentMonthView = currentDateView.getMonth(); + const currentYearView = currentDateView.getFullYear(); + const calendarDaysMatrix = generateMonthMatrix(currentYearView, currentMonthView); + const hasAvailableDatesNextMonth = startOfDay(new Date(props.maxDate)) > endOfMonth(new Date(currentDateView)); + const hasAvailableDatesPrevMonth = endOfDay(new Date(props.minDate)) < startOfMonth(new Date(currentDateView)); + + return ( + + + setIsYearPickerVisible(true)} + style={[themeStyles.alignItemsCenter, themeStyles.flexRow, themeStyles.flex1, themeStyles.justifyContentStart]} + wrapperStyle={[themeStyles.alignItemsCenter]} + hoverDimmingValue={1} + testID="currentYearButton" + accessibilityLabel={props.translate('common.currentYear')} > + + {currentYearView} + + + + + + {monthNames[currentMonthView]} + this.setState({isYearPickerVisible: true})} - style={[this.props.themeStyles.alignItemsCenter, this.props.themeStyles.flexRow, this.props.themeStyles.flex1, this.props.themeStyles.justifyContentStart]} - wrapperStyle={[this.props.themeStyles.alignItemsCenter]} + shouldUseAutoHitSlop={false} + testID="prev-month-arrow" + disabled={!hasAvailableDatesPrevMonth} + onPress={moveToPrevMonth} hoverDimmingValue={1} - testID="currentYearButton" - accessibilityLabel={this.props.translate('common.currentYear')} + accessibilityLabel={props.translate('common.previous')} > - - {currentYearView} - - - - - - {monthNames[currentMonthView]} - - - - - - - - - - - {_.map(daysOfWeek, (dayOfWeek) => ( - - {dayOfWeek[0]} - - ))} + direction={CONST.DIRECTION.LEFT} + /> + + + + - {_.map(calendarDaysMatrix, (week) => ( + + + {_.map(daysOfWeek, (dayOfWeek) => ( - {_.map(week, (day, index) => { - const currentDate = new Date(currentYearView, currentMonthView, day); - const isBeforeMinDate = currentDate < startOfDay(new Date(this.props.minDate)); - const isAfterMaxDate = currentDate > startOfDay(new Date(this.props.maxDate)); - const isDisabled = !day || isBeforeMinDate || isAfterMaxDate; - const isSelected = !!day && isSameDay(parseISO(this.props.value), new Date(currentYearView, currentMonthView, day)); - return ( - this.onDayPressed(day)} - style={this.props.themeStyles.calendarDayRoot} - accessibilityLabel={day ? day.toString() : undefined} - tabIndex={day ? 0 : -1} - accessible={Boolean(day)} - dataSet={{[CONST.SELECTION_SCRAPER_HIDDEN_ELEMENT]: true}} - > - {({hovered, pressed}) => ( - - {day} - - )} - - ); - })} + {dayOfWeek[0]} ))} - this.setState({isYearPickerVisible: false})} - /> - ); - } + {_.map(calendarDaysMatrix, (week) => ( + + {_.map(week, (day, index) => { + const currentDate = new Date(currentYearView, currentMonthView, day); + const isBeforeMinDate = currentDate < startOfDay(new Date(props.minDate)); + const isAfterMaxDate = currentDate > startOfDay(new Date(props.maxDate)); + const isDisabled = !day || isBeforeMinDate || isAfterMaxDate; + const isSelected = !!day && isSameDay(parseISO(props.value), new Date(currentYearView, currentMonthView, day)); + return ( + onDayPressed(day)} + style={themeStyles.calendarDayRoot} + accessibilityLabel={day ? day.toString() : undefined} + tabIndex={day ? 0 : -1} + accessible={Boolean(day)} + dataSet={{[CONST.SELECTION_SCRAPER_HIDDEN_ELEMENT]: true}} + > + {({hovered, pressed}) => ( + + {day} + + )} + + ); + })} + + ))} + setIsYearPickerVisible(false)} + /> + + ); } CalendarPicker.propTypes = propTypes; From 311e51f4c5026824476435f0f3cf810d3ff8471b Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Tue, 9 Jan 2024 11:36:59 +0100 Subject: [PATCH 103/701] Fix video stop playing back after navigating to another report --- .../VideoPlayerContexts/PlaybackContext.js | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index a71a6711efc3..754022132c31 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -1,3 +1,4 @@ +import _ from 'lodash'; import PropTypes from 'prop-types'; import React, {useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react'; import useCurrentReportID from '@hooks/useCurrentReportID'; @@ -12,11 +13,27 @@ function PlaybackContextProvider({children}) { const {currentReportID} = useCurrentReportID(); const pauseVideo = useCallback(() => { - currentVideoPlayerRef.current.setStatusAsync({shouldPlay: false}); + if (currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.setStatusAsync) { + currentVideoPlayerRef.current.setStatusAsync({shouldPlay: false}); + } + }, [currentVideoPlayerRef]); + + const stopVideo = useCallback(() => { + if (currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.stopAsync) { + currentVideoPlayerRef.current.stopAsync({shouldPlay: false}); + } }, [currentVideoPlayerRef]); const playVideo = useCallback(() => { - currentVideoPlayerRef.current.setStatusAsync({shouldPlay: true}); + if (currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.setStatusAsync) { + currentVideoPlayerRef.current.setStopVideo({shouldPlay: true}); + } + }, [currentVideoPlayerRef]); + + const unloadVideo = useCallback(() => { + if (currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.unloadAsync) { + currentVideoPlayerRef.current.unloadAsync(); + } }, [currentVideoPlayerRef]); const updateCurrentlyPlayingURL = useCallback( @@ -40,11 +57,13 @@ function PlaybackContextProvider({children}) { ); const resetVideoPlayerData = useCallback(() => { + stopVideo(); + unloadVideo(); setCurrentlyPlayingURL(null); setSharedElement(null); setOriginalParent(null); currentVideoPlayerRef.current = null; - }, []); + }, [stopVideo, unloadVideo]); useEffect(() => { if (!currentReportID) { From 84ecc82a1df5971ea855cdb8bd8f7924e6e6e9a7 Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Tue, 9 Jan 2024 12:58:14 +0100 Subject: [PATCH 104/701] Migrate CalendarPicker to TS --- .../CalendarPicker/YearPickerModal.tsx | 35 +----- .../CalendarPicker/generateMonthMatrix.ts | 4 +- .../CalendarPicker/{index.js => index.tsx} | 116 +++++++++--------- .../DatePicker/CalendarPicker/types.ts | 31 +++++ 4 files changed, 91 insertions(+), 95 deletions(-) rename src/components/DatePicker/CalendarPicker/{index.js => index.tsx} (70%) create mode 100644 src/components/DatePicker/CalendarPicker/types.ts diff --git a/src/components/DatePicker/CalendarPicker/YearPickerModal.tsx b/src/components/DatePicker/CalendarPicker/YearPickerModal.tsx index 99ca743333c0..521beab3f8dd 100644 --- a/src/components/DatePicker/CalendarPicker/YearPickerModal.tsx +++ b/src/components/DatePicker/CalendarPicker/YearPickerModal.tsx @@ -6,38 +6,7 @@ import SelectionList from '@components/SelectionList'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import CONST from '@src/CONST'; - -type RadioItem = { - /** Text to display */ - text: string; - - /** Alternate text to display */ - alternateText?: string; - - /** Key used internally by React */ - keyForList: string; - - /** Whether this option is selected */ - isSelected?: boolean; - - /** Element to show on the right side of the item */ - rightElement?: undefined; - - /** Whether this option is disabled for selection */ - isDisabled?: undefined; - - invitedSecondaryLogin?: undefined; - - /** Errors that this user may contain */ - errors?: undefined; - - /** The type of action that's pending */ - pendingAction?: undefined; - - sectionIndex: number; // smb throw this out - - index: number; // mb throw this out -}; +import type RadioItem from './types'; type YearPickerModalProps = { /** Whether the modal is visible */ @@ -103,7 +72,7 @@ function YearPickerModal({isVisible, years, currentYear = new Date().getFullYear inputMode={CONST.INPUT_MODE.NUMERIC} headerMessage={headerMessage} sections={sections} - onSelectRow={(option) => onYearChange?.(option.value)} + onSelectRow={(option: RadioItem) => onYearChange?.(option.value)} initiallyFocusedOptionKey={currentYear.toString()} showScrollIndicator shouldStopPropagation diff --git a/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts b/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts index 0109fa27ce0a..94d6dbc7ad3a 100644 --- a/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts +++ b/src/components/DatePicker/CalendarPicker/generateMonthMatrix.ts @@ -51,14 +51,14 @@ export default function generateMonthMatrix(year: number, month: number) { // Add null values for days after the last day of the month if (currentWeek.length > 0) { for (let i = currentWeek.length; i < 7; i++) { - currentWeek.push(null); + currentWeek.push(undefined); } matrix.push(currentWeek); } // Add null values for days before the first day of the month for (let i = matrix[0].length; i < 7; i++) { - matrix[0].unshift(null); + matrix[0].unshift(undefined); } return matrix; diff --git a/src/components/DatePicker/CalendarPicker/index.js b/src/components/DatePicker/CalendarPicker/index.tsx similarity index 70% rename from src/components/DatePicker/CalendarPicker/index.js rename to src/components/DatePicker/CalendarPicker/index.tsx index 7c48d540fc13..409bb17510d3 100644 --- a/src/components/DatePicker/CalendarPicker/index.js +++ b/src/components/DatePicker/CalendarPicker/index.tsx @@ -1,61 +1,52 @@ import {addMonths, endOfDay, endOfMonth, format, getYear, isSameDay, parseISO, setDate, setYear, startOfDay, startOfMonth, subMonths} from 'date-fns'; import Str from 'expensify-common/lib/str'; -import PropTypes from 'prop-types'; import React, {useEffect, useState} from 'react'; import {View} from 'react-native'; -import _ from 'underscore'; import PressableWithFeedback from '@components/Pressable/PressableWithFeedback'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; import Text from '@components/Text'; -import withLocalize, {withLocalizePropTypes} from '@components/withLocalize'; -import withStyleUtils, {withStyleUtilsPropTypes} from '@components/withStyleUtils'; -import withThemeStyles, {withThemeStylesPropTypes} from '@components/withThemeStyles'; +import useLocalize from '@hooks/useLocalize'; import useStyleUtils from '@hooks/useStyleUtils'; import useThemeStyles from '@hooks/useThemeStyles'; -import compose from '@libs/compose'; import DateUtils from '@libs/DateUtils'; import getButtonState from '@libs/getButtonState'; import CONST from '@src/CONST'; import ArrowIcon from './ArrowIcon'; import generateMonthMatrix from './generateMonthMatrix'; +import type RadioItem from './types'; import YearPickerModal from './YearPickerModal'; -const propTypes = { +type CalendarPickerProps = { /** An initial value of date string */ - value: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(Date)]), + value?: Date | string; /** A minimum date (oldest) allowed to select */ - minDate: PropTypes.instanceOf(Date), + minDate?: Date; /** A maximum date (earliest) allowed to select */ - maxDate: PropTypes.instanceOf(Date), + maxDate?: Date; /** A function called when the date is selected */ - onSelected: PropTypes.func, - - ...withLocalizePropTypes, - ...withThemeStylesPropTypes, - ...withStyleUtilsPropTypes, -}; - -const defaultProps = { - value: new Date(), - minDate: setYear(new Date(), CONST.CALENDAR_PICKER.MIN_YEAR), - maxDate: setYear(new Date(), CONST.CALENDAR_PICKER.MAX_YEAR), - onSelected: () => {}, + onSelected?: (selectedDate: Date | string) => void; }; -function CalendarPicker(props) { +function CalendarPicker({ + value = new Date(), + minDate = setYear(new Date(), CONST.CALENDAR_PICKER.MIN_YEAR), + maxDate = setYear(new Date(), CONST.CALENDAR_PICKER.MAX_YEAR), + onSelected, +}: CalendarPickerProps) { const themeStyles = useThemeStyles(); const StyleUtils = useStyleUtils(); - const [currentDateView, setCurrentDateView] = useState(props.value === 'string' ? parseISO(props.value) : new Date(props.value)); + const {preferredLocale, translate} = useLocalize(); + const [currentDateView, setCurrentDateView] = useState(typeof value === 'string' ? parseISO(value) : new Date(value)); const [isYearPickerVisible, setIsYearPickerVisible] = useState(false); - const minYear = getYear(new Date(props.minDate)); - const maxYear = getYear(new Date(props.maxDate)); + const minYear = getYear(new Date(minDate)); + const maxYear = getYear(new Date(maxDate)); - const [years, setYears] = useState( - // eslint-disable-next-line rulesdir/prefer-underscore-method + const [years, setYears] = useState( + // eslint-disable-next-line rulesdir/prefer-underscore-method, @typescript-eslint/no-shadow Array.from({length: maxYear - minYear + 1}, (v, i) => i + minYear).map((value) => ({ text: value.toString(), value, @@ -65,14 +56,14 @@ function CalendarPicker(props) { ); useEffect(() => { - if (props.maxDate < currentDateView) { - setCurrentDateView(props.maxDate); - } else if (props.minDate > currentDateView) { - setCurrentDateView(props.minDate); + if (maxDate < currentDateView) { + setCurrentDateView(maxDate); + } else if (minDate > currentDateView) { + setCurrentDateView(minDate); } }, []); - const onYearSelected = (year) => { + const onYearSelected = (year: number) => { setIsYearPickerVisible(false); setCurrentDateView((prev) => { const newCurrentDateView = setYear(new Date(prev), year); @@ -91,10 +82,10 @@ function CalendarPicker(props) { * Calls the onSelected function with the selected date. * @param {Number} day - The day of the month that was selected. */ - const onDayPressed = (day) => { + const onDayPressed = (day: number) => { setCurrentDateView((prev) => { const newCurrentDateView = setDate(new Date(prev), day); - props.onSelected(format(new Date(newCurrentDateView), CONST.DATE.FNS_FORMAT_STRING)); + onSelected?.(format(new Date(newCurrentDateView), CONST.DATE.FNS_FORMAT_STRING)); return newCurrentDateView; }); }; @@ -113,13 +104,13 @@ function CalendarPicker(props) { setCurrentDateView((prev) => addMonths(new Date(prev), 1)); }; - const monthNames = _.map(DateUtils.getMonthNames(props.preferredLocale), Str.recapitalize); - const daysOfWeek = _.map(DateUtils.getDaysOfWeek(props.preferredLocale), (day) => day.toUpperCase()); + const monthNames = DateUtils.getMonthNames(preferredLocale).map((month) => Str.recapitalize(month)); + const daysOfWeek = DateUtils.getDaysOfWeek(preferredLocale).map((day) => day.toUpperCase()); const currentMonthView = currentDateView.getMonth(); const currentYearView = currentDateView.getFullYear(); const calendarDaysMatrix = generateMonthMatrix(currentYearView, currentMonthView); - const hasAvailableDatesNextMonth = startOfDay(new Date(props.maxDate)) > endOfMonth(new Date(currentDateView)); - const hasAvailableDatesPrevMonth = endOfDay(new Date(props.minDate)) < startOfMonth(new Date(currentDateView)); + const hasAvailableDatesNextMonth = startOfDay(new Date(maxDate)) > endOfMonth(new Date(currentDateView)); + const hasAvailableDatesPrevMonth = endOfDay(new Date(minDate)) < startOfMonth(new Date(currentDateView)); return ( @@ -133,12 +124,12 @@ function CalendarPicker(props) { wrapperStyle={[themeStyles.alignItemsCenter]} hoverDimmingValue={1} testID="currentYearButton" - accessibilityLabel={props.translate('common.currentYear')} + accessibilityLabel={translate('common.currentYear')} > {currentYearView} @@ -148,7 +139,7 @@ function CalendarPicker(props) { {monthNames[currentMonthView]} @@ -158,7 +149,7 @@ function CalendarPicker(props) { disabled={!hasAvailableDatesPrevMonth} onPress={moveToPrevMonth} hoverDimmingValue={1} - accessibilityLabel={props.translate('common.previous')} + accessibilityLabel={translate('common.previous')} > - {_.map(daysOfWeek, (dayOfWeek) => ( + {daysOfWeek.map((dayOfWeek) => ( ))} - {_.map(calendarDaysMatrix, (week) => ( + {calendarDaysMatrix.map((week) => ( - {_.map(week, (day, index) => { + {week.map((day, index) => { const currentDate = new Date(currentYearView, currentMonthView, day); - const isBeforeMinDate = currentDate < startOfDay(new Date(props.minDate)); - const isAfterMaxDate = currentDate > startOfDay(new Date(props.maxDate)); + const isBeforeMinDate = currentDate < startOfDay(new Date(minDate)); + const isAfterMaxDate = currentDate > startOfDay(new Date(maxDate)); const isDisabled = !day || isBeforeMinDate || isAfterMaxDate; - const isSelected = !!day && isSameDay(parseISO(props.value), new Date(currentYearView, currentMonthView, day)); + const isSelected = !!day && isSameDay(typeof value === 'string' ? parseISO(value) : new Date(value), new Date(currentYearView, currentMonthView, day)); + const handleOnPress = () => { + if (!day) { + return; + } + + onDayPressed(day); + }; + const key = `${index}_day-${day}`; return ( onDayPressed(day)} + onPress={handleOnPress} style={themeStyles.calendarDayRoot} - accessibilityLabel={day ? day.toString() : undefined} + accessibilityLabel={day?.toString() ?? ''} tabIndex={day ? 0 : -1} - accessible={Boolean(day)} + accessible dataSet={{[CONST.SELECTION_SCRAPER_HIDDEN_ELEMENT]: true}} > {({hovered, pressed}) => ( @@ -218,7 +217,7 @@ function CalendarPicker(props) { !isDisabled ? StyleUtils.getButtonBackgroundColorStyle(getButtonState(hovered, pressed)) : {}, ]} > - {day} + {day} )} @@ -237,7 +236,4 @@ function CalendarPicker(props) { ); } -CalendarPicker.propTypes = propTypes; -CalendarPicker.defaultProps = defaultProps; - -export default compose(withLocalize, withThemeStyles, withStyleUtils)(CalendarPicker); +export default CalendarPicker; diff --git a/src/components/DatePicker/CalendarPicker/types.ts b/src/components/DatePicker/CalendarPicker/types.ts new file mode 100644 index 000000000000..fafd040cb108 --- /dev/null +++ b/src/components/DatePicker/CalendarPicker/types.ts @@ -0,0 +1,31 @@ +type RadioItem = { + /** Text to display */ + text: string; + + /** Alternate text to display */ + alternateText?: string; + + /** Key used internally by React */ + keyForList: string; + + /** Whether this option is selected */ + isSelected?: boolean; + + /** Element to show on the right side of the item */ + rightElement?: undefined; + + /** Whether this option is disabled for selection */ + isDisabled?: undefined; + + invitedSecondaryLogin?: undefined; + + /** Errors that this user may contain */ + errors?: undefined; + + /** The type of action that's pending */ + pendingAction?: undefined; + + value: number; +}; + +export default RadioItem; From d733aa2b8cf8eef93921e0e85f4fc5ecd4cc3460 Mon Sep 17 00:00:00 2001 From: Abdelrahman Khattab Date: Wed, 10 Jan 2024 00:34:28 +0200 Subject: [PATCH 105/701] fix selection list focus --- .../SelectionList/BaseSelectionList.js | 65 +++++++++++++++++-- 1 file changed, 59 insertions(+), 6 deletions(-) diff --git a/src/components/SelectionList/BaseSelectionList.js b/src/components/SelectionList/BaseSelectionList.js index 88c4018f823c..3ee042a0b768 100644 --- a/src/components/SelectionList/BaseSelectionList.js +++ b/src/components/SelectionList/BaseSelectionList.js @@ -17,6 +17,7 @@ import withKeyboardState, {keyboardStatePropTypes} from '@components/withKeyboar import useActiveElement from '@hooks/useActiveElement'; import useKeyboardShortcut from '@hooks/useKeyboardShortcut'; import useLocalize from '@hooks/useLocalize'; +import usePrevious from '@hooks/usePrevious'; import useStyleUtils from '@hooks/useStyleUtils'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -362,18 +363,37 @@ function BaseSelectionList({ }, [shouldShowTextInput]), ); + const prevTextInputValue = usePrevious(textInputValue); useEffect(() => { // do not change focus on the first render, as it should focus on the selected item - if (isInitialSectionListRender) { + if (isInitialSectionListRender || prevTextInputValue === textInputValue) { return; } - // set the focus on the first item when the sections list is changed if (sections.length > 0) { - updateAndScrollToFocusedIndex(0); + let newSelectedIndex; + + if (textInputValue === '') { + // if the textInputValue is empty then focus is removed + newSelectedIndex = -1; + } else { + // if multiple selection then focus on the first non-selected item + // else focus on the first item + newSelectedIndex = canSelectMultiple ? flattenedSections.selectedOptions.length + flattenedSections.disabledOptionsIndexes.length : 0; + } + + updateAndScrollToFocusedIndex(newSelectedIndex); } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [sections]); + }, [ + canSelectMultiple, + flattenedSections.disabledOptionsIndexes.length, + flattenedSections.selectedOptions.length, + isInitialSectionListRender, + prevTextInputValue, + sections, + textInputValue, + updateAndScrollToFocusedIndex, + ]); /** Selects row when pressing Enter */ useKeyboardShortcut(CONST.KEYBOARD_SHORTCUTS.ENTER, selectFocusedOption, { @@ -390,6 +410,39 @@ function BaseSelectionList({ isActive: !disableKeyboardShortcuts && Boolean(onConfirm) && isFocused, }); + function sortSectionItems(sectionsList) { + // If multiple selection is not allowed, return the original list + if (!canSelectMultiple) { + return sectionsList; + } + + return _.map(sectionsList, (section) => { + // Classify each item in the section + const disabledItems = []; + const selectedItems = []; + const unselectedItems = []; + + section.data.forEach((item) => { + if (item.isDisabled) { + disabledItems.push(item); + } else if (item.isSelected) { + selectedItems.push(item); + } else { + unselectedItems.push(item); + } + }); + + // Combine items in the order: disabled, selected, unselected + const sortedData = [...disabledItems, ...selectedItems, ...unselectedItems]; + + // Return the section with updated data + return { + ...section, + data: sortedData, + }; + }); + } + return ( Date: Wed, 10 Jan 2024 10:13:35 +0100 Subject: [PATCH 106/701] Migrate DatePicker to TS --- .../DatePicker/CalendarPicker/index.tsx | 2 +- .../DatePicker/{index.js => index.tsx} | 91 ++++++++----------- 2 files changed, 40 insertions(+), 53 deletions(-) rename src/components/DatePicker/{index.js => index.tsx} (52%) diff --git a/src/components/DatePicker/CalendarPicker/index.tsx b/src/components/DatePicker/CalendarPicker/index.tsx index 409bb17510d3..82eb01bb41e9 100644 --- a/src/components/DatePicker/CalendarPicker/index.tsx +++ b/src/components/DatePicker/CalendarPicker/index.tsx @@ -27,7 +27,7 @@ type CalendarPickerProps = { maxDate?: Date; /** A function called when the date is selected */ - onSelected?: (selectedDate: Date | string) => void; + onSelected?: (selectedDate: string) => void; }; function CalendarPicker({ diff --git a/src/components/DatePicker/index.js b/src/components/DatePicker/index.tsx similarity index 52% rename from src/components/DatePicker/index.js rename to src/components/DatePicker/index.tsx index a2ca930690ac..45577d8c533b 100644 --- a/src/components/DatePicker/index.js +++ b/src/components/DatePicker/index.tsx @@ -1,69 +1,68 @@ import {setYear} from 'date-fns'; -import _ from 'lodash'; -import PropTypes from 'prop-types'; -import React, {forwardRef, useState} from 'react'; +import React, {useState} from 'react'; import {View} from 'react-native'; import * as Expensicons from '@components/Icon/Expensicons'; -import refPropTypes from '@components/refPropTypes'; import TextInput from '@components/TextInput'; -import {propTypes as baseTextInputPropTypes, defaultProps as defaultBaseTextInputPropTypes} from '@components/TextInput/BaseTextInput/baseTextInputPropTypes'; +import type {BaseTextInputProps, BaseTextInputRef} from '@components/TextInput/BaseTextInput/types'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; +import useWindowDimensions from '@hooks/useWindowDimensions'; import CONST from '@src/CONST'; import CalendarPicker from './CalendarPicker'; -const propTypes = { - /** React ref being forwarded to the DatePicker input */ - forwardedRef: refPropTypes, - +type DatePickerProps = { /** * The datepicker supports any value that `new Date()` can parse. * `onInputChange` would always be called with a Date (or null) */ - value: PropTypes.string, + value?: string; /** * The datepicker supports any defaultValue that `new Date()` can parse. * `onInputChange` would always be called with a Date (or null) */ - defaultValue: PropTypes.string, + defaultValue?: string; - inputID: PropTypes.string.isRequired, + inputID: string; /** A minimum date of calendar to select */ - minDate: PropTypes.objectOf(Date), + minDate?: Date; /** A maximum date of calendar to select */ - maxDate: PropTypes.objectOf(Date), + maxDate?: Date; /** A function that is passed by FormWrapper */ - onInputChange: PropTypes.func.isRequired, + onInputChange: (value: Date) => void; /** A function that is passed by FormWrapper */ - onTouched: PropTypes.func.isRequired, - - ...baseTextInputPropTypes, -}; - -const datePickerDefaultProps = { - ...defaultBaseTextInputPropTypes, - minDate: setYear(new Date(), CONST.CALENDAR_PICKER.MIN_YEAR), - maxDate: setYear(new Date(), CONST.CALENDAR_PICKER.MAX_YEAR), - value: undefined, -}; - -function DatePicker({forwardedRef, containerStyles, defaultValue, disabled, errorText, inputID, isSmallScreenWidth, label, maxDate, minDate, onInputChange, onTouched, placeholder, value}) { + onTouched: () => void; +} & BaseTextInputProps; + +function DatePicker( + { + containerStyles, + defaultValue, + disabled, + errorText, + inputID, + label, + maxDate = setYear(new Date(), CONST.CALENDAR_PICKER.MAX_YEAR), + minDate = setYear(new Date(), CONST.CALENDAR_PICKER.MIN_YEAR), + onInputChange, + onTouched, + placeholder, + value, + }: DatePickerProps, + ref: BaseTextInputRef, +) { const styles = useThemeStyles(); const {translate} = useLocalize(); - const [selectedDate, setSelectedDate] = useState(value || defaultValue || undefined); + const [selectedDate, setSelectedDate] = useState(value ?? defaultValue ?? undefined); + const {isSmallScreenWidth} = useWindowDimensions(); - const onSelected = (newValue) => { - if (_.isFunction(onTouched)) { - onTouched(); - } - if (_.isFunction(onInputChange)) { - onInputChange(newValue); - } + const onSelected = (newValue: string) => { + onTouched?.(); + onInputChange?.(newValue); setSelectedDate(newValue); }; @@ -71,15 +70,15 @@ function DatePicker({forwardedRef, containerStyles, defaultValue, disabled, erro ( - -)); - -DatePickerWithRef.displayName = 'DatePickerWithRef'; - -export default DatePickerWithRef; +export default React.forwardRef(DatePicker); From 9593fd9ab7a4afaa567bf318f4e2991a13835796 Mon Sep 17 00:00:00 2001 From: Wojciech Boman Date: Wed, 10 Jan 2024 10:23:36 +0100 Subject: [PATCH 107/701] Add ts-expect-error to YearPickerModal --- src/components/DatePicker/CalendarPicker/YearPickerModal.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/DatePicker/CalendarPicker/YearPickerModal.tsx b/src/components/DatePicker/CalendarPicker/YearPickerModal.tsx index 521beab3f8dd..cfea96f4b433 100644 --- a/src/components/DatePicker/CalendarPicker/YearPickerModal.tsx +++ b/src/components/DatePicker/CalendarPicker/YearPickerModal.tsx @@ -64,6 +64,7 @@ function YearPickerModal({isVisible, years, currentYear = new Date().getFullYear onBackButtonPress={onClose} /> Date: Thu, 11 Jan 2024 06:02:18 +0100 Subject: [PATCH 108/701] Migrate DistanceRequest/index.js component to TypeScript --- .../BlockingViews/FullPageNotFoundView.tsx | 4 +- .../DistanceRequest/{index.js => index.tsx} | 94 ++++++++----------- src/components/DraggableList/types.ts | 2 +- 3 files changed, 44 insertions(+), 56 deletions(-) rename src/components/DistanceRequest/{index.js => index.tsx} (82%) diff --git a/src/components/BlockingViews/FullPageNotFoundView.tsx b/src/components/BlockingViews/FullPageNotFoundView.tsx index 5993e60861f5..807029addf5e 100644 --- a/src/components/BlockingViews/FullPageNotFoundView.tsx +++ b/src/components/BlockingViews/FullPageNotFoundView.tsx @@ -33,10 +33,10 @@ type FullPageNotFoundViewProps = { linkKey?: TranslationPaths; /** Method to trigger when pressing the back button of the header */ - onBackButtonPress: () => void; + onBackButtonPress?: () => void; /** Function to call when pressing the navigation link */ - onLinkPress: () => void; + onLinkPress?: () => void; }; // eslint-disable-next-line rulesdir/no-negated-variables diff --git a/src/components/DistanceRequest/index.js b/src/components/DistanceRequest/index.tsx similarity index 82% rename from src/components/DistanceRequest/index.js rename to src/components/DistanceRequest/index.tsx index 72be7c2b8873..ff5ff93be3e1 100644 --- a/src/components/DistanceRequest/index.js +++ b/src/components/DistanceRequest/index.tsx @@ -1,8 +1,7 @@ import lodashGet from 'lodash/get'; -import PropTypes from 'prop-types'; import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; -import {View} from 'react-native'; -import {withOnyx} from 'react-native-onyx'; +import {View, ScrollView} from 'react-native'; +import {OnyxEntry, withOnyx} from 'react-native-onyx'; import _ from 'underscore'; import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView'; import Button from '@components/Button'; @@ -10,7 +9,6 @@ import DotIndicatorMessage from '@components/DotIndicatorMessage'; import DraggableList from '@components/DraggableList'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; -import transactionPropTypes from '@components/transactionPropTypes'; import useLocalize from '@hooks/useLocalize'; import useNetwork from '@hooks/useNetwork'; import usePrevious from '@hooks/usePrevious'; @@ -19,62 +17,55 @@ import * as ErrorUtils from '@libs/ErrorUtils'; import * as IOUUtils from '@libs/IOUUtils'; import Navigation from '@libs/Navigation/Navigation'; import * as TransactionUtils from '@libs/TransactionUtils'; -import reportPropTypes from '@pages/reportPropTypes'; import variables from '@styles/variables'; import * as MapboxToken from '@userActions/MapboxToken'; -import * as Transaction from '@userActions/Transaction'; +import * as TransactionUserActions from '@userActions/Transaction'; import * as TransactionEdit from '@userActions/TransactionEdit'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import DistanceRequestFooter from './DistanceRequestFooter'; import DistanceRequestRenderItem from './DistanceRequestRenderItem'; +import type { Report, Transaction } from '@src/types/onyx'; +import type { RouteProp } from '@react-navigation/native'; +import type { Waypoint, WaypointCollection } from '@src/types/onyx/Transaction'; +import { DraggableListData } from '@components/DraggableList/types'; -const propTypes = { - /** The transactionID of this request */ - transactionID: PropTypes.string, +type DistanceRequestOnyxProps = { + transaction: OnyxEntry; +}; + +type DistanceRequestProps = DistanceRequestOnyxProps & { + /** The TransactionID of this request */ + transactionID: string; /** The report to which the distance request is associated */ - report: reportPropTypes, + report: Report; /** Are we editing an existing distance request, or creating a new one? */ - isEditingRequest: PropTypes.bool, + isEditingRequest?: boolean; /** Are we editing the distance while creating a new distance request */ - isEditingNewRequest: PropTypes.bool, + isEditingNewRequest?: boolean; /** Called on submit of this page */ - onSubmit: PropTypes.func.isRequired, - - /* Onyx Props */ - transaction: transactionPropTypes, + onSubmit: (waypoints?: WaypointCollection) => void; /** React Navigation route */ - route: PropTypes.shape({ + route: RouteProp<{ /** Params from the route */ - params: PropTypes.shape({ - /** The type of IOU report, i.e. bill, request, send */ - iouType: PropTypes.string, - - /** The report ID of the IOU */ - reportID: PropTypes.string, - }), - }).isRequired, -}; - -const defaultProps = { - transactionID: '', - report: {}, - isEditingRequest: false, - isEditingNewRequest: false, - transaction: {}, + params: { + /** The type of IOU report, i.e. bill, request, send */ + iouType: string; + /** The report ID of the IOU */ + reportID: string}}>; }; -function DistanceRequest({transactionID, report, transaction, route, isEditingRequest, isEditingNewRequest, onSubmit}) { +function DistanceRequest({transactionID = '', report, transaction, route, isEditingRequest = false, isEditingNewRequest = false, onSubmit}: DistanceRequestProps) { const styles = useThemeStyles(); const {isOffline} = useNetwork(); const {translate} = useLocalize(); - const [optimisticWaypoints, setOptimisticWaypoints] = useState(null); + const [optimisticWaypoints, setOptimisticWaypoints] = useState(); const [hasError, setHasError] = useState(false); const reportID = lodashGet(report, 'reportID', ''); const waypoints = useMemo(() => optimisticWaypoints || lodashGet(transaction, 'comment.waypoints', {waypoint0: {}, waypoint1: {}}), [optimisticWaypoints, transaction]); @@ -83,12 +74,12 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe const previousWaypoints = usePrevious(waypoints); const numberOfWaypoints = _.size(waypoints); const numberOfPreviousWaypoints = _.size(previousWaypoints); - const scrollViewRef = useRef(null); + const scrollViewRef = useRef(null); const isLoadingRoute = lodashGet(transaction, 'comment.isLoading', false); const isLoading = lodashGet(transaction, 'isLoading', false); const hasRouteError = !!lodashGet(transaction, 'errorFields.route'); - const hasRoute = TransactionUtils.hasRoute(transaction); + const hasRoute = TransactionUtils.hasRoute(transaction as Transaction); const validatedWaypoints = TransactionUtils.getValidWaypoints(waypoints); const previousValidatedWaypoints = usePrevious(validatedWaypoints); const haveValidatedWaypointsChanged = !_.isEqual(previousValidatedWaypoints, validatedWaypoints); @@ -119,7 +110,7 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe if (transactionWasSaved.current) { return; } - TransactionEdit.restoreOriginalTransactionFromBackup(transaction.transactionID); + TransactionEdit.restoreOriginalTransactionFromBackup(transaction?.transactionID ?? ''); }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); @@ -131,7 +122,7 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe } // Create the initial start and stop waypoints - Transaction.createInitialWaypoints(transactionID); + TransactionUserActions.createInitialWaypoints(transactionID); return () => { // Whenever we reset the transaction, we need to set errors as empty/false. setHasError(false); @@ -143,14 +134,14 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe return; } - Transaction.getRoute(transactionID, validatedWaypoints); + TransactionUserActions.getRoute(transactionID, validatedWaypoints); }, [shouldFetchRoute, transactionID, validatedWaypoints, isOffline]); useEffect(() => { if (numberOfWaypoints <= numberOfPreviousWaypoints) { return; } - scrollViewRef.current.scrollToEnd({animated: true}); + scrollViewRef.current?.scrollToEnd({animated: true}); }, [numberOfPreviousWaypoints, numberOfWaypoints]); useEffect(() => { @@ -167,38 +158,38 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe /** * Takes the user to the page for editing a specific waypoint - * @param {Number} index of the waypoint to edit */ - const navigateToWaypointEditPage = (index) => { - Navigation.navigate(isEditingRequest ? ROUTES.MONEY_REQUEST_EDIT_WAYPOINT.getRoute(report.reportID, transactionID, index) : ROUTES.MONEY_REQUEST_WAYPOINT.getRoute('request', index)); + const navigateToWaypointEditPage = (index: number) => { + Navigation.navigate(isEditingRequest ? ROUTES.MONEY_REQUEST_EDIT_WAYPOINT.getRoute(Number(report.reportID), transactionID, index) : ROUTES.MONEY_REQUEST_WAYPOINT.getRoute('request', index)); }; const getError = () => { // Get route error if available else show the invalid number of waypoints error. if (hasRouteError) { - return ErrorUtils.getLatestErrorField(transaction, 'route'); + return ErrorUtils.getLatestErrorField(transaction as Transaction, 'route'); } if (_.size(validatedWaypoints) < 2) { return {0: translate('iou.error.atLeastTwoDifferentWaypoints')}; } + return {}; }; const updateWaypoints = useCallback( - ({data}) => { + ({data}: DraggableListData) => { if (_.isEqual(waypointsList, data)) { return; } - const newWaypoints = {}; + const newWaypoints: WaypointCollection = {}; _.each(data, (waypoint, index) => { newWaypoints[`waypoint${index}`] = lodashGet(waypoints, waypoint, {}); }); setOptimisticWaypoints(newWaypoints); // eslint-disable-next-line rulesdir/no-thenable-actions-in-views - Transaction.updateWaypoints(transactionID, newWaypoints).then(() => { - setOptimisticWaypoints(null); + TransactionUserActions.updateWaypoints(transactionID, newWaypoints).then(() => { + setOptimisticWaypoints(undefined); }); }, [transactionID, waypoints, waypointsList], @@ -226,7 +217,6 @@ function DistanceRequest({transactionID, report, transaction, route, isEditingRe keyExtractor={(item) => item} shouldUsePortal onDragEnd={updateWaypoints} - scrollEventThrottle={variables.distanceScrollEventThrottle} ref={scrollViewRef} renderItem={({item, drag, isActive, getIndex}) => ( ({ transaction: { key: ({transactionID}) => `${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID || 0}`, }, diff --git a/src/components/DraggableList/types.ts b/src/components/DraggableList/types.ts index 67f54ae5d901..6fef5735ecf6 100644 --- a/src/components/DraggableList/types.ts +++ b/src/components/DraggableList/types.ts @@ -1,7 +1,7 @@ import type {DraggableChildrenFn} from 'react-beautiful-dnd'; import type {RenderItemParams} from 'react-native-draggable-flatlist'; -type DraggableListData = { +export type DraggableListData = { data: T[]; }; From f58a6a1751d58d7246953c4a9167465b90943946 Mon Sep 17 00:00:00 2001 From: rayane-djouah <77965000+rayane-djouah@users.noreply.github.com> Date: Thu, 11 Jan 2024 08:22:03 +0100 Subject: [PATCH 109/701] Fix lint errors --- src/components/DistanceRequest/index.tsx | 73 +++++++++++++----------- src/components/DraggableList/types.ts | 4 +- src/types/onyx/Transaction.ts | 1 + 3 files changed, 42 insertions(+), 36 deletions(-) diff --git a/src/components/DistanceRequest/index.tsx b/src/components/DistanceRequest/index.tsx index ff5ff93be3e1..35af39c5268f 100644 --- a/src/components/DistanceRequest/index.tsx +++ b/src/components/DistanceRequest/index.tsx @@ -1,12 +1,15 @@ -import lodashGet from 'lodash/get'; +import type {RouteProp} from '@react-navigation/native'; +import _ from 'lodash'; import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'; -import {View, ScrollView} from 'react-native'; -import {OnyxEntry, withOnyx} from 'react-native-onyx'; -import _ from 'underscore'; +import {View} from 'react-native'; +import type {ScrollView} from 'react-native'; +import {withOnyx} from 'react-native-onyx'; +import type {OnyxEntry} from 'react-native-onyx'; import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView'; import Button from '@components/Button'; import DotIndicatorMessage from '@components/DotIndicatorMessage'; import DraggableList from '@components/DraggableList'; +import type {DraggableListData} from '@components/DraggableList/types'; import HeaderWithBackButton from '@components/HeaderWithBackButton'; import ScreenWrapper from '@components/ScreenWrapper'; import useLocalize from '@hooks/useLocalize'; @@ -17,18 +20,15 @@ import * as ErrorUtils from '@libs/ErrorUtils'; import * as IOUUtils from '@libs/IOUUtils'; import Navigation from '@libs/Navigation/Navigation'; import * as TransactionUtils from '@libs/TransactionUtils'; -import variables from '@styles/variables'; import * as MapboxToken from '@userActions/MapboxToken'; import * as TransactionUserActions from '@userActions/Transaction'; import * as TransactionEdit from '@userActions/TransactionEdit'; import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; +import type {Report, Transaction} from '@src/types/onyx'; +import type {WaypointCollection} from '@src/types/onyx/Transaction'; import DistanceRequestFooter from './DistanceRequestFooter'; import DistanceRequestRenderItem from './DistanceRequestRenderItem'; -import type { Report, Transaction } from '@src/types/onyx'; -import type { RouteProp } from '@react-navigation/native'; -import type { Waypoint, WaypointCollection } from '@src/types/onyx/Transaction'; -import { DraggableListData } from '@components/DraggableList/types'; type DistanceRequestOnyxProps = { transaction: OnyxEntry; @@ -54,10 +54,12 @@ type DistanceRequestProps = DistanceRequestOnyxProps & { route: RouteProp<{ /** Params from the route */ params: { - /** The type of IOU report, i.e. bill, request, send */ - iouType: string; - /** The report ID of the IOU */ - reportID: string}}>; + /** The type of IOU report, i.e. bill, request, send */ + iouType: string; + /** The report ID of the IOU */ + reportID: string; + }; + }>; }; function DistanceRequest({transactionID = '', report, transaction, route, isEditingRequest = false, isEditingNewRequest = false, onSubmit}: DistanceRequestProps) { @@ -67,24 +69,24 @@ function DistanceRequest({transactionID = '', report, transaction, route, isEdit const [optimisticWaypoints, setOptimisticWaypoints] = useState(); const [hasError, setHasError] = useState(false); - const reportID = lodashGet(report, 'reportID', ''); - const waypoints = useMemo(() => optimisticWaypoints || lodashGet(transaction, 'comment.waypoints', {waypoint0: {}, waypoint1: {}}), [optimisticWaypoints, transaction]); - const waypointsList = _.keys(waypoints); - const iouType = lodashGet(route, 'params.iouType', ''); + const reportID = report?.reportID ?? ''; + const waypoints: WaypointCollection = useMemo(() => optimisticWaypoints ?? transaction?.comment?.waypoints ?? {waypoint0: {}, waypoint1: {}}, [optimisticWaypoints, transaction]); + const waypointsList = Object.keys(waypoints); + const iouType = route?.params?.iouType ?? ''; const previousWaypoints = usePrevious(waypoints); - const numberOfWaypoints = _.size(waypoints); - const numberOfPreviousWaypoints = _.size(previousWaypoints); + const numberOfWaypoints = Object.keys(waypoints).length; + const numberOfPreviousWaypoints = Object.keys(previousWaypoints).length; const scrollViewRef = useRef(null); - const isLoadingRoute = lodashGet(transaction, 'comment.isLoading', false); - const isLoading = lodashGet(transaction, 'isLoading', false); - const hasRouteError = !!lodashGet(transaction, 'errorFields.route'); - const hasRoute = TransactionUtils.hasRoute(transaction as Transaction); + const isLoadingRoute = transaction?.comment?.isLoading ?? false; + const isLoading = transaction?.isLoading ?? false; + const hasRouteError = !!transaction?.errorFields?.route; + const hasRoute = TransactionUtils.hasRoute((transaction ?? {}) as Transaction); const validatedWaypoints = TransactionUtils.getValidWaypoints(waypoints); const previousValidatedWaypoints = usePrevious(validatedWaypoints); const haveValidatedWaypointsChanged = !_.isEqual(previousValidatedWaypoints, validatedWaypoints); const isRouteAbsentWithoutErrors = !hasRoute && !hasRouteError; - const shouldFetchRoute = (isRouteAbsentWithoutErrors || haveValidatedWaypointsChanged) && !isLoadingRoute && _.size(validatedWaypoints) > 1; + const shouldFetchRoute = (isRouteAbsentWithoutErrors || haveValidatedWaypointsChanged) && !isLoadingRoute && Object.keys(validatedWaypoints).length > 1; const transactionWasSaved = useRef(false); useEffect(() => { @@ -116,8 +118,8 @@ function DistanceRequest({transactionID = '', report, transaction, route, isEdit }, []); useEffect(() => { - const transactionWaypoints = lodashGet(transaction, 'comment.waypoints', {}); - if (!lodashGet(transaction, 'transactionID') || !_.isEmpty(transactionWaypoints)) { + const transactionWaypoints = transaction?.comment?.waypoints ?? {}; + if (!transaction?.transactionID || !_.isEmpty(transactionWaypoints)) { return; } @@ -130,6 +132,7 @@ function DistanceRequest({transactionID = '', report, transaction, route, isEdit }, [transaction, transactionID]); useEffect(() => { + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing if (isOffline || !shouldFetchRoute) { return; } @@ -160,17 +163,19 @@ function DistanceRequest({transactionID = '', report, transaction, route, isEdit * Takes the user to the page for editing a specific waypoint */ const navigateToWaypointEditPage = (index: number) => { - Navigation.navigate(isEditingRequest ? ROUTES.MONEY_REQUEST_EDIT_WAYPOINT.getRoute(Number(report.reportID), transactionID, index) : ROUTES.MONEY_REQUEST_WAYPOINT.getRoute('request', index)); + Navigation.navigate( + isEditingRequest ? ROUTES.MONEY_REQUEST_EDIT_WAYPOINT.getRoute(Number(report.reportID), transactionID, index) : ROUTES.MONEY_REQUEST_WAYPOINT.getRoute('request', index), + ); }; const getError = () => { // Get route error if available else show the invalid number of waypoints error. if (hasRouteError) { - return ErrorUtils.getLatestErrorField(transaction as Transaction, 'route'); + return ErrorUtils.getLatestErrorField(transaction, 'route'); } - if (_.size(validatedWaypoints) < 2) { - return {0: translate('iou.error.atLeastTwoDifferentWaypoints')}; + if (Object.keys(validatedWaypoints).length < 2) { + return {error0: translate('iou.error.atLeastTwoDifferentWaypoints')}; } return {}; }; @@ -182,8 +187,8 @@ function DistanceRequest({transactionID = '', report, transaction, route, isEdit } const newWaypoints: WaypointCollection = {}; - _.each(data, (waypoint, index) => { - newWaypoints[`waypoint${index}`] = lodashGet(waypoints, waypoint, {}); + data.forEach((waypoint, index) => { + newWaypoints[`waypoint${index}`] = waypoints?.[waypoint] ?? {}; }); setOptimisticWaypoints(newWaypoints); @@ -197,7 +202,7 @@ function DistanceRequest({transactionID = '', report, transaction, route, isEdit const submitWaypoints = useCallback(() => { // If there is any error or loading state, don't let user go to next page. - if (_.size(validatedWaypoints) < 2 || hasRouteError || isLoadingRoute || (isLoading && !isOffline)) { + if (Object.keys(validatedWaypoints).length < 2 || hasRouteError || isLoadingRoute || (isLoading && !isOffline)) { setHasError(true); return; } @@ -241,7 +246,7 @@ function DistanceRequest({transactionID = '', report, transaction, route, isEdit {/* Show error message if there is route error or there are less than 2 routes and user has tried submitting, */} - {((hasError && _.size(validatedWaypoints) < 2) || hasRouteError) && ( + {((hasError && Object.keys(validatedWaypoints).length < 2) || hasRouteError) && ( = { +type DraggableListData = { data: T[]; }; @@ -29,4 +29,4 @@ type DraggableListProps = { ListFooterComponent?: React.ReactElement; } & DraggableListData; -export type {DraggableListProps, RenderItemParams}; +export type {DraggableListProps, RenderItemParams, DraggableListData}; diff --git a/src/types/onyx/Transaction.ts b/src/types/onyx/Transaction.ts index 8b7e26280305..ee72ffffff04 100644 --- a/src/types/onyx/Transaction.ts +++ b/src/types/onyx/Transaction.ts @@ -56,6 +56,7 @@ type Transaction = { comment: Comment; created: string; currency: string; + isLoading?: boolean; errors?: OnyxCommon.Errors; errorFields?: OnyxCommon.ErrorFields<'route'>; // The name of the file used for a receipt (formerly receiptFilename) From 96e13afbb4c3f8cbde4cb9f1b84c11a3c0730bff Mon Sep 17 00:00:00 2001 From: rayane-djouah <77965000+rayane-djouah@users.noreply.github.com> Date: Thu, 11 Jan 2024 08:49:05 +0100 Subject: [PATCH 110/701] Migrate DistanceRequest/DistanceRequestRenderItem.js component to TypeScript --- ...rItem.js => DistanceRequestRenderItem.tsx} | 49 ++++++------------- src/components/DistanceRequest/index.tsx | 2 +- 2 files changed, 16 insertions(+), 35 deletions(-) rename src/components/DistanceRequest/{DistanceRequestRenderItem.js => DistanceRequestRenderItem.tsx} (62%) diff --git a/src/components/DistanceRequest/DistanceRequestRenderItem.js b/src/components/DistanceRequest/DistanceRequestRenderItem.tsx similarity index 62% rename from src/components/DistanceRequest/DistanceRequestRenderItem.js rename to src/components/DistanceRequest/DistanceRequestRenderItem.tsx index 2aa2ac58f379..167c15acba4e 100644 --- a/src/components/DistanceRequest/DistanceRequestRenderItem.js +++ b/src/components/DistanceRequest/DistanceRequestRenderItem.tsx @@ -1,56 +1,38 @@ -import lodashGet from 'lodash/get'; -import PropTypes from 'prop-types'; import React from 'react'; -import _ from 'underscore'; import * as Expensicons from '@components/Icon/Expensicons'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; +import type {TranslationPaths} from '@src/languages/types'; +import type {WaypointCollection} from '@src/types/onyx/Transaction'; -const propTypes = { +type DistanceRequestProps = { /** The waypoints for the distance request */ - waypoints: PropTypes.objectOf( - PropTypes.shape({ - lat: PropTypes.number, - lng: PropTypes.number, - address: PropTypes.string, - name: PropTypes.string, - }), - ), + waypoints: WaypointCollection; /** The index of the item */ - item: PropTypes.string, + item: string; /** Function to call when the secondary interaction is triggered */ - onSecondaryInteraction: PropTypes.func, + onSecondaryInteraction: () => void; /** Function to get the index of the item */ - getIndex: PropTypes.func, + getIndex: () => number; /** Whether the item is active */ - isActive: PropTypes.bool, + isActive: boolean; /** Function to call when the user clicks the item */ - onPress: PropTypes.func, + onPress: (index: number) => void; /** Whether the item is disabled */ - disabled: PropTypes.bool, + disabled: boolean; }; -const defaultProps = { - waypoints: {}, - item: '', - onSecondaryInteraction: () => {}, - getIndex: () => {}, - isActive: false, - onPress: () => {}, - disabled: false, -}; - -function DistanceRequestRenderItem({waypoints, item, onSecondaryInteraction, getIndex, isActive, onPress, disabled}) { +function DistanceRequestRenderItem({waypoints, item = '', onSecondaryInteraction, getIndex, isActive = false, onPress = () => {}, disabled = false}: DistanceRequestProps) { const theme = useTheme(); const {translate} = useLocalize(); - const numberOfWaypoints = _.size(waypoints); + const numberOfWaypoints = Object.keys(waypoints).length; const lastWaypointIndex = numberOfWaypoints - 1; const index = getIndex(); @@ -67,12 +49,13 @@ function DistanceRequestRenderItem({waypoints, item, onSecondaryInteraction, get waypointIcon = Expensicons.DotIndicator; } - const waypoint = lodashGet(waypoints, [`waypoint${index}`], {}); + const waypoint = waypoints?.[`waypoint${index}`] ?? {}; + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const title = waypoint.name || waypoint.address; return ( number} onPress={navigateToWaypointEditPage} disabled={isLoadingRoute} /> From 851ec79b8d91fbf720014f63016af842b82c3150 Mon Sep 17 00:00:00 2001 From: rayane-djouah <77965000+rayane-djouah@users.noreply.github.com> Date: Thu, 11 Jan 2024 09:44:37 +0100 Subject: [PATCH 111/701] Migrate DistanceRequest/DistanceRequestFooter.js component to TypeScript --- ...estFooter.js => DistanceRequestFooter.tsx} | 88 ++++++++----------- src/components/DistanceRequest/index.tsx | 7 +- 2 files changed, 40 insertions(+), 55 deletions(-) rename src/components/DistanceRequest/{DistanceRequestFooter.js => DistanceRequestFooter.tsx} (65%) diff --git a/src/components/DistanceRequest/DistanceRequestFooter.js b/src/components/DistanceRequest/DistanceRequestFooter.tsx similarity index 65% rename from src/components/DistanceRequest/DistanceRequestFooter.js rename to src/components/DistanceRequest/DistanceRequestFooter.tsx index cb164917cd57..a355e4da14a2 100644 --- a/src/components/DistanceRequest/DistanceRequestFooter.js +++ b/src/components/DistanceRequest/DistanceRequestFooter.tsx @@ -1,77 +1,66 @@ -import lodashGet from 'lodash/get'; -import lodashIsNil from 'lodash/isNil'; -import PropTypes from 'prop-types'; +import _ from 'lodash'; import React, {useMemo} from 'react'; +import type {ReactNode} from 'react'; import {View} from 'react-native'; import {withOnyx} from 'react-native-onyx'; -import _ from 'underscore'; +import type {OnyxEntry} from 'react-native-onyx'; import Button from '@components/Button'; import DistanceMapView from '@components/DistanceMapView'; import * as Expensicons from '@components/Icon/Expensicons'; import ImageSVG from '@components/ImageSVG'; -import transactionPropTypes from '@components/transactionPropTypes'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import * as TransactionUtils from '@libs/TransactionUtils'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; +import type {MapboxAccessToken} from '@src/types/onyx'; +import type {WaypointCollection} from '@src/types/onyx/Transaction'; +import type Transaction from '@src/types/onyx/Transaction'; +import type IconAsset from '@src/types/utils/IconAsset'; const MAX_WAYPOINTS = 25; -const propTypes = { - /** The waypoints for the distance request */ - waypoints: PropTypes.objectOf( - PropTypes.shape({ - lat: PropTypes.number, - lng: PropTypes.number, - address: PropTypes.string, - name: PropTypes.string, - }), - ), - - /** Function to call when the user wants to add a new waypoint */ - navigateToWaypointEditPage: PropTypes.func.isRequired, +type WayPoint = { + id: string; + coordinate: [number, number]; + markerComponent: () => ReactNode; +}; +type DistanceRequestFooterOnyxProps = { /** Data about Mapbox token for calling Mapbox API */ - mapboxAccessToken: PropTypes.shape({ - /** Temporary token for Mapbox API */ - token: PropTypes.string, + mapboxAccessToken: OnyxEntry; +}; +type DistanceRequestFooterProps = DistanceRequestFooterOnyxProps & { + /** The waypoints for the distance request */ + waypoints: WaypointCollection; - /** Time when the token will expire in ISO 8601 */ - expiration: PropTypes.string, - }), + /** Function to call when the user wants to add a new waypoint */ + navigateToWaypointEditPage: (index: number) => void; /** The transaction being interacted with */ - transaction: transactionPropTypes, + transaction: Transaction; }; -const defaultProps = { - waypoints: {}, - mapboxAccessToken: { - token: '', - }, - transaction: {}, -}; -function DistanceRequestFooter({waypoints, transaction, mapboxAccessToken, navigateToWaypointEditPage}) { +function DistanceRequestFooter({waypoints, transaction, mapboxAccessToken, navigateToWaypointEditPage}: DistanceRequestFooterProps) { const theme = useTheme(); const styles = useThemeStyles(); const {translate} = useLocalize(); - const numberOfWaypoints = _.size(waypoints); - const numberOfFilledWaypoints = _.size(_.filter(waypoints, (waypoint) => !_.isEmpty(waypoint))); + const numberOfWaypoints = Object.keys(waypoints).length; + const numberOfFilledWaypoints = Object.values(waypoints).filter((waypoint) => !_.isEmpty(waypoint)).length; const lastWaypointIndex = numberOfWaypoints - 1; const waypointMarkers = useMemo( () => - _.filter( - _.map(waypoints, (waypoint, key) => { - if (!waypoint || lodashIsNil(waypoint.lat) || lodashIsNil(waypoint.lng)) { + Object.entries(waypoints) + .map(([key, waypoint]) => { + if (!waypoint?.lat || !waypoint?.lng) { return; } const index = TransactionUtils.getWaypointIndex(key); - let MarkerComponent; + let MarkerComponent: IconAsset; if (index === 0) { MarkerComponent = Expensicons.DotIndicatorUnfilled; } else if (index === lastWaypointIndex) { @@ -82,8 +71,8 @@ function DistanceRequestFooter({waypoints, transaction, mapboxAccessToken, navig return { id: `${waypoint.lng},${waypoint.lat},${index}`, - coordinate: [waypoint.lng, waypoint.lat], - markerComponent: () => ( + coordinate: [waypoint.lng, waypoint.lat] as const, + markerComponent: (): ReactNode => ( ), }; - }), - (waypoint) => waypoint, - ), + }) + .filter((waypoint): waypoint is WayPoint => !!waypoint), [waypoints, lastWaypointIndex, theme.icon], ); @@ -105,7 +93,7 @@ function DistanceRequestFooter({waypoints, transaction, mapboxAccessToken, navig + setIsConfirmModalVisible(false)} + prompt={translate('iou.cancelPaymentConfirmation')} + confirmText={translate('iou.cancelPayment')} + cancelText={translate('common.dismiss')} + danger + /> ); } diff --git a/src/languages/en.ts b/src/languages/en.ts index b6da38df21a0..9200c21f02b4 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -3,6 +3,7 @@ import Str from 'expensify-common/lib/str'; import CONST from '@src/CONST'; import type { AddressLineParams, + AdminCanceledRequestParams, AlreadySignedInParams, AmountEachParams, ApprovedAmountParams, @@ -112,6 +113,7 @@ type AllCountries = Record; export default { common: { cancel: 'Cancel', + dismiss: 'Dismiss', yes: 'Yes', no: 'No', ok: 'OK', @@ -575,6 +577,8 @@ export default { requestMoney: 'Request money', sendMoney: 'Send money', pay: 'Pay', + cancelPayment: 'Cancel payment', + cancelPaymentConfirmation: 'Are you sure that you want to cancel this payment?', viewDetails: 'View details', pending: 'Pending', canceled: 'Canceled', @@ -612,6 +616,7 @@ export default { payerSettled: ({amount}: PayerSettledParams) => `paid ${amount}`, approvedAmount: ({amount}: ApprovedAmountParams) => `approved ${amount}`, waitingOnBankAccount: ({submitterDisplayName}: WaitingOnBankAccountParams) => `started settling up, payment is held until ${submitterDisplayName} adds a bank account`, + adminCanceledRequest: ({amount}: AdminCanceledRequestParams) => `The ${amount} payment has been cancelled by the admin.`, canceledRequest: ({amount, submitterDisplayName}: CanceledRequestParams) => `Canceled the ${amount} payment, because ${submitterDisplayName} did not enable their Expensify Wallet within 30 days`, settledAfterAddedBankAccount: ({submitterDisplayName, amount}: SettledAfterAddedBankAccountParams) => diff --git a/src/languages/types.ts b/src/languages/types.ts index 3185b7a8f6f1..35a5110abf79 100644 --- a/src/languages/types.ts +++ b/src/languages/types.ts @@ -135,6 +135,8 @@ type WaitingOnBankAccountParams = {submitterDisplayName: string}; type CanceledRequestParams = {amount: string; submitterDisplayName: string}; +type AdminCanceledRequestParams = {amount: string}; + type SettledAfterAddedBankAccountParams = {submitterDisplayName: string; amount: string}; type PaidElsewhereWithAmountParams = {payer?: string; amount: string}; @@ -288,6 +290,7 @@ type TranslationFlatObject = { }; export type { + AdminCanceledRequestParams, ApprovedAmountParams, AddressLineParams, AlreadySignedInParams, diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 58e93d521827..04e47fe46587 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -16,7 +16,7 @@ import ONYXKEYS from '@src/ONYXKEYS'; import ROUTES from '@src/ROUTES'; import type {Beta, Login, PersonalDetails, PersonalDetailsList, Policy, PolicyReportField, Report, ReportAction, ReportMetadata, Session, Transaction} from '@src/types/onyx'; import type {Errors, Icon, PendingAction} from '@src/types/onyx/OnyxCommon'; -import type {IOUMessage, OriginalMessageActionName, OriginalMessageCreated} from '@src/types/onyx/OriginalMessage'; +import type {IOUMessage, OriginalMessageActionName, OriginalMessageCreated, OriginalMessageReimbursementDequeued, ReimbursementDeQueuedMessage} from '@src/types/onyx/OriginalMessage'; import type {Status} from '@src/types/onyx/PersonalDetails'; import type {NotificationPreference} from '@src/types/onyx/Report'; import type {Message, ReportActionBase, ReportActions} from '@src/types/onyx/ReportAction'; @@ -179,6 +179,11 @@ type OptimisticSubmittedReportAction = Pick< 'actionName' | 'actorAccountID' | 'automatic' | 'avatar' | 'isAttachment' | 'originalMessage' | 'message' | 'person' | 'reportActionID' | 'shouldShow' | 'created' | 'pendingAction' >; +type OptimisticCancelPaymentReportAction = Pick< + ReportAction, + 'actionName' | 'actorAccountID' | 'message' | 'originalMessage' | 'person' | 'reportActionID' | 'shouldShow' | 'created' | 'pendingAction' + >; + type OptimisticEditedTaskReportAction = Pick< ReportAction, 'reportActionID' | 'actionName' | 'pendingAction' | 'actorAccountID' | 'automatic' | 'avatar' | 'created' | 'shouldShow' | 'message' | 'person' @@ -1604,13 +1609,50 @@ function getReimbursementQueuedActionMessage(reportAction: OnyxEntry): string { +function getReimbursementDeQueuedActionMessage(reportAction: OnyxEntry, report: OnyxEntry | EmptyObject): string { + const amount = CurrencyUtils.convertToDisplayString(Math.abs(report?.total ?? 0), report?.currency); + const originalMessage = reportAction?.originalMessage as ReimbursementDeQueuedMessage | undefined; + if (originalMessage?.cancellationReason === CONST.REPORT.CANCEL_PAYMENT_REASONS.ADMIN) { + return Localize.translateLocal('iou.adminCanceledRequest', {amount}); + } const submitterDisplayName = getDisplayNameForParticipant(report?.ownerAccountID, true) ?? ''; - const amount = CurrencyUtils.convertToDisplayString(report?.total ?? 0, report?.currency); - return Localize.translateLocal('iou.canceledRequest', {submitterDisplayName, amount}); } +/** + * Builds an optimistic REIMBURSEMENTDEQUEUED report action with a randomly generated reportActionID. + * + */ +function buildOptimisticCancelPaymentReportAction(expenseReportID: string): OptimisticCancelPaymentReportAction { + return { + actionName: CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENTDEQUEUED, + actorAccountID: currentUserAccountID, + message: [ + { + cancellationReason: CONST.REPORT.CANCEL_PAYMENT_REASONS.ADMIN, + expenseReportID, + type: CONST.REPORT.MESSAGE.TYPE.COMMENT, + text: '', + }, + ], + originalMessage: { + cancellationReason: CONST.REPORT.CANCEL_PAYMENT_REASONS.ADMIN, + expenseReportID, + }, + person: [ + { + style: 'strong', + text: currentUserPersonalDetails?.displayName ?? currentUserEmail, + type: 'TEXT', + }, + ], + reportActionID: NumberUtils.rand64(), + shouldShow: true, + created: DateUtils.getDBTime(), + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }; +} + /** * Returns the last visible message for a given report after considering the given optimistic actions * @@ -4219,17 +4261,22 @@ function getIOUReportActionDisplayMessage(reportAction: OnyxEntry) const formattedAmount = CurrencyUtils.convertToDisplayString(amount, currency) ?? ''; const payerName = isExpenseReport(iouReport) ? getPolicyName(iouReport) : getDisplayNameForParticipant(iouReport?.managerID, true); - switch (originalMessage.paymentType) { - case CONST.IOU.PAYMENT_TYPE.ELSEWHERE: - translationKey = 'iou.paidElsewhereWithAmount'; - break; - case CONST.IOU.PAYMENT_TYPE.EXPENSIFY: - case CONST.IOU.PAYMENT_TYPE.VBBA: - translationKey = 'iou.paidWithExpensifyWithAmount'; - break; - default: - translationKey = 'iou.payerPaidAmount'; - break; + // If the payment was cancelled, show the "Owes" message + if (!isSettled(IOUReportID)) { + translationKey = 'iou.payerOwesAmount'; + } else { + switch (originalMessage.paymentType) { + case CONST.IOU.PAYMENT_TYPE.ELSEWHERE: + translationKey = 'iou.paidElsewhereWithAmount'; + break; + case CONST.IOU.PAYMENT_TYPE.EXPENSIFY: + case CONST.IOU.PAYMENT_TYPE.VBBA: + translationKey = 'iou.paidWithExpensifyWithAmount'; + break; + default: + translationKey = 'iou.payerPaidAmount'; + break; + } } return Localize.translateLocal(translationKey, {amount: formattedAmount, payer: payerName ?? ''}); } @@ -4475,6 +4522,7 @@ export { buildOptimisticIOUReportAction, buildOptimisticReportPreview, buildOptimisticModifiedExpenseReportAction, + buildOptimisticCancelPaymentReportAction, updateReportPreview, buildOptimisticTaskReportAction, buildOptimisticAddCommentReportAction, diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index 3e2ffc875155..7d0acdd5d240 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -3368,6 +3368,106 @@ function submitReport(expenseReport) { ); } +/** + * @param {Object} expenseReport + * @param {Object} chatReport + */ +function cancelPayment(expenseReport, chatReport) { + const optimisticReportAction = ReportUtils.buildOptimisticCancelPaymentReportAction(expenseReport.reportID); + const policy = ReportUtils.getPolicy(chatReport.policyID); + const isFree = policy && policy.type === CONST.POLICY.TYPE.FREE; + const optimisticData = [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${expenseReport.reportID}`, + value: { + [optimisticReportAction.reportActionID]: { + ...optimisticReportAction, + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, + }, + }, + }, + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${expenseReport.reportID}`, + value: { + ...expenseReport, + lastMessageText: lodashGet(optimisticReportAction, 'message.0.text', ''), + lastMessageHtml: lodashGet(optimisticReportAction, 'message.0.html', ''), + stateNum: isFree ? CONST.REPORT.STATE_NUM.SUBMITTED : CONST.REPORT.STATE_NUM.OPEN, + statusNum: isFree ? CONST.REPORT.STATUS_NUM.SUBMITTED : CONST.REPORT.STATUS_NUM.OPEN, + }, + }, + ...(chatReport.reportID + ? [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${chatReport.reportID}`, + value: { + ...chatReport, + hasOutstandingChildRequest: true, + iouReportID: expenseReport.reportID, + }, + }, + ] + : []), + ]; + + const successData = [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${expenseReport.reportID}`, + value: { + [optimisticReportAction.reportActionID]: { + pendingAction: null, + }, + }, + }, + ]; + + const failureData = [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${expenseReport.reportID}`, + value: { + [expenseReport.reportActionID]: { + errors: ErrorUtils.getMicroSecondOnyxError('iou.error.other'), + }, + }, + }, + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${expenseReport.reportID}`, + value: { + statusNum: CONST.REPORT.STATUS_NUM.REIMBURSED, + }, + }, + ...(chatReport.reportID + ? [ + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${chatReport.reportID}`, + value: { + hasOutstandingChildRequest: false, + iouReportID: 0, + }, + }, + ] + : []), + ]; + + API.write( + 'CancelPayment', + { + iouReportID: expenseReport.reportID, + chatReportID: chatReport.reportID, + managerAccountID: expenseReport.managerID, + reportActionID: optimisticReportAction.reportActionID, + }, + {optimisticData, successData, failureData}, + ); +} + /** * @param {String} paymentType * @param {Object} chatReport @@ -3698,4 +3798,5 @@ export { detachReceipt, getIOUReportID, editMoneyRequest, + cancelPayment, }; diff --git a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx index ea25a00ee1d3..f0308d6c89c8 100644 --- a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx +++ b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx @@ -383,6 +383,11 @@ const ContextMenuActions: ContextMenuAction[] = [ } else if (ReportActionsUtils.isModifiedExpenseAction(reportAction)) { const modifyExpenseMessage = ModifiedExpenseMessage.getForReportAction(reportAction); Clipboard.setString(modifyExpenseMessage); + } else if (ReportActionsUtils.isReimbursementDeQueuedAction(reportAction)) { + const {expenseReportID} = reportAction.originalMessage; + const expenseReport = ReportUtils.getReport(expenseReportID); + const displayMessage = ReportUtils.getReimbursementDeQueuedActionMessage(reportAction, expenseReport); + Clipboard.setString(displayMessage); } else if (ReportActionsUtils.isMoneyRequestAction(reportAction)) { const displayMessage = ReportUtils.getIOUReportActionDisplayMessage(reportAction); Clipboard.setString(displayMessage); diff --git a/src/pages/home/report/ReportActionItem.js b/src/pages/home/report/ReportActionItem.js index 34129a87d9b5..72062fce7dd7 100644 --- a/src/pages/home/report/ReportActionItem.js +++ b/src/pages/home/report/ReportActionItem.js @@ -440,10 +440,7 @@ function ReportActionItem(props) { ); } else if (props.action.actionName === CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENTDEQUEUED) { - const submitterDisplayName = PersonalDetailsUtils.getDisplayNameOrDefault(lodashGet(personalDetails, props.report.ownerAccountID)); - const amount = CurrencyUtils.convertToDisplayString(props.report.total, props.report.currency); - - children = ; + children = ; } else if (props.action.actionName === CONST.REPORT.ACTIONS.TYPE.MODIFIEDEXPENSE) { children = ; } else if (props.action.actionName === CONST.REPORT.ACTIONS.TYPE.MARKEDREIMBURSED) { diff --git a/src/pages/home/report/ReportActionItemMessage.tsx b/src/pages/home/report/ReportActionItemMessage.tsx index 6fc70c78e605..38f0ccf4767f 100644 --- a/src/pages/home/report/ReportActionItemMessage.tsx +++ b/src/pages/home/report/ReportActionItemMessage.tsx @@ -58,7 +58,7 @@ function ReportActionItemMessage({action, displayAsGroup, reportID, style, isHid const originalMessage = action.actionName === CONST.REPORT.ACTIONS.TYPE.IOU ? action.originalMessage : null; const iouReportID = originalMessage?.IOUReportID; if (iouReportID) { - iouMessage = ReportUtils.getReportPreviewMessage(ReportUtils.getReport(iouReportID), action); + iouMessage = ReportUtils.getIOUReportActionDisplayMessage(action); } } diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts index f00fd8c4c972..3da158985f71 100644 --- a/src/types/onyx/OriginalMessage.ts +++ b/src/types/onyx/OriginalMessage.ts @@ -37,6 +37,7 @@ type IOUMessage = { /** The ID of the iou transaction */ IOUTransactionID?: string; IOUReportID?: string; + expenseReportID?: string; amount: number; comment?: string; currency: string; @@ -44,10 +45,15 @@ type IOUMessage = { participantAccountIDs?: number[]; type: ValueOf; paymentType?: DeepValueOf; + cancellationReason?: string; /** Only exists when we are sending money */ IOUDetails?: IOUDetails; }; +type ReimbursementDeQueuedMessage = { + cancellationReason: string; +}; + type OriginalMessageIOU = { actionName: typeof CONST.REPORT.ACTIONS.TYPE.IOU; originalMessage: IOUMessage; @@ -276,6 +282,7 @@ export type { Reaction, ActionName, IOUMessage, + ReimbursementDeQueuedMessage, Closed, OriginalMessageActionName, ChangeLog, diff --git a/src/types/onyx/ReportAction.ts b/src/types/onyx/ReportAction.ts index 3dbd4c1e3667..d5c0e19f9373 100644 --- a/src/types/onyx/ReportAction.ts +++ b/src/types/onyx/ReportAction.ts @@ -54,6 +54,12 @@ type Message = { /** ID of a task report */ taskReportID?: string; + /** Reason of payment cancellation */ + cancellationReason?: string; + + /** ID of an expense report */ + expenseReportID?: string; + /** resolution for actionable mention whisper */ resolution?: ValueOf | null; }; From 89fad7ea088a0fc38c8c34fb318144b9fd4d4a8a Mon Sep 17 00:00:00 2001 From: Alberto Date: Thu, 18 Jan 2024 12:30:04 +0100 Subject: [PATCH 130/701] Spanish --- src/languages/es.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/languages/es.ts b/src/languages/es.ts index 2478c8ba8bd2..5a196a7f9cb5 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2,6 +2,7 @@ import Str from 'expensify-common/lib/str'; import CONST from '@src/CONST'; import type { AddressLineParams, + AdminCanceledRequestParams, AlreadySignedInParams, AmountEachParams, ApprovedAmountParams, @@ -102,6 +103,7 @@ import type { export default { common: { cancel: 'Cancelar', + dismiss: 'Descartar', yes: 'Sí', no: 'No', ok: 'OK', @@ -568,6 +570,8 @@ export default { requestMoney: 'Pedir dinero', sendMoney: 'Enviar dinero', pay: 'Pagar', + cancelPayment: 'Cancelar el pago', + cancelPaymentConfirmation: '¿Estás seguro de que quieres cancelar este pago?', viewDetails: 'Ver detalles', pending: 'Pendiente', canceled: 'Canceló', @@ -605,6 +609,7 @@ export default { payerSettled: ({amount}: PayerSettledParams) => `pagó ${amount}`, approvedAmount: ({amount}: ApprovedAmountParams) => `aprobó ${amount}`, waitingOnBankAccount: ({submitterDisplayName}: WaitingOnBankAccountParams) => `inicio el pago, pero no se procesará hasta que ${submitterDisplayName} añada una cuenta bancaria`, + adminCanceledRequest: ({amount}: AdminCanceledRequestParams) => `El pago de ${amount} ha sido cancelado por el administrador.`, canceledRequest: ({amount, submitterDisplayName}: CanceledRequestParams) => `Canceló el pago ${amount}, porque ${submitterDisplayName} no habilitó su billetera Expensify en un plazo de 30 días.`, settledAfterAddedBankAccount: ({submitterDisplayName, amount}: SettledAfterAddedBankAccountParams) => From c7b8550d20178b549353781a7aaf49188d996c46 Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Thu, 18 Jan 2024 12:32:44 +0100 Subject: [PATCH 131/701] Cleanup comments --- src/components/VideoPlayer/BaseVideoPlayer.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index 160a145607dd..2c8c0e106bbd 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -143,8 +143,8 @@ function BaseVideoPlayer({ style={[styles.flex1]} /> {/* We are adding transaprent absolute View between appended video component and conttrol buttons to enable - catching onMosue events from Attachment Carousel. Due to late appending React doesn't handle - element's events properly. */} + catching onMosue events from Attachment Carousel. Due to late appending React doesn't handle + element's events properly. */} ) : ( From 3fd0df3c85bfc083214e9ddbb03c73db73e2274c Mon Sep 17 00:00:00 2001 From: Alberto Date: Thu, 18 Jan 2024 12:47:08 +0100 Subject: [PATCH 132/701] remove extra import --- src/pages/home/report/ReportActionItem.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/home/report/ReportActionItem.js b/src/pages/home/report/ReportActionItem.js index 72062fce7dd7..8a37767b0809 100644 --- a/src/pages/home/report/ReportActionItem.js +++ b/src/pages/home/report/ReportActionItem.js @@ -38,7 +38,6 @@ import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import compose from '@libs/compose'; import ControlSelection from '@libs/ControlSelection'; -import * as CurrencyUtils from '@libs/CurrencyUtils'; import * as DeviceCapabilities from '@libs/DeviceCapabilities'; import focusTextInputAfterAnimation from '@libs/focusTextInputAfterAnimation'; import ModifiedExpenseMessage from '@libs/ModifiedExpenseMessage'; From 7ed14501665d44530d45a46a56ff3118e5edb1fb Mon Sep 17 00:00:00 2001 From: Alberto Date: Thu, 18 Jan 2024 13:01:20 +0100 Subject: [PATCH 133/701] prettier --- src/libs/ReportUtils.ts | 2 +- src/libs/actions/IOU.js | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 04e47fe46587..c512a27fa124 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -182,7 +182,7 @@ type OptimisticSubmittedReportAction = Pick< type OptimisticCancelPaymentReportAction = Pick< ReportAction, 'actionName' | 'actorAccountID' | 'message' | 'originalMessage' | 'person' | 'reportActionID' | 'shouldShow' | 'created' | 'pendingAction' - >; +>; type OptimisticEditedTaskReportAction = Pick< ReportAction, diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index 7d0acdd5d240..430d88b98569 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -3400,16 +3400,16 @@ function cancelPayment(expenseReport, chatReport) { }, ...(chatReport.reportID ? [ - { - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT}${chatReport.reportID}`, - value: { - ...chatReport, - hasOutstandingChildRequest: true, - iouReportID: expenseReport.reportID, - }, - }, - ] + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${chatReport.reportID}`, + value: { + ...chatReport, + hasOutstandingChildRequest: true, + iouReportID: expenseReport.reportID, + }, + }, + ] : []), ]; @@ -3444,15 +3444,15 @@ function cancelPayment(expenseReport, chatReport) { }, ...(chatReport.reportID ? [ - { - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT}${chatReport.reportID}`, - value: { - hasOutstandingChildRequest: false, - iouReportID: 0, - }, - }, - ] + { + onyxMethod: Onyx.METHOD.MERGE, + key: `${ONYXKEYS.COLLECTION.REPORT}${chatReport.reportID}`, + value: { + hasOutstandingChildRequest: false, + iouReportID: 0, + }, + }, + ] : []), ]; From 80251b459269bc568b2b66ec9c66d4af53dded60 Mon Sep 17 00:00:00 2001 From: Ishpaul Singh Date: Thu, 18 Jan 2024 21:35:08 +0530 Subject: [PATCH 134/701] prettier diffs --- src/libs/ReportActionsUtils.ts | 8 ++++---- src/types/onyx/OriginalMessage.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index fb4da897cc20..162f2e5d592c 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -6,7 +6,7 @@ import OnyxUtils from 'react-native-onyx/lib/utils'; import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import type {ActionName, ChangeLog, OriginalMessageReimbursementDequeued, OriginalMessageActionableMentionWhisper} from '@src/types/onyx/OriginalMessage'; +import type {ActionName, ChangeLog, OriginalMessageActionableMentionWhisper, OriginalMessageReimbursementDequeued} from '@src/types/onyx/OriginalMessage'; import type Report from '@src/types/onyx/Report'; import type {Message, ReportActionBase, ReportActions} from '@src/types/onyx/ReportAction'; import type ReportAction from '@src/types/onyx/ReportAction'; @@ -821,11 +821,11 @@ function getActionableMentionWhisperMessage(reportAction: OnyxEntry { const personalDetail = personalDetails.find((personal) => personal.accountID === accountID); const handleText = PersonalDetailsUtils.getEffectiveDisplayName(personalDetail) ?? Localize.translateLocal('common.hidden'); - return `@${handleText}` + return `@${handleText}`; }); - const preMentionsText = 'Heads up, ' + const preMentionsText = 'Heads up, '; const mentions = mentionElements.join(', ').replace(/, ([^,]*)$/, ' and $1'); - const postMentionsText = ` ${mentionElements.length > 1 ? 'aren\'t members' : 'isn\'t a member'} of this room.` + const postMentionsText = ` ${mentionElements.length > 1 ? "aren't members" : "isn't a member"} of this room.`; return `${preMentionsText}${mentions}${postMentionsText}`; } diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts index 733ff5cffc1e..bbf850914c10 100644 --- a/src/types/onyx/OriginalMessage.ts +++ b/src/types/onyx/OriginalMessage.ts @@ -283,5 +283,5 @@ export type { OriginalMessageCreated, OriginalMessageAddComment, OriginalMessageActionableMentionWhisper, - OriginalMessageReimbursementDequeued + OriginalMessageReimbursementDequeued, }; From d612971ed3479cb0d385f8d9a44d6cd44e9433b2 Mon Sep 17 00:00:00 2001 From: rayane-djouah <77965000+rayane-djouah@users.noreply.github.com> Date: Fri, 19 Jan 2024 12:22:14 +0100 Subject: [PATCH 135/701] address review comment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Fábio Henriques --- src/components/DistanceRequest/DistanceRequestRenderItem.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/DistanceRequest/DistanceRequestRenderItem.tsx b/src/components/DistanceRequest/DistanceRequestRenderItem.tsx index 5309a1101f90..a1f3efbf0291 100644 --- a/src/components/DistanceRequest/DistanceRequestRenderItem.tsx +++ b/src/components/DistanceRequest/DistanceRequestRenderItem.tsx @@ -35,7 +35,7 @@ function DistanceRequestRenderItem({waypoints, item = '', onSecondaryInteraction const numberOfWaypoints = Object.keys(waypoints ?? {}).length; const lastWaypointIndex = numberOfWaypoints - 1; - const index = getIndex ? getIndex() : -1; + const index = getIndex?.() ?? -1; let descriptionKey = 'distance.waypointDescription.'; let waypointIcon; if (index === 0) { From e774d17a3fa11214280a7200f0421a348ea70ae8 Mon Sep 17 00:00:00 2001 From: Alberto Date: Fri, 19 Jan 2024 16:04:03 +0100 Subject: [PATCH 136/701] Display better cancelled message --- src/languages/en.ts | 2 +- src/languages/es.ts | 2 +- src/languages/types.ts | 2 +- src/libs/ReportUtils.ts | 3 ++- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 9200c21f02b4..9754953fa3f7 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -616,7 +616,7 @@ export default { payerSettled: ({amount}: PayerSettledParams) => `paid ${amount}`, approvedAmount: ({amount}: ApprovedAmountParams) => `approved ${amount}`, waitingOnBankAccount: ({submitterDisplayName}: WaitingOnBankAccountParams) => `started settling up, payment is held until ${submitterDisplayName} adds a bank account`, - adminCanceledRequest: ({amount}: AdminCanceledRequestParams) => `The ${amount} payment has been cancelled by the admin.`, + adminCanceledRequest: ({manager, amount}: AdminCanceledRequestParams) => `${manager} cancelled the ${amount} payment.`, canceledRequest: ({amount, submitterDisplayName}: CanceledRequestParams) => `Canceled the ${amount} payment, because ${submitterDisplayName} did not enable their Expensify Wallet within 30 days`, settledAfterAddedBankAccount: ({submitterDisplayName, amount}: SettledAfterAddedBankAccountParams) => diff --git a/src/languages/es.ts b/src/languages/es.ts index 5a196a7f9cb5..fc97e7316591 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -609,7 +609,7 @@ export default { payerSettled: ({amount}: PayerSettledParams) => `pagó ${amount}`, approvedAmount: ({amount}: ApprovedAmountParams) => `aprobó ${amount}`, waitingOnBankAccount: ({submitterDisplayName}: WaitingOnBankAccountParams) => `inicio el pago, pero no se procesará hasta que ${submitterDisplayName} añada una cuenta bancaria`, - adminCanceledRequest: ({amount}: AdminCanceledRequestParams) => `El pago de ${amount} ha sido cancelado por el administrador.`, + adminCanceledRequest: ({amount}: AdminCanceledRequestParams) => `${manager} canceló el pago de ${amount}.`, canceledRequest: ({amount, submitterDisplayName}: CanceledRequestParams) => `Canceló el pago ${amount}, porque ${submitterDisplayName} no habilitó su billetera Expensify en un plazo de 30 días.`, settledAfterAddedBankAccount: ({submitterDisplayName, amount}: SettledAfterAddedBankAccountParams) => diff --git a/src/languages/types.ts b/src/languages/types.ts index 35a5110abf79..cea2c8828183 100644 --- a/src/languages/types.ts +++ b/src/languages/types.ts @@ -135,7 +135,7 @@ type WaitingOnBankAccountParams = {submitterDisplayName: string}; type CanceledRequestParams = {amount: string; submitterDisplayName: string}; -type AdminCanceledRequestParams = {amount: string}; +type AdminCanceledRequestParams = {manager: string; amount: string}; type SettledAfterAddedBankAccountParams = {submitterDisplayName: string; amount: string}; diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 80b5166c3aa6..3958bb93ec5e 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -1715,7 +1715,8 @@ function getReimbursementDeQueuedActionMessage(reportAction: OnyxEntry Date: Fri, 19 Jan 2024 20:56:21 +0530 Subject: [PATCH 137/701] fixes the issue --- src/pages/home/report/ReportActionItem.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pages/home/report/ReportActionItem.js b/src/pages/home/report/ReportActionItem.js index 34129a87d9b5..6611cb3a7622 100644 --- a/src/pages/home/report/ReportActionItem.js +++ b/src/pages/home/report/ReportActionItem.js @@ -307,7 +307,7 @@ function ReportActionItem(props) { ); const actionableItemButtons = useMemo(() => { - if (!(props.action.actionName === CONST.REPORT.ACTIONS.TYPE.ACTIONABLEMENTIONWHISPER && !lodashGet(props.action, 'originalMessage.resolution', null))) { + if (!(ReportActionsUtils.isActionableMentionWhisper(props.action) && !lodashGet(props.action, 'originalMessage.resolution', null))) { return []; } return [ @@ -687,6 +687,11 @@ function ReportActionItem(props) { return null; } + // if isActionableMentionWhisper, and resolved, then we don't want to render anything + if (ReportActionsUtils.isActionableMentionWhisper(props.action) && lodashGet(props.action, 'originalMessage.resolution', null)) { + return null; + } + const hasErrors = !_.isEmpty(props.action.errors); const whisperedToAccountIDs = props.action.whisperedToAccountIDs || []; const isWhisper = whisperedToAccountIDs.length > 0; From c2fd7fc5d30692a629d3dc974e8255b90c40713a Mon Sep 17 00:00:00 2001 From: Alberto Date: Fri, 19 Jan 2024 16:40:19 +0100 Subject: [PATCH 138/701] display paid message correctly --- src/libs/ReportUtils.ts | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 3958bb93ec5e..ce2b9fc186c3 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -4413,22 +4413,17 @@ function getIOUReportActionDisplayMessage(reportAction: OnyxEntry) const formattedAmount = CurrencyUtils.convertToDisplayString(amount, currency) ?? ''; const payerName = isExpenseReport(iouReport) ? getPolicyName(iouReport) : getDisplayNameForParticipant(iouReport?.managerID, true); - // If the payment was cancelled, show the "Owes" message - if (!isSettled(IOUReportID)) { - translationKey = 'iou.payerOwesAmount'; - } else { - switch (originalMessage.paymentType) { - case CONST.IOU.PAYMENT_TYPE.ELSEWHERE: - translationKey = 'iou.paidElsewhereWithAmount'; - break; - case CONST.IOU.PAYMENT_TYPE.EXPENSIFY: - case CONST.IOU.PAYMENT_TYPE.VBBA: - translationKey = 'iou.paidWithExpensifyWithAmount'; - break; - default: - translationKey = 'iou.payerPaidAmount'; - break; - } + switch (originalMessage.paymentType) { + case CONST.IOU.PAYMENT_TYPE.ELSEWHERE: + translationKey = 'iou.paidElsewhereWithAmount'; + break; + case CONST.IOU.PAYMENT_TYPE.EXPENSIFY: + case CONST.IOU.PAYMENT_TYPE.VBBA: + translationKey = 'iou.paidWithExpensifyWithAmount'; + break; + default: + translationKey = 'iou.payerPaidAmount'; + break; } return Localize.translateLocal(translationKey, {amount: formattedAmount, payer: payerName ?? ''}); } From 60f8f21d21ab55c49ce643e880a0dec9add64f3e Mon Sep 17 00:00:00 2001 From: Alberto Date: Fri, 19 Jan 2024 16:44:45 +0100 Subject: [PATCH 139/701] display cancelled message correctly --- src/libs/ReportUtils.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index ce2b9fc186c3..564f5b3648bf 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -1712,14 +1712,16 @@ function getReimbursementQueuedActionMessage(reportAction: OnyxEntry, report: OnyxEntry | EmptyObject): string { - const amount = CurrencyUtils.convertToDisplayString(Math.abs(report?.total ?? 0), report?.currency); + const originalMessage = reportAction?.originalMessage as ReimbursementDeQueuedMessage | undefined; + const {amount, currency} = originalMessage; + const formattedAmount = CurrencyUtils.convertToDisplayString(amount, currency); if (originalMessage?.cancellationReason === CONST.REPORT.CANCEL_PAYMENT_REASONS.ADMIN) { const payerOrApproverName = isExpenseReport(report) ? getPolicyName(report, false) : getDisplayNameForParticipant(report?.managerID) ?? ''; - return Localize.translateLocal('iou.adminCanceledRequest', {'manager': payerOrApproverName, amount}); + return Localize.translateLocal('iou.adminCanceledRequest', {'manager': payerOrApproverName, formattedAmount}); } const submitterDisplayName = getDisplayNameForParticipant(report?.ownerAccountID, true) ?? ''; - return Localize.translateLocal('iou.canceledRequest', {submitterDisplayName, amount}); + return Localize.translateLocal('iou.canceledRequest', {submitterDisplayName, formattedAmount}); } /** From a5e4c0a0e019e790c97d5c82f7a9ed331d69538e Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Fri, 19 Jan 2024 18:12:18 +0100 Subject: [PATCH 140/701] Fix PopoverMenu select when sub menus exists --- src/components/PopoverMenu.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/PopoverMenu.tsx b/src/components/PopoverMenu.tsx index 659d2a113770..ce611c54cb16 100644 --- a/src/components/PopoverMenu.tsx +++ b/src/components/PopoverMenu.tsx @@ -122,7 +122,7 @@ function PopoverMenu({ const [focusedIndex, setFocusedIndex] = useArrowKeyFocusManager({initialFocusedIndex: -1, maxIndex: currentMenuItems.length - 1, isActive: isVisible}); const selectItem = (index: number) => { - const selectedItem = menuItems[index]; + const selectedItem = currentMenuItems[index]; if (selectedItem?.subMenuItems) { setCurrentMenuItems([...selectedItem.subMenuItems]); setEnteredSubMenuIndexes([...enteredSubMenuIndexes, index]); From 7cc41cedf0dbe06c82d6730e66242b2aaa927117 Mon Sep 17 00:00:00 2001 From: Fitsum Abebe Date: Sun, 21 Jan 2024 00:04:16 +0300 Subject: [PATCH 141/701] fix type import --- src/components/DistanceEReceipt.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/DistanceEReceipt.tsx b/src/components/DistanceEReceipt.tsx index e82dcaa2792b..f556296e806f 100644 --- a/src/components/DistanceEReceipt.tsx +++ b/src/components/DistanceEReceipt.tsx @@ -9,9 +9,9 @@ import * as ReceiptUtils from '@libs/ReceiptUtils'; import * as ReportUtils from '@libs/ReportUtils'; import * as TransactionUtils from '@libs/TransactionUtils'; import tryResolveUrlFromApiRoot from '@libs/tryResolveUrlFromApiRoot'; -import {TranslationPaths} from '@src/languages/types'; -import {Transaction} from '@src/types/onyx'; -import {WaypointCollection} from '@src/types/onyx/Transaction'; +import type {TranslationPaths} from '@src/languages/types'; +import type {Transaction} from '@src/types/onyx'; +import type {WaypointCollection} from '@src/types/onyx/Transaction'; import Icon from './Icon'; import * as Expensicons from './Icon/Expensicons'; import ImageSVG from './ImageSVG'; From 91e0f37720148787928824eef98a19e1a0812225 Mon Sep 17 00:00:00 2001 From: Alberto Date: Mon, 22 Jan 2024 16:21:55 +0100 Subject: [PATCH 142/701] pass and use amount in message --- src/libs/ReportUtils.ts | 9 +++++++-- src/libs/actions/IOU.js | 2 +- src/types/onyx/OriginalMessage.ts | 3 +++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 564f5b3648bf..7877f236c136 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -1714,7 +1714,8 @@ function getReimbursementQueuedActionMessage(reportAction: OnyxEntry, report: OnyxEntry | EmptyObject): string { const originalMessage = reportAction?.originalMessage as ReimbursementDeQueuedMessage | undefined; - const {amount, currency} = originalMessage; + const amount = originalMessage?.amount; + const currency = originalMessage?.currency; const formattedAmount = CurrencyUtils.convertToDisplayString(amount, currency); if (originalMessage?.cancellationReason === CONST.REPORT.CANCEL_PAYMENT_REASONS.ADMIN) { const payerOrApproverName = isExpenseReport(report) ? getPolicyName(report, false) : getDisplayNameForParticipant(report?.managerID) ?? ''; @@ -1728,7 +1729,7 @@ function getReimbursementDeQueuedActionMessage(reportAction: OnyxEntry Date: Mon, 22 Jan 2024 17:20:31 +0100 Subject: [PATCH 143/701] display amount correctly --- src/libs/ReportUtils.ts | 2 +- src/libs/actions/IOU.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 7877f236c136..ab30335d636f 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -1719,7 +1719,7 @@ function getReimbursementDeQueuedActionMessage(reportAction: OnyxEntry Date: Mon, 22 Jan 2024 15:36:15 -0800 Subject: [PATCH 144/701] update comment --- src/libs/ReportUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 78086c354de0..8e1826637c56 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -571,7 +571,7 @@ function getPolicyName(report: OnyxEntry | undefined | EmptyObject, retu const parentReport = getRootParentReport(report); - // Public rooms send back the policy name with the reportSummary, + // Rooms send back the policy name with the reportSummary, // since they can also be accessed by people who aren't in the workspace // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing const policyName = finalPolicy?.name || report?.policyName || report?.oldPolicyName || parentReport?.oldPolicyName || noPolicyFound; From d1bf3312ee5bae8aed3056f2c0d04579b281e1ce Mon Sep 17 00:00:00 2001 From: Tomasz Misiukiewicz Date: Tue, 23 Jan 2024 08:51:20 +0100 Subject: [PATCH 145/701] create empty troubleshooting page --- src/ROUTES.ts | 1 + src/SCREENS.ts | 1 + src/languages/en.ts | 1 + src/languages/es.ts | 1 + .../Navigation/AppNavigator/ModalStackNavigators.tsx | 1 + src/libs/Navigation/linkingConfig.ts | 4 ++++ src/pages/settings/AboutPage/AboutPage.js | 5 +++++ src/pages/settings/AboutPage/TroubleshootingPage.tsx | 12 ++++++++++++ 8 files changed, 26 insertions(+) create mode 100644 src/pages/settings/AboutPage/TroubleshootingPage.tsx diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 37003a09a0cd..83633b91ab80 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -143,6 +143,7 @@ const ROUTES = { SETTINGS_STATUS_CLEAR_AFTER: 'settings/profile/status/clear-after', SETTINGS_STATUS_CLEAR_AFTER_DATE: 'settings/profile/status/clear-after/date', SETTINGS_STATUS_CLEAR_AFTER_TIME: 'settings/profile/status/clear-after/time', + SETTINGS_TROUBLESHOOTING: 'settings/troubleshooting', KEYBOARD_SHORTCUTS: 'keyboard-shortcuts', diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 703cb309d641..66eeb6e2953b 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -30,6 +30,7 @@ const SCREENS = { CLOSE: 'Settings_Close', TWO_FACTOR_AUTH: 'Settings_TwoFactorAuth', REPORT_CARD_LOST_OR_DAMAGED: 'Settings_ReportCardLostOrDamaged', + TROUBLESHOOTING: 'Settings_Troubleshooting', PROFILE: { ROOT: 'Settings_Profile', diff --git a/src/languages/en.ts b/src/languages/en.ts index b6da38df21a0..e88a2cf1f9a6 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -780,6 +780,7 @@ export default { viewTheCode: 'View the code', viewOpenJobs: 'View open jobs', reportABug: 'Report a bug', + troubleshooting: 'Troubleshooting', }, appDownloadLinks: { android: { diff --git a/src/languages/es.ts b/src/languages/es.ts index 2478c8ba8bd2..e2937d023852 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -775,6 +775,7 @@ export default { viewTheCode: 'Ver código', viewOpenJobs: 'Ver trabajos disponibles', reportABug: 'Reportar un error', + troubleshooting: 'Solución de problemas', }, appDownloadLinks: { android: { diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx index b0f33af0ce2e..e70f51851d7c 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx @@ -206,6 +206,7 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../pages/settings/AboutPage/AboutPage').default as React.ComponentType, [SCREENS.SETTINGS.APP_DOWNLOAD_LINKS]: () => require('../../../pages/settings/AppDownloadLinks').default as React.ComponentType, [SCREENS.SETTINGS.LOUNGE_ACCESS]: () => require('../../../pages/settings/Profile/LoungeAccessPage').default as React.ComponentType, + [SCREENS.SETTINGS.TROUBLESHOOTING]: () => require('../../../pages/settings/AboutPage/TroubleshootingPage').default as React.ComponentType, [SCREENS.SETTINGS.WALLET.ROOT]: () => require('../../../pages/settings/Wallet/WalletPage').default as React.ComponentType, [SCREENS.SETTINGS.WALLET.CARDS_DIGITAL_DETAILS_UPDATE_ADDRESS]: () => require('../../../pages/settings/Profile/PersonalDetails/AddressPage').default as React.ComponentType, [SCREENS.SETTINGS.WALLET.DOMAIN_CARD]: () => require('../../../pages/settings/Wallet/ExpensifyCardPage').default as React.ComponentType, diff --git a/src/libs/Navigation/linkingConfig.ts b/src/libs/Navigation/linkingConfig.ts index 1a495e92eb80..2bc18f7cee03 100644 --- a/src/libs/Navigation/linkingConfig.ts +++ b/src/libs/Navigation/linkingConfig.ts @@ -228,6 +228,10 @@ const linkingConfig: LinkingOptions = { [SCREENS.SETTINGS.PROFILE.STATUS_CLEAR_AFTER_TIME]: { path: ROUTES.SETTINGS_STATUS_CLEAR_AFTER_TIME, }, + [SCREENS.SETTINGS.TROUBLESHOOTING]: { + path: ROUTES.SETTINGS_TROUBLESHOOTING, + exact: true, + }, [SCREENS.WORKSPACE.INITIAL]: { path: ROUTES.WORKSPACE_INITIAL.route, }, diff --git a/src/pages/settings/AboutPage/AboutPage.js b/src/pages/settings/AboutPage/AboutPage.js index a460c95cdfe6..d2895d51a172 100644 --- a/src/pages/settings/AboutPage/AboutPage.js +++ b/src/pages/settings/AboutPage/AboutPage.js @@ -77,6 +77,11 @@ function AboutPage(props) { }, link: CONST.UPWORK_URL, }, + { + translationKey: 'initialSettingsPage.aboutPage.troubleshooting', + icon: Expensicons.Info, + action: waitForNavigate(() => Navigation.navigate(ROUTES.SETTINGS_TROUBLESHOOTING)), + }, { translationKey: 'initialSettingsPage.aboutPage.reportABug', icon: Expensicons.Bug, diff --git a/src/pages/settings/AboutPage/TroubleshootingPage.tsx b/src/pages/settings/AboutPage/TroubleshootingPage.tsx new file mode 100644 index 000000000000..d2cb96a8610d --- /dev/null +++ b/src/pages/settings/AboutPage/TroubleshootingPage.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import {Text, View} from 'react-native'; + +const TroubleshootingPage = () => { + return ( + + TroubleshootingPage + + ); +}; + +export default TroubleshootingPage; From 8f38e48f862334f57fedd166168b8e1813f3d6cc Mon Sep 17 00:00:00 2001 From: Tomasz Misiukiewicz Date: Tue, 23 Jan 2024 09:14:00 +0100 Subject: [PATCH 146/701] move test features from preferences to troubleshooting --- .../AboutPage/TroubleshootingPage.tsx | 37 ++++++++++++++++--- .../settings/Preferences/PreferencesPage.js | 9 ----- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/pages/settings/AboutPage/TroubleshootingPage.tsx b/src/pages/settings/AboutPage/TroubleshootingPage.tsx index d2cb96a8610d..b4ae4e5198aa 100644 --- a/src/pages/settings/AboutPage/TroubleshootingPage.tsx +++ b/src/pages/settings/AboutPage/TroubleshootingPage.tsx @@ -1,12 +1,37 @@ import React from 'react'; -import {Text, View} from 'react-native'; +import {View} from 'react-native'; +import IllustratedHeaderPageLayout from '@components/IllustratedHeaderPageLayout'; +import LottieAnimations from '@components/LottieAnimations'; +import TestToolMenu from '@components/TestToolMenu'; +import useEnvironment from '@hooks/useEnvironment'; +import useLocalize from '@hooks/useLocalize'; +import useTheme from '@hooks/useTheme'; +import useThemeStyles from '@hooks/useThemeStyles'; +import Navigation from '@libs/Navigation/Navigation'; +import ROUTES from '@src/ROUTES'; +import SCREENS from '@src/SCREENS'; + +function TroubleshootingPage() { + const {translate} = useLocalize(); + const theme = useTheme(); + const styles = useThemeStyles(); + const {isProduction} = useEnvironment(); -const TroubleshootingPage = () => { return ( - - TroubleshootingPage - + Navigation.goBack(ROUTES.SETTINGS_ABOUT)} + backgroundColor={theme.PAGE_THEMES[SCREENS.SETTINGS.PREFERENCES.ROOT].backgroundColor} + illustration={LottieAnimations.PreferencesDJ} + > + {/* Enable additional test features in non-production environments */} + {!isProduction && ( + + + + )} + ); -}; +} export default TroubleshootingPage; diff --git a/src/pages/settings/Preferences/PreferencesPage.js b/src/pages/settings/Preferences/PreferencesPage.js index e98cd2b19c39..b2328722ac43 100755 --- a/src/pages/settings/Preferences/PreferencesPage.js +++ b/src/pages/settings/Preferences/PreferencesPage.js @@ -7,9 +7,7 @@ import IllustratedHeaderPageLayout from '@components/IllustratedHeaderPageLayout import LottieAnimations from '@components/LottieAnimations'; import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription'; import Switch from '@components/Switch'; -import TestToolMenu from '@components/TestToolMenu'; import Text from '@components/Text'; -import useEnvironment from '@hooks/useEnvironment'; import useLocalize from '@hooks/useLocalize'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; @@ -43,7 +41,6 @@ const defaultProps = { function PreferencesPage(props) { const theme = useTheme(); const styles = useThemeStyles(); - const {isProduction} = useEnvironment(); const {translate, preferredLocale} = useLocalize(); return ( @@ -90,12 +87,6 @@ function PreferencesPage(props) { description={translate('themePage.theme')} onPress={() => Navigation.navigate(ROUTES.SETTINGS_THEME)} /> - {/* Enable additional test features in non-production environments */} - {!isProduction && ( - - - - )} ); From 988e1d0cab64054ecdd8ad851ab3ab4ff303186c Mon Sep 17 00:00:00 2001 From: Tomasz Misiukiewicz Date: Tue, 23 Jan 2024 10:03:10 +0100 Subject: [PATCH 147/701] build troubleshooting menu --- src/languages/en.ts | 4 +++ src/languages/es.ts | 4 +++ .../AboutPage/TroubleshootingPage.tsx | 30 ++++++++++++++++++- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index e88a2cf1f9a6..49d639ff4d0d 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -793,6 +793,10 @@ export default { label: 'macOS', }, }, + troubleshooting: { + resetAndRefresh: 'Reset and refresh', + viewConsole: 'View console', + }, goToExpensifyClassic: 'Go to Expensify Classic', security: 'Security', signOut: 'Sign out', diff --git a/src/languages/es.ts b/src/languages/es.ts index e2937d023852..c26510645070 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -788,6 +788,10 @@ export default { label: 'macOS', }, }, + troubleshooting: { + resetAndRefresh: 'Restablecer y actualizar', + viewConsole: 'Ver consola', + }, security: 'Seguridad', signOut: 'Desconectar', signOutConfirmationText: 'Si cierras sesión perderás los cambios hechos mientras estabas desconectado', diff --git a/src/pages/settings/AboutPage/TroubleshootingPage.tsx b/src/pages/settings/AboutPage/TroubleshootingPage.tsx index b4ae4e5198aa..b2060b9f5654 100644 --- a/src/pages/settings/AboutPage/TroubleshootingPage.tsx +++ b/src/pages/settings/AboutPage/TroubleshootingPage.tsx @@ -1,7 +1,9 @@ -import React from 'react'; +import React, {useMemo} from 'react'; import {View} from 'react-native'; +import * as Expensicons from '@components/Icon/Expensicons'; import IllustratedHeaderPageLayout from '@components/IllustratedHeaderPageLayout'; import LottieAnimations from '@components/LottieAnimations'; +import MenuItemList from '@components/MenuItemList'; import TestToolMenu from '@components/TestToolMenu'; import useEnvironment from '@hooks/useEnvironment'; import useLocalize from '@hooks/useLocalize'; @@ -17,6 +19,28 @@ function TroubleshootingPage() { const styles = useThemeStyles(); const {isProduction} = useEnvironment(); + const menuItems = useMemo(() => { + const baseMenuItems = [ + { + translationKey: 'initialSettingsPage.troubleshooting.resetAndRefresh', + icon: Expensicons.RotateLeft, + action: () => console.log('ok'), + }, + { + translationKey: 'initialSettingsPage.troubleshooting.viewConsole', + icon: Expensicons.Monitor, + action: () => console.log('ok'), + }, + ]; + + return baseMenuItems.map((item) => ({ + key: item.translationKey, + title: translate(item.translationKey), + icon: item.icon, + onPress: item.action, + })); + }, [translate]); + return ( + {/* Enable additional test features in non-production environments */} {!isProduction && ( From db4932bbf457f4332865f5b179b78d8428131502 Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Tue, 23 Jan 2024 11:09:37 +0100 Subject: [PATCH 148/701] Temporary workaround --- src/components/VideoPlayer/BaseVideoPlayer.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index 2c8c0e106bbd..446b02f59366 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -77,7 +77,6 @@ function BaseVideoPlayer({ const [sourceURL] = useState(url.includes('blob:') ? url : addEncryptedAuthTokenToURL(url)); const [isPopoverVisible, setIsPopoverVisible] = useState(false); const [popoverAnchorPosition, setPopoverAnchorPosition] = useState({horizontal: 0, vertical: 0}); - const showPopoverMenu = (e) => { setPopoverAnchorPosition({horizontal: e.nativeEvent.pageX, vertical: e.nativeEvent.pageY}); setIsPopoverVisible(true); @@ -130,7 +129,6 @@ function BaseVideoPlayer({ originalParent.appendChild(sharedElement); }; }, [bindFunctions, currentVideoPlayerRef, currentlyPlayingURL, isSmallScreenWidth, originalParent, sharedElement, shouldUseSharedVideoElement, url]); - return ( <> @@ -181,7 +179,7 @@ function BaseVideoPlayer({ {isLoading && } - {!isLoading && (isPopoverVisible || isVideoHovered || isHovered) && ( + {!isLoading && (isPopoverVisible || isHovered) && ( Date: Tue, 23 Jan 2024 11:15:17 +0100 Subject: [PATCH 149/701] Cleanup attachment carousel --- .../Attachments/AttachmentCarousel/index.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/components/Attachments/AttachmentCarousel/index.js b/src/components/Attachments/AttachmentCarousel/index.js index 88090e997dd7..ef6a11f6e67c 100644 --- a/src/components/Attachments/AttachmentCarousel/index.js +++ b/src/components/Attachments/AttachmentCarousel/index.js @@ -49,6 +49,10 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, const initialPage = _.findIndex(attachmentsFromReport, compareImage); + if (_.isEqual(attachments, attachmentsFromReport)) { + return; + } + // Dismiss the modal when deleting an attachment during its display in preview. if (initialPage === -1 && _.find(attachments, compareImage)) { Navigation.dismissModal(); @@ -64,8 +68,7 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, onNavigate(attachmentsFromReport[initialPage]); } } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [reportActions, parentReportActions, compareImage]); + }, [attachments, reportActions, parentReportActions, compareImage, report.parentReportActionID, setDownloadButtonVisibility, onNavigate]); /** * Updates the page state when the user navigates between attachments @@ -137,16 +140,18 @@ function AttachmentCarousel({report, reportActions, parentReportActions, source, * @returns {JSX.Element} */ const renderItem = useCallback( - ({item}) => ( + ({item, index}) => ( setShouldShowArrows(!shouldShowArrows) : undefined} + onPress={canUseTouchScreen ? () => setShouldShowArrows((oldState) => !oldState) : undefined} isModalHovered={shouldShowArrows} + index={index} + activeIndex={page} /> ), - [activeSource, attachments.length, canUseTouchScreen, setShouldShowArrows, shouldShowArrows], + [activeSource, attachments.length, canUseTouchScreen, page, setShouldShowArrows, shouldShowArrows], ); return ( From b07c101dcc83fc0e6219bd5982657d692043a4bc Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Tue, 23 Jan 2024 11:16:37 +0100 Subject: [PATCH 150/701] Cleanup --- src/components/VideoPlayerContexts/PlaybackContext.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index 81415beed31a..87a094de47df 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -1,4 +1,3 @@ -import _ from 'lodash'; import PropTypes from 'prop-types'; import React, {useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react'; import useCurrentReportID from '@hooks/useCurrentReportID'; From 13ce1183139da74551268b0456a7c4d7db7e6410 Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Tue, 23 Jan 2024 11:25:33 +0100 Subject: [PATCH 151/701] Cleanup comments --- ios/NewExpensify.xcodeproj/project.pbxproj | 4 ++++ ios/Podfile.lock | 2 +- src/components/VideoPlayer/BaseVideoPlayer.js | 11 ++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ios/NewExpensify.xcodeproj/project.pbxproj b/ios/NewExpensify.xcodeproj/project.pbxproj index 6aa6bda784bf..c239f4da183f 100644 --- a/ios/NewExpensify.xcodeproj/project.pbxproj +++ b/ios/NewExpensify.xcodeproj/project.pbxproj @@ -667,6 +667,7 @@ "${PODS_XCFRAMEWORKS_BUILD_DIR}/Onfido/Onfido.framework/Onfido", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Plaid/LinkKit.framework/LinkKit", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -680,6 +681,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Onfido.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LinkKit.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -725,6 +727,7 @@ "${PODS_XCFRAMEWORKS_BUILD_DIR}/Onfido/Onfido.framework/Onfido", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Plaid/LinkKit.framework/LinkKit", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -738,6 +741,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Onfido.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LinkKit.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 1384d7472943..a93dd80755cb 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1330,4 +1330,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: c403784ee1fdf281bcc552696504207f3022cb66 -COCOAPODS: 1.14.3 +COCOAPODS: 1.12.1 diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index 446b02f59366..6b4f1eceb6df 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -61,6 +61,11 @@ function BaseVideoPlayer({ videoControlsStyle, shouldUseSharedVideoElement, shouldUseSmallVideoControls, + // TODO: investigate what is the root cause of the bug with unexpected video switching + // isVideoHovered caused a bug with unexpected video switching. We are investigating the root cause of the issue, + // but current workaround is just not to use it here for now. This causes not displaying the video controls when + // user hovers the mouse over the carousel arrows, but this UI bug feels much less troublesome for now. + // eslint-disable-next-line no-unused-vars isVideoHovered, }) { const styles = useThemeStyles(); @@ -140,8 +145,8 @@ function BaseVideoPlayer({ ref={sharedVideoPlayerParentRef} style={[styles.flex1]} /> - {/* We are adding transaprent absolute View between appended video component and conttrol buttons to enable - catching onMosue events from Attachment Carousel. Due to late appending React doesn't handle + {/* We are adding transparent absolute View between appended video component and control buttons to enable + catching onMouse events from Attachment Carousel. Due to late appending React doesn't handle element's events properly. */} @@ -164,7 +169,7 @@ function BaseVideoPlayer({ style={videoPlayerStyle || [styles.w100, styles.h100]} videoStyle={videoStyle || [styles.w100, styles.h100]} source={{ - uri: sourceURL, // testing video url: 'https://d23dyxeqlo5psv.cloudfront.net/big_buck_bunny.mp4', + uri: sourceURL, }} shouldPlay={false} useNativeControls={false} From d7bae12914d9365de9e381a91d493b3d0d6e82d1 Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Tue, 23 Jan 2024 11:33:35 +0100 Subject: [PATCH 152/701] Cleanup eslint issues --- src/components/VideoPlayer/IconButton.js | 8 ++++---- .../VideoPlayer/VideoPlayerControls/ProgressBar/index.js | 1 - src/components/VideoPlayer/index.native.js | 1 - src/components/VideoPlayerPreview/index.js | 6 ++++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js index 1ca91c0967ea..0441e2159c4f 100644 --- a/src/components/VideoPlayer/IconButton.js +++ b/src/components/VideoPlayer/IconButton.js @@ -5,8 +5,10 @@ import Icon from '@components/Icon'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; import Tooltip from '@components/Tooltip'; import useThemeStyles from '@hooks/useThemeStyles'; +import stylePropTypes from '@styles/stylePropTypes'; const propTypes = { + // use IconAsset as soon as it will be migrated to TS // eslint-disable-next-line react/forbid-prop-types src: PropTypes.any.isRequired, @@ -16,11 +18,9 @@ const propTypes = { tooltipText: PropTypes.string, - // eslint-disable-next-line react/forbid-prop-types, - style: PropTypes.object, + style: stylePropTypes, - // eslint-disable-next-line react/forbid-prop-types - hoverStyle: PropTypes.object, + hoverStyle: stylePropTypes, small: PropTypes.bool, diff --git a/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js b/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js index 7e68027cf402..7baf143786e8 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/ProgressBar/index.js @@ -6,7 +6,6 @@ import {usePlaybackContext} from '@components/VideoPlayerContexts/PlaybackContex import useThemeStyles from '@hooks/useThemeStyles'; const propTypes = { - // eslint-disable-next-line react/forbid-prop-types duration: PropTypes.number.isRequired, position: PropTypes.number.isRequired, diff --git a/src/components/VideoPlayer/index.native.js b/src/components/VideoPlayer/index.native.js index 79f949ecaf81..f668a276d7c4 100644 --- a/src/components/VideoPlayer/index.native.js +++ b/src/components/VideoPlayer/index.native.js @@ -9,7 +9,6 @@ function VideoPlayer(props, ref) { {...props} isVideoHovered shouldUseSharedVideoElement={false} - // eslint-disable-next-line react/prop-types videoControlsStyle={[{bottom: CONST.VIDEO_PLAYER.CONTROLS_POSITION.NATIVE}, props.style]} ref={ref} /> diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index 1f9097b6dd29..135e86c478da 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -14,8 +14,10 @@ import VideoPlayerThumbnail from './VideoPlayerThumbnail'; const propTypes = { videoUrl: PropTypes.string.isRequired, - // eslint-disable-next-line react/forbid-prop-types - videoDimensions: PropTypes.object, + videoDimensions: PropTypes.shape({ + width: PropTypes.number.isRequired, + height: PropTypes.number.isRequired, + }), thumbnailUrl: PropTypes.string, From 2a3de474ed9fb3293d0368d6ceb9f707429f8c55 Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Tue, 23 Jan 2024 13:53:14 +0100 Subject: [PATCH 153/701] Add video renderer --- src/CONST.ts | 3 ++ .../HTMLRenderers/VideoRenderer.js | 42 +++++++++++++++++++ .../HTMLEngineProvider/HTMLRenderers/index.js | 4 +- 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js diff --git a/src/CONST.ts b/src/CONST.ts index d58f33fe9519..28ca9fd9c749 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -927,6 +927,9 @@ const CONST = { ATTACHMENT_PREVIEW_ATTRIBUTE: 'src', ATTACHMENT_ORIGINAL_FILENAME_ATTRIBUTE: 'data-name', ATTACHMENT_LOCAL_URL_PREFIX: ['blob:', 'file:'], + ATTACHMENT_THUMBNAIL_URL_ATTRIBUTE: 'data-expensify-thumbnail-url', + ATTACHMENT_THUMBNAIL_WIDTH_ATTRIBUTE: 'data-expensify-width', + ATTACHMENT_THUMBNAIL_HEIGHT_ATTRIBUTE: 'data-expensify-height', ATTACHMENT_PICKER_TYPE: { FILE: 'file', diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js b/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js new file mode 100644 index 000000000000..89af4515780f --- /dev/null +++ b/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js @@ -0,0 +1,42 @@ +import React from 'react'; +import VideoPlayerPreview from '@components/VideoPlayerPreview'; +import {parseReportRouteParams} from '@libs/ReportUtils'; +import tryResolveUrlFromApiRoot from '@libs/tryResolveUrlFromApiRoot'; +import Navigation from '@navigation/Navigation'; +import CONST from '@src/CONST'; +import ROUTES from '@src/ROUTES'; +import htmlRendererPropTypes from './htmlRendererPropTypes'; + +const propTypes = { + ...htmlRendererPropTypes, +}; + +function VideoRenderer(props) { + const fileName = props.displayName; + const htmlAttribs = props.tnode.attributes; + const attrHref = htmlAttribs.href || htmlAttribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE] || ''; + const sourceURL = tryResolveUrlFromApiRoot(attrHref); + const thumbnailUrl = htmlAttribs[CONST.ATTACHMENT_THUMBNAIL_URL_ATTRIBUTE]; + const width = htmlAttribs[CONST.ATTACHMENT_THUMBNAIL_WIDTH_ATTRIBUTE]; + const height = htmlAttribs[CONST.ATTACHMENT_THUMBNAIL_HEIGHT_ATTRIBUTE]; + const activeRoute = Navigation.getActiveRoute(); + const {reportID} = parseReportRouteParams(activeRoute); + + return ( + { + const route = ROUTES.REPORT_ATTACHMENTS.getRoute(reportID, sourceURL); + Navigation.navigate(route); + }} + /> + ); +} + +VideoRenderer.propTypes = propTypes; +VideoRenderer.displayName = 'ImageRenderer'; + +export default VideoRenderer; diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/index.js b/src/components/HTMLEngineProvider/HTMLRenderers/index.js index 9aa1da9c4f48..166e0204a7f5 100644 --- a/src/components/HTMLEngineProvider/HTMLRenderers/index.js +++ b/src/components/HTMLEngineProvider/HTMLRenderers/index.js @@ -6,17 +6,17 @@ import MentionHereRenderer from './MentionHereRenderer'; import MentionUserRenderer from './MentionUserRenderer'; import NextStepEmailRenderer from './NextStepEmailRenderer'; import PreRenderer from './PreRenderer'; +import VideoRenderer from './VideoRenderer'; /** * This collection defines our custom renderers. It is a mapping from HTML tag type to the corresponding component. */ export default { // Standard HTML tag renderers - video: AnchorRenderer, a: AnchorRenderer, code: CodeRenderer, img: ImageRenderer, - video: AnchorRenderer, // temporary until we have a video player component + video: VideoRenderer, // Custom tag renderers edited: EditedRenderer, From 8da95f5fd7abe0cbf64a82a45b0e301b7493877e Mon Sep 17 00:00:00 2001 From: Tomasz Misiukiewicz Date: Tue, 23 Jan 2024 14:38:23 +0100 Subject: [PATCH 154/701] basic implementation of "reset and refresh" option --- src/hooks/useOnyxWipe.ts | 33 +++++++++++++++++++ .../AboutPage/TroubleshootingPage.tsx | 6 ++-- 2 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 src/hooks/useOnyxWipe.ts diff --git a/src/hooks/useOnyxWipe.ts b/src/hooks/useOnyxWipe.ts new file mode 100644 index 000000000000..331aac36c50e --- /dev/null +++ b/src/hooks/useOnyxWipe.ts @@ -0,0 +1,33 @@ +import Onyx from 'react-native-onyx'; +import * as App from '@userActions/App'; +import ONYXKEYS from '@src/ONYXKEYS'; +import type {OnyxKey} from '@src/ONYXKEYS'; + +function useOnyxWipe() { + const wipeOnyx = () => { + const keysToPreserve: OnyxKey[] = [ + ONYXKEYS.ACCOUNT, + ONYXKEYS.CURRENCY_LIST, + ONYXKEYS.DEVICE_ID, + ONYXKEYS.NVP_IS_FIRST_TIME_NEW_EXPENSIFY_USER, + ONYXKEYS.IS_LOADING_APP, + ONYXKEYS.IS_SIDEBAR_LOADED, + ONYXKEYS.LOGIN_LIST, + ONYXKEYS.NVP_PRIORITY_MODE, + ONYXKEYS.NVP_PREFERRED_LOCALE, + ONYXKEYS.PREFERRED_THEME, + ONYXKEYS.SESSION, + ONYXKEYS.NVP_TRY_FOCUS_MODE, + ONYXKEYS.USER, + ONYXKEYS.USER_WALLET, + ]; + + Onyx.clear(keysToPreserve).then(() => { + App.openApp(); + }); + }; + + return wipeOnyx; +} + +export default useOnyxWipe; diff --git a/src/pages/settings/AboutPage/TroubleshootingPage.tsx b/src/pages/settings/AboutPage/TroubleshootingPage.tsx index b2060b9f5654..fbcba7544d7a 100644 --- a/src/pages/settings/AboutPage/TroubleshootingPage.tsx +++ b/src/pages/settings/AboutPage/TroubleshootingPage.tsx @@ -7,6 +7,7 @@ import MenuItemList from '@components/MenuItemList'; import TestToolMenu from '@components/TestToolMenu'; import useEnvironment from '@hooks/useEnvironment'; import useLocalize from '@hooks/useLocalize'; +import useOnyxWipe from '@hooks/useOnyxWipe'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; @@ -18,13 +19,14 @@ function TroubleshootingPage() { const theme = useTheme(); const styles = useThemeStyles(); const {isProduction} = useEnvironment(); + const wipeOnyx = useOnyxWipe(); const menuItems = useMemo(() => { const baseMenuItems = [ { translationKey: 'initialSettingsPage.troubleshooting.resetAndRefresh', icon: Expensicons.RotateLeft, - action: () => console.log('ok'), + action: () => wipeOnyx(), }, { translationKey: 'initialSettingsPage.troubleshooting.viewConsole', @@ -39,7 +41,7 @@ function TroubleshootingPage() { icon: item.icon, onPress: item.action, })); - }, [translate]); + }, [translate, wipeOnyx]); return ( Date: Tue, 23 Jan 2024 16:32:47 +0100 Subject: [PATCH 155/701] Post merge cleanup --- ios/NewExpensify.xcodeproj/project.pbxproj | 382 ++++++++++----------- ios/Podfile.lock | 9 +- package-lock.json | 15 + 3 files changed, 197 insertions(+), 209 deletions(-) diff --git a/ios/NewExpensify.xcodeproj/project.pbxproj b/ios/NewExpensify.xcodeproj/project.pbxproj index acd08500fc11..3f8a956feb99 100644 --- a/ios/NewExpensify.xcodeproj/project.pbxproj +++ b/ios/NewExpensify.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 059DC4EFD39EF39437E6823D /* libPods-NotificationServiceExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A997AA8204EA3D90907FA80 /* libPods-NotificationServiceExtension.a */; }; 0C7C65547D7346EB923BE808 /* ExpensifyMono-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = E704648954784DDFBAADF568 /* ExpensifyMono-Regular.otf */; }; 0CDA8E34287DD650004ECBEC /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0CDA8E33287DD650004ECBEC /* AppDelegate.mm */; }; 0CDA8E35287DD650004ECBEC /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0CDA8E33287DD650004ECBEC /* AppDelegate.mm */; }; @@ -22,23 +21,23 @@ 26AF3C3540374A9FACB6C19E /* ExpensifyMono-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = DCF33E34FFEC48128CDD41D4 /* ExpensifyMono-Bold.otf */; }; 2A9F8CDA983746B0B9204209 /* ExpensifyNeue-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 52796131E6554494B2DDB056 /* ExpensifyNeue-Bold.otf */; }; 30581EA8AAFD4FCE88C5D191 /* ExpensifyNeue-Italic.otf in Resources */ = {isa = PBXBuildFile; fileRef = BF6A4C5167244B9FB8E4D4E3 /* ExpensifyNeue-Italic.otf */; }; - 3661A1374980E5F6804511FE /* libPods-NewExpensify-NewExpensifyTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 076FD9E41E08971BBF51D580 /* libPods-NewExpensify-NewExpensifyTests.a */; }; 374FB8D728A133FE000D84EF /* OriginImageRequestHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 374FB8D628A133FE000D84EF /* OriginImageRequestHandler.mm */; }; + 5B8996A7D8B007ECC41919E1 /* libPods-NewExpensify.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00D7E69E5ADD16FD4C44221B /* libPods-NewExpensify.a */; }; 7041848526A8E47D00E09F4D /* RCTStartupTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7041848426A8E47D00E09F4D /* RCTStartupTimer.m */; }; 7041848626A8E47D00E09F4D /* RCTStartupTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7041848426A8E47D00E09F4D /* RCTStartupTimer.m */; }; 70CF6E82262E297300711ADC /* BootSplash.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 70CF6E81262E297300711ADC /* BootSplash.storyboard */; }; + 716815DBCE9F49D420334791 /* libPods-NewExpensify-NewExpensifyTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B68AEB9429D8BB73F25A188C /* libPods-NewExpensify-NewExpensifyTests.a */; }; 7F5E81F06BCCF61AD02CEA06 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCD444BEDDB0AF1745B39049 /* ExpoModulesProvider.swift */; }; 7F9DD8DA2B2A445B005E3AFA /* ExpError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F9DD8D92B2A445B005E3AFA /* ExpError.swift */; }; 7FD73C9E2B23CE9500420AF3 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FD73C9D2B23CE9500420AF3 /* NotificationService.swift */; }; 7FD73CA22B23CE9500420AF3 /* NotificationServiceExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 7FD73C9B2B23CE9500420AF3 /* NotificationServiceExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 976CCB5F8C921482E6AEAE71 /* libPods-NewExpensify.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AB40AC8872A3DD6EF53D8B94 /* libPods-NewExpensify.a */; }; + B8A1CD44D011AD7AE180DE14 /* libPods-NotificationServiceExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B944D5699A54FD5197A63866 /* libPods-NotificationServiceExtension.a */; }; BDB853621F354EBB84E619C2 /* ExpensifyNewKansas-MediumItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = D2AFB39EC1D44BF9B91D3227 /* ExpensifyNewKansas-MediumItalic.otf */; }; DD79042B2792E76D004484B4 /* RCTBootSplash.m in Sources */ = {isa = PBXBuildFile; fileRef = DD79042A2792E76D004484B4 /* RCTBootSplash.m */; }; DDCB2E57F334C143AC462B43 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D20D83B0E39BA6D21761E72 /* ExpoModulesProvider.swift */; }; E51DC681C7DEE40AEBDDFBFE /* BuildFile in Frameworks */ = {isa = PBXBuildFile; }; E9DF872D2525201700607FDC /* AirshipConfig.plist in Resources */ = {isa = PBXBuildFile; fileRef = E9DF872C2525201700607FDC /* AirshipConfig.plist */; }; ED222ED90E074A5481A854FA /* ExpensifyNeue-BoldItalic.otf in Resources */ = {isa = PBXBuildFile; fileRef = 8B28D84EF339436DBD42A203 /* ExpensifyNeue-BoldItalic.otf */; }; - EEAE4F8907465429AA5B5520 /* libPods-NewExpensify.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AEFE6CD54912D427D19133C7 /* libPods-NewExpensify.a */; }; F0C450EA2705020500FD2970 /* colors.json in Resources */ = {isa = PBXBuildFile; fileRef = F0C450E92705020500FD2970 /* colors.json */; }; FF941A8D48F849269AB85C9A /* ExpensifyNewKansas-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 44BF435285B94E5B95F90994 /* ExpensifyNewKansas-Medium.otf */; }; /* End PBXBuildFile section */ @@ -76,80 +75,64 @@ /* Begin PBXFileReference section */ 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; + 00D7E69E5ADD16FD4C44221B /* libPods-NewExpensify.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NewExpensify.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356EE1AD99517003FC87E /* NewExpensifyTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NewExpensifyTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 076FD9E41E08971BBF51D580 /* libPods-NewExpensify-NewExpensifyTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NewExpensify-NewExpensifyTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 016DA61B5C80AB62C04F4D3F /* Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig"; sourceTree = ""; }; + 0BFF51686238403B4F82713B /* Pods-NewExpensify.debugproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debugproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debugproduction.xcconfig"; sourceTree = ""; }; 0CDA8E33287DD650004ECBEC /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = NewExpensify/AppDelegate.mm; sourceTree = ""; }; 0CDA8E36287DD6A0004ECBEC /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = NewExpensify/Images.xcassets; sourceTree = ""; }; 0F5BE0CD252686320097D869 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 0F5E534E263B73D5004CA14F /* EnvironmentChecker.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EnvironmentChecker.h; sourceTree = ""; }; 0F5E534F263B73FD004CA14F /* EnvironmentChecker.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EnvironmentChecker.m; sourceTree = ""; }; + 0FF2BC0D01CA2C62CE94229E /* Pods-NewExpensify.debugdevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debugdevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debugdevelopment.xcconfig"; sourceTree = ""; }; + 11B2BA236BB72A603FBB7B99 /* Pods-NotificationServiceExtension.releasedevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.releasedevelopment.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.releasedevelopment.xcconfig"; sourceTree = ""; }; + 12EB734390650799DB8AC627 /* Pods-NotificationServiceExtension.debugdevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.debugdevelopment.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.debugdevelopment.xcconfig"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* New Expensify Dev.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "New Expensify Dev.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = NewExpensify/AppDelegate.h; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = NewExpensify/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = NewExpensify/main.m; sourceTree = ""; }; 18D050DF262400AF000D658B /* BridgingFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BridgingFile.swift; sourceTree = ""; }; - 1A997AA8204EA3D90907FA80 /* libPods-NotificationServiceExtension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NotificationServiceExtension.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 1DDE5449979A136852B939B5 /* Pods-NewExpensify.release adhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.release adhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.release adhoc.xcconfig"; sourceTree = ""; }; - 25A4587E168FD67CF890B448 /* Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig"; sourceTree = ""; }; - 30FFBD291B71222A393D9CC9 /* Pods-NewExpensify.releasedevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releasedevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releasedevelopment.xcconfig"; sourceTree = ""; }; - 32181F72DC539FFD1D1F0CA4 /* Pods-NewExpensify.releaseproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releaseproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releaseproduction.xcconfig"; sourceTree = ""; }; - 34A8FDD1F9AA58B8F15C8380 /* Pods-NewExpensify.release production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.release production.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.release production.xcconfig"; sourceTree = ""; }; 374FB8D528A133A7000D84EF /* OriginImageRequestHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OriginImageRequestHandler.h; path = NewExpensify/OriginImageRequestHandler.h; sourceTree = ""; }; 374FB8D628A133FE000D84EF /* OriginImageRequestHandler.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = OriginImageRequestHandler.mm; path = NewExpensify/OriginImageRequestHandler.mm; sourceTree = ""; }; - 3BBA44B891E03FAB8255E6F1 /* Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig"; sourceTree = ""; }; 44BF435285B94E5B95F90994 /* ExpensifyNewKansas-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNewKansas-Medium.otf"; path = "../assets/fonts/native/ExpensifyNewKansas-Medium.otf"; sourceTree = ""; }; + 466D03D63F4B48E009C04FA3 /* Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig"; sourceTree = ""; }; 4D20D83B0E39BA6D21761E72 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-NewExpensify/ExpoModulesProvider.swift"; sourceTree = ""; }; - 4E9593A0EE1C84B8A8EC062F /* Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig"; sourceTree = ""; }; 52796131E6554494B2DDB056 /* ExpensifyNeue-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNeue-Bold.otf"; path = "../assets/fonts/native/ExpensifyNeue-Bold.otf"; sourceTree = ""; }; - 52E63EFD054926BFEA3EC143 /* Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig"; sourceTree = ""; }; - 68F4F270A8D1414FC14F356F /* Pods-NewExpensify.releaseadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releaseadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releaseadhoc.xcconfig"; sourceTree = ""; }; + 5A1F158A9A6CBE170EC19D9C /* Pods-NewExpensify.debugadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debugadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debugadhoc.xcconfig"; sourceTree = ""; }; 7041848326A8E40900E09F4D /* RCTStartupTimer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RCTStartupTimer.h; path = NewExpensify/RCTStartupTimer.h; sourceTree = ""; }; 7041848426A8E47D00E09F4D /* RCTStartupTimer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RCTStartupTimer.m; path = NewExpensify/RCTStartupTimer.m; sourceTree = ""; }; 70CF6E81262E297300711ADC /* BootSplash.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = BootSplash.storyboard; path = NewExpensify/BootSplash.storyboard; sourceTree = ""; }; - 75CABB0D0ABB0082FE0EB600 /* Pods-NewExpensify.release staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.release staging.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.release staging.xcconfig"; sourceTree = ""; }; - 76BE68DA894BB75DDFE278DC /* Pods-NewExpensify.releasedevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releasedevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releasedevelopment.xcconfig"; sourceTree = ""; }; - 7B318CF669A0F7FE948D5CED /* Pods-NewExpensify.debugadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debugadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debugadhoc.xcconfig"; sourceTree = ""; }; + 7312B334B72E8BE41A811FAB /* Pods-NewExpensify.releaseadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releaseadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releaseadhoc.xcconfig"; sourceTree = ""; }; 7F9DD8D92B2A445B005E3AFA /* ExpError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExpError.swift; sourceTree = ""; }; 7FD73C9B2B23CE9500420AF3 /* NotificationServiceExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = NotificationServiceExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 7FD73C9D2B23CE9500420AF3 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = ""; }; 7FD73C9F2B23CE9500420AF3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 8709DF3C8D91F0FC1581CDD7 /* Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig"; sourceTree = ""; }; + 802CB9E7554756F188C79554 /* Pods-NotificationServiceExtension.debugadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.debugadhoc.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.debugadhoc.xcconfig"; sourceTree = ""; }; 8B28D84EF339436DBD42A203 /* ExpensifyNeue-BoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNeue-BoldItalic.otf"; path = "../assets/fonts/native/ExpensifyNeue-BoldItalic.otf"; sourceTree = ""; }; - 8D3B36BF88E773E3C1A383FA /* Pods-NewExpensify.debug staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debug staging.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debug staging.xcconfig"; sourceTree = ""; }; - 90E08F0C8C924EDA018C8866 /* Pods-NotificationServiceExtension.releaseproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.releaseproduction.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.releaseproduction.xcconfig"; sourceTree = ""; }; - 96552D489D9F09B6A5ABD81B /* Pods-NewExpensify-NewExpensifyTests.release production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.release production.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.release production.xcconfig"; sourceTree = ""; }; - AB40AC8872A3DD6EF53D8B94 /* libPods-NewExpensify.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NewExpensify.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - AEFE6CD54912D427D19133C7 /* libPods-NewExpensify.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NewExpensify.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 96ADA7C82BA6A08C4A56344A /* Pods-NotificationServiceExtension.releaseproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.releaseproduction.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.releaseproduction.xcconfig"; sourceTree = ""; }; + 972584042DB4782F830B063A /* Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig"; sourceTree = ""; }; + 9EADA69D62F2E7B3D96E5B1C /* Pods-NewExpensify.releaseproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releaseproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releaseproduction.xcconfig"; sourceTree = ""; }; + AC9422F6C8A49AE701481721 /* Pods-NotificationServiceExtension.releaseadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.releaseadhoc.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.releaseadhoc.xcconfig"; sourceTree = ""; }; + B4CF7147C89747459BAC5BB7 /* Pods-NewExpensify.releasedevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releasedevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releasedevelopment.xcconfig"; sourceTree = ""; }; + B68AEB9429D8BB73F25A188C /* libPods-NewExpensify-NewExpensifyTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NewExpensify-NewExpensifyTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B944D5699A54FD5197A63866 /* libPods-NotificationServiceExtension.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NotificationServiceExtension.a"; sourceTree = BUILT_PRODUCTS_DIR; }; BCD444BEDDB0AF1745B39049 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-NewExpensify-NewExpensifyTests/ExpoModulesProvider.swift"; sourceTree = ""; }; - BD6E1BA27D6ABE0AC9D70586 /* Pods-NewExpensify-NewExpensifyTests.release development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.release development.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.release development.xcconfig"; sourceTree = ""; }; - BD8828A882E2D6B51362AAC3 /* Pods-NewExpensify.releaseadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releaseadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releaseadhoc.xcconfig"; sourceTree = ""; }; BF6A4C5167244B9FB8E4D4E3 /* ExpensifyNeue-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNeue-Italic.otf"; path = "../assets/fonts/native/ExpensifyNeue-Italic.otf"; sourceTree = ""; }; - C3788801E65E896FA7C77298 /* Pods-NewExpensify.debugproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debugproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debugproduction.xcconfig"; sourceTree = ""; }; - C3FF914C045A138C061D306E /* Pods-NotificationServiceExtension.debugproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.debugproduction.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.debugproduction.xcconfig"; sourceTree = ""; }; - CE2F84BEE9A6DCC228AF7E42 /* Pods-NewExpensify.debugproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debugproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debugproduction.xcconfig"; sourceTree = ""; }; - CECC4CBB97A55705A33BEA9E /* Pods-NewExpensify.debug development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debug development.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debug development.xcconfig"; sourceTree = ""; }; + CB32BB7E082E2450F04DA6E7 /* Pods-NotificationServiceExtension.debugproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.debugproduction.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.debugproduction.xcconfig"; sourceTree = ""; }; + D15262BE5F713CDB4DA576AE /* Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig"; sourceTree = ""; }; D2AFB39EC1D44BF9B91D3227 /* ExpensifyNewKansas-MediumItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNewKansas-MediumItalic.otf"; path = "../assets/fonts/native/ExpensifyNewKansas-MediumItalic.otf"; sourceTree = ""; }; - D3F458C994019E6A571461B7 /* Pods-NotificationServiceExtension.debugadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.debugadhoc.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.debugadhoc.xcconfig"; sourceTree = ""; }; - DB76E0D5C670190A0997C71E /* Pods-NewExpensify-NewExpensifyTests.debug production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debug production.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debug production.xcconfig"; sourceTree = ""; }; DCF33E34FFEC48128CDD41D4 /* ExpensifyMono-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyMono-Bold.otf"; path = "../assets/fonts/native/ExpensifyMono-Bold.otf"; sourceTree = ""; }; DD7904292792E76D004484B4 /* RCTBootSplash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RCTBootSplash.h; path = NewExpensify/RCTBootSplash.h; sourceTree = ""; }; DD79042A2792E76D004484B4 /* RCTBootSplash.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RCTBootSplash.m; path = NewExpensify/RCTBootSplash.m; sourceTree = ""; }; - E2C8555C607612465A7473F8 /* Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig"; sourceTree = ""; }; - E2F1036F70CBFE39E9352674 /* Pods-NewExpensify-NewExpensifyTests.debug development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debug development.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debug development.xcconfig"; sourceTree = ""; }; - E2F78D2A9B3DB96F0524690B /* Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig"; sourceTree = ""; }; - E61AD6D2DE65B6FB14945CDF /* Pods-NotificationServiceExtension.releaseadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.releaseadhoc.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.releaseadhoc.xcconfig"; sourceTree = ""; }; - E681F80D97E6E4BB26194246 /* Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig"; sourceTree = ""; }; E704648954784DDFBAADF568 /* ExpensifyMono-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyMono-Regular.otf"; path = "../assets/fonts/native/ExpensifyMono-Regular.otf"; sourceTree = ""; }; + E750C93A45B47BDC5149C5AA /* Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig"; sourceTree = ""; }; E9DF872C2525201700607FDC /* AirshipConfig.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AirshipConfig.plist; sourceTree = ""; }; - EA58D43E81BC49541F7FC7E7 /* Pods-NewExpensify.debugdevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debugdevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debugdevelopment.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; - F082D95EE104912B48EA98BA /* Pods-NotificationServiceExtension.releasedevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.releasedevelopment.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.releasedevelopment.xcconfig"; sourceTree = ""; }; F0C450E92705020500FD2970 /* colors.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = colors.json; path = ../colors.json; sourceTree = ""; }; F4F8A052A22040339996324B /* ExpensifyNeue-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNeue-Regular.otf"; path = "../assets/fonts/native/ExpensifyNeue-Regular.otf"; sourceTree = ""; }; - FBEBA6FBED49FB41D6F93896 /* Pods-NotificationServiceExtension.debugdevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationServiceExtension.debugdevelopment.xcconfig"; path = "Target Support Files/Pods-NotificationServiceExtension/Pods-NotificationServiceExtension.debugdevelopment.xcconfig"; sourceTree = ""; }; - FF0EADDA6099EF76253FA7AB /* Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig"; sourceTree = ""; }; + F98306ABF3F272DF04DF65CC /* Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -157,7 +140,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3661A1374980E5F6804511FE /* libPods-NewExpensify-NewExpensifyTests.a in Frameworks */, + 716815DBCE9F49D420334791 /* libPods-NewExpensify-NewExpensifyTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -166,9 +149,8 @@ buildActionMask = 2147483647; files = ( E51DC681C7DEE40AEBDDFBFE /* BuildFile in Frameworks */, - 976CCB5F8C921482E6AEAE71 /* libPods-NewExpensify.a in Frameworks */, E51DC681C7DEE40AEBDDFBFE /* BuildFile in Frameworks */, - EEAE4F8907465429AA5B5520 /* libPods-NewExpensify.a in Frameworks */, + 5B8996A7D8B007ECC41919E1 /* libPods-NewExpensify.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -176,7 +158,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 059DC4EFD39EF39437E6823D /* libPods-NotificationServiceExtension.a in Frameworks */, + B8A1CD44D011AD7AE180DE14 /* libPods-NotificationServiceExtension.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -222,10 +204,9 @@ children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, ED2971642150620600B7C4FE /* JavaScriptCore.framework */, - AEFE6CD54912D427D19133C7 /* libPods-NewExpensify.a */, - 1A997AA8204EA3D90907FA80 /* libPods-NotificationServiceExtension.a */, - AB40AC8872A3DD6EF53D8B94 /* libPods-NewExpensify.a */, - 076FD9E41E08971BBF51D580 /* libPods-NewExpensify-NewExpensifyTests.a */, + 00D7E69E5ADD16FD4C44221B /* libPods-NewExpensify.a */, + B68AEB9429D8BB73F25A188C /* libPods-NewExpensify-NewExpensifyTests.a */, + B944D5699A54FD5197A63866 /* libPods-NotificationServiceExtension.a */, ); name = Frameworks; sourceTree = ""; @@ -326,39 +307,24 @@ EC29677F0A49C2946A495A33 /* Pods */ = { isa = PBXGroup; children = ( - CECC4CBB97A55705A33BEA9E /* Pods-NewExpensify.debug development.xcconfig */, - 8D3B36BF88E773E3C1A383FA /* Pods-NewExpensify.debug staging.xcconfig */, - 1DDE5449979A136852B939B5 /* Pods-NewExpensify.release adhoc.xcconfig */, - 75CABB0D0ABB0082FE0EB600 /* Pods-NewExpensify.release staging.xcconfig */, - 34A8FDD1F9AA58B8F15C8380 /* Pods-NewExpensify.release production.xcconfig */, - E2F1036F70CBFE39E9352674 /* Pods-NewExpensify-NewExpensifyTests.debug development.xcconfig */, - DB76E0D5C670190A0997C71E /* Pods-NewExpensify-NewExpensifyTests.debug production.xcconfig */, - BD6E1BA27D6ABE0AC9D70586 /* Pods-NewExpensify-NewExpensifyTests.release development.xcconfig */, - 96552D489D9F09B6A5ABD81B /* Pods-NewExpensify-NewExpensifyTests.release production.xcconfig */, - CE2F84BEE9A6DCC228AF7E42 /* Pods-NewExpensify.debugproduction.xcconfig */, - 30FFBD291B71222A393D9CC9 /* Pods-NewExpensify.releasedevelopment.xcconfig */, - BD8828A882E2D6B51362AAC3 /* Pods-NewExpensify.releaseadhoc.xcconfig */, - 8709DF3C8D91F0FC1581CDD7 /* Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig */, - 25A4587E168FD67CF890B448 /* Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig */, - E2C8555C607612465A7473F8 /* Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig */, - FBEBA6FBED49FB41D6F93896 /* Pods-NotificationServiceExtension.debugdevelopment.xcconfig */, - D3F458C994019E6A571461B7 /* Pods-NotificationServiceExtension.debugadhoc.xcconfig */, - C3FF914C045A138C061D306E /* Pods-NotificationServiceExtension.debugproduction.xcconfig */, - F082D95EE104912B48EA98BA /* Pods-NotificationServiceExtension.releasedevelopment.xcconfig */, - E61AD6D2DE65B6FB14945CDF /* Pods-NotificationServiceExtension.releaseadhoc.xcconfig */, - 90E08F0C8C924EDA018C8866 /* Pods-NotificationServiceExtension.releaseproduction.xcconfig */, - EA58D43E81BC49541F7FC7E7 /* Pods-NewExpensify.debugdevelopment.xcconfig */, - 7B318CF669A0F7FE948D5CED /* Pods-NewExpensify.debugadhoc.xcconfig */, - C3788801E65E896FA7C77298 /* Pods-NewExpensify.debugproduction.xcconfig */, - 76BE68DA894BB75DDFE278DC /* Pods-NewExpensify.releasedevelopment.xcconfig */, - 68F4F270A8D1414FC14F356F /* Pods-NewExpensify.releaseadhoc.xcconfig */, - 32181F72DC539FFD1D1F0CA4 /* Pods-NewExpensify.releaseproduction.xcconfig */, - 3BBA44B891E03FAB8255E6F1 /* Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig */, - 4E9593A0EE1C84B8A8EC062F /* Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig */, - 52E63EFD054926BFEA3EC143 /* Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig */, - E681F80D97E6E4BB26194246 /* Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig */, - FF0EADDA6099EF76253FA7AB /* Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig */, - E2F78D2A9B3DB96F0524690B /* Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig */, + 0FF2BC0D01CA2C62CE94229E /* Pods-NewExpensify.debugdevelopment.xcconfig */, + 5A1F158A9A6CBE170EC19D9C /* Pods-NewExpensify.debugadhoc.xcconfig */, + 0BFF51686238403B4F82713B /* Pods-NewExpensify.debugproduction.xcconfig */, + B4CF7147C89747459BAC5BB7 /* Pods-NewExpensify.releasedevelopment.xcconfig */, + 7312B334B72E8BE41A811FAB /* Pods-NewExpensify.releaseadhoc.xcconfig */, + 9EADA69D62F2E7B3D96E5B1C /* Pods-NewExpensify.releaseproduction.xcconfig */, + E750C93A45B47BDC5149C5AA /* Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig */, + F98306ABF3F272DF04DF65CC /* Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig */, + 016DA61B5C80AB62C04F4D3F /* Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig */, + 972584042DB4782F830B063A /* Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig */, + D15262BE5F713CDB4DA576AE /* Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig */, + 466D03D63F4B48E009C04FA3 /* Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig */, + 12EB734390650799DB8AC627 /* Pods-NotificationServiceExtension.debugdevelopment.xcconfig */, + 802CB9E7554756F188C79554 /* Pods-NotificationServiceExtension.debugadhoc.xcconfig */, + CB32BB7E082E2450F04DA6E7 /* Pods-NotificationServiceExtension.debugproduction.xcconfig */, + 11B2BA236BB72A603FBB7B99 /* Pods-NotificationServiceExtension.releasedevelopment.xcconfig */, + AC9422F6C8A49AE701481721 /* Pods-NotificationServiceExtension.releaseadhoc.xcconfig */, + 96ADA7C82BA6A08C4A56344A /* Pods-NotificationServiceExtension.releaseproduction.xcconfig */, ); path = Pods; sourceTree = ""; @@ -370,13 +336,13 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "NewExpensifyTests" */; buildPhases = ( - A3D1E02743106A34295E533A /* [CP] Check Pods Manifest.lock */, + D128CAF2A1070B0F2B3F12E4 /* [CP] Check Pods Manifest.lock */, 04B99F6AA578E2A877802F05 /* [Expo] Configure project */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - 822809AAD6B368BF9F9BA00E /* [CP] Embed Pods Frameworks */, - 5CC6761AF98472E1C710DB80 /* [CP] Copy Pods Resources */, + 0555D63BB34CA9E5921170A4 /* [CP] Embed Pods Frameworks */, + CE4668E6E6809DEA0626B5B3 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -392,7 +358,7 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "NewExpensify" */; buildPhases = ( - 468C095F6D4C79E555B55A4F /* [CP] Check Pods Manifest.lock */, + 5DDD2A7C43E9B381CD68A232 /* [CP] Check Pods Manifest.lock */, FD10A7F022414F080027D42C /* Start Packager */, 5CF45ABA52C0BB0D7B9D139A /* [Expo] Configure project */, 13B07F871A680F5B00A75B9A /* Sources */, @@ -400,10 +366,10 @@ 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - CB8E29994749C6913C3FA05D /* [CP] Embed Pods Frameworks */, - F6E16E41F88F567A8CDD037C /* [CP] Copy Pods Resources */, - 04A2B3BE14CFE4961BE987E8 /* [CP-User] [RNFB] Core Configuration */, - 2D8F47B51A8E72FBA2BA4874 /* [CP-User] [RNFB] Crashlytics Configuration */, + 50067B6C26F88BAB5F0B478A /* [CP] Embed Pods Frameworks */, + 4E1386759AEE7859543483C9 /* [CP] Copy Pods Resources */, + EEA310C4723D0EF8581FAA1D /* [CP-User] [RNFB] Core Configuration */, + A9A9BDEB11952C562415526C /* [CP-User] [RNFB] Crashlytics Configuration */, ); buildRules = ( ); @@ -419,7 +385,7 @@ isa = PBXNativeTarget; buildConfigurationList = 7FD73CAA2B23CE9500420AF3 /* Build configuration list for PBXNativeTarget "NotificationServiceExtension" */; buildPhases = ( - F3D35ED760B830954BD8A7BB /* [CP] Check Pods Manifest.lock */, + 7B34459944ACFD30D85D5F85 /* [CP] Check Pods Manifest.lock */, 7FD73C972B23CE9500420AF3 /* Sources */, 7FD73C982B23CE9500420AF3 /* Frameworks */, 7FD73C992B23CE9500420AF3 /* Resources */, @@ -533,19 +499,6 @@ shellPath = /bin/sh; shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios relative | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli')\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n"; }; - 04A2B3BE14CFE4961BE987E8 /* [CP-User] [RNFB] Core Configuration */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", - ); - name = "[CP-User] [RNFB] Core Configuration"; - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n _JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"').read())['${_JSON_ROOT}'])))' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; - }; 04B99F6AA578E2A877802F05 /* [Expo] Configure project */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -565,49 +518,51 @@ shellPath = /bin/sh; shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-NewExpensify-NewExpensifyTests/expo-configure-project.sh\"\n"; }; - 2D8F47B51A8E72FBA2BA4874 /* [CP-User] [RNFB] Crashlytics Configuration */ = { + 0555D63BB34CA9E5921170A4 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", - "$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", - ); - name = "[CP-User] [RNFB] Crashlytics Configuration"; - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; - }; - 468C095F6D4C79E555B55A4F /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/MapboxMaps/MapboxMaps.framework", + "${BUILT_PRODUCTS_DIR}/Turf/Turf.framework", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxCommon/MapboxCommon.framework/MapboxCommon", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxCoreMaps/MapboxCoreMaps.framework/MapboxCoreMaps", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxMobileEvents/MapboxMobileEvents.framework/MapboxMobileEvents", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/Onfido/Onfido.framework/Onfido", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/Plaid/LinkKit.framework/LinkKit", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", ); + name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-NewExpensify-checkManifestLockResult.txt", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxMaps.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Turf.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxCommon.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxCoreMaps.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxMobileEvents.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Onfido.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LinkKit.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 5CC6761AF98472E1C710DB80 /* [CP] Copy Pods Resources */ = { + 4E1386759AEE7859543483C9 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-resources.sh", + "${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipAutomationResources.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipCoreResources.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipExtendedActionsResources.bundle", @@ -628,35 +583,16 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 5CF45ABA52C0BB0D7B9D139A /* [Expo] Configure project */ = { + 50067B6C26F88BAB5F0B478A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - ); - name = "[Expo] Configure project"; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-NewExpensify/expo-configure-project.sh\"\n"; - }; - 822809AAD6B368BF9F9BA00E /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-frameworks.sh", + "${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-frameworks.sh", "${BUILT_PRODUCTS_DIR}/MapboxMaps/MapboxMaps.framework", "${BUILT_PRODUCTS_DIR}/Turf/Turf.framework", "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion", @@ -685,70 +621,51 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - A3D1E02743106A34295E533A /* [CP] Check Pods Manifest.lock */ = { + 5CF45ABA52C0BB0D7B9D139A /* [Expo] Configure project */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", ); - name = "[CP] Check Pods Manifest.lock"; + name = "[Expo] Configure project"; outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-NewExpensify-NewExpensifyTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; + shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-NewExpensify/expo-configure-project.sh\"\n"; }; - CB8E29994749C6913C3FA05D /* [CP] Embed Pods Frameworks */ = { + 5DDD2A7C43E9B381CD68A232 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/MapboxMaps/MapboxMaps.framework", - "${BUILT_PRODUCTS_DIR}/Turf/Turf.framework", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxCommon/MapboxCommon.framework/MapboxCommon", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxCoreMaps/MapboxCoreMaps.framework/MapboxCoreMaps", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/MapboxMobileEvents/MapboxMobileEvents.framework/MapboxMobileEvents", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/Onfido/Onfido.framework/Onfido", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/Plaid/LinkKit.framework/LinkKit", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxMaps.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Turf.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxCommon.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxCoreMaps.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxMobileEvents.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Onfido.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LinkKit.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + "$(DERIVED_FILE_DIR)/Pods-NewExpensify-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - F3D35ED760B830954BD8A7BB /* [CP] Check Pods Manifest.lock */ = { + 7B34459944ACFD30D85D5F85 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -770,13 +687,27 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - F6E16E41F88F567A8CDD037C /* [CP] Copy Pods Resources */ = { + A9A9BDEB11952C562415526C /* [CP-User] [RNFB] Crashlytics Configuration */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-resources.sh", + "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", + "$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", + ); + name = "[CP-User] [RNFB] Crashlytics Configuration"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\nif [[ ${PODS_ROOT} ]]; then\n echo \"info: Exec FirebaseCrashlytics Run from Pods\"\n \"${PODS_ROOT}/FirebaseCrashlytics/run\"\nelse\n echo \"info: Exec FirebaseCrashlytics Run from framework\"\n \"${PROJECT_DIR}/FirebaseCrashlytics.framework/run\"\nfi\n"; + }; + CE4668E6E6809DEA0626B5B3 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipAutomationResources.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipCoreResources.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/Airship/AirshipExtendedActionsResources.bundle", @@ -797,9 +728,44 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NewExpensify/Pods-NewExpensify-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; + D128CAF2A1070B0F2B3F12E4 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-NewExpensify-NewExpensifyTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + EEA310C4723D0EF8581FAA1D /* [CP-User] [RNFB] Core Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", + ); + name = "[CP-User] [RNFB] Core Configuration"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n _JSON_OUTPUT_BASE64=$(python -c 'import json,sys,base64;print(base64.b64encode(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"').read())['${_JSON_ROOT}'])))' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; + }; FD10A7F022414F080027D42C /* Start Packager */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -875,7 +841,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* DebugDevelopment */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3BBA44B891E03FAB8255E6F1 /* Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig */; + baseConfigurationReference = E750C93A45B47BDC5149C5AA /* Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -905,7 +871,7 @@ }; 00E356F71AD99517003FC87E /* ReleaseDevelopment */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E681F80D97E6E4BB26194246 /* Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig */; + baseConfigurationReference = 972584042DB4782F830B063A /* Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -932,7 +898,7 @@ }; 13B07F941A680F5B00A75B9A /* DebugDevelopment */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EA58D43E81BC49541F7FC7E7 /* Pods-NewExpensify.debugdevelopment.xcconfig */; + baseConfigurationReference = 0FF2BC0D01CA2C62CE94229E /* Pods-NewExpensify.debugdevelopment.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIconDev; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -971,7 +937,7 @@ }; 13B07F951A680F5B00A75B9A /* ReleaseDevelopment */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 76BE68DA894BB75DDFE278DC /* Pods-NewExpensify.releasedevelopment.xcconfig */; + baseConfigurationReference = B4CF7147C89747459BAC5BB7 /* Pods-NewExpensify.releasedevelopment.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIconDev; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -1008,7 +974,7 @@ }; 7FD73CA42B23CE9500420AF3 /* DebugDevelopment */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FBEBA6FBED49FB41D6F93896 /* Pods-NotificationServiceExtension.debugdevelopment.xcconfig */; + baseConfigurationReference = 12EB734390650799DB8AC627 /* Pods-NotificationServiceExtension.debugdevelopment.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -1096,7 +1062,7 @@ }; 7FD73CA52B23CE9500420AF3 /* DebugAdHoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D3F458C994019E6A571461B7 /* Pods-NotificationServiceExtension.debugadhoc.xcconfig */; + baseConfigurationReference = 802CB9E7554756F188C79554 /* Pods-NotificationServiceExtension.debugadhoc.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -1183,7 +1149,7 @@ }; 7FD73CA62B23CE9500420AF3 /* DebugProduction */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C3FF914C045A138C061D306E /* Pods-NotificationServiceExtension.debugproduction.xcconfig */; + baseConfigurationReference = CB32BB7E082E2450F04DA6E7 /* Pods-NotificationServiceExtension.debugproduction.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -1271,7 +1237,7 @@ }; 7FD73CA72B23CE9500420AF3 /* ReleaseDevelopment */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F082D95EE104912B48EA98BA /* Pods-NotificationServiceExtension.releasedevelopment.xcconfig */; + baseConfigurationReference = 11B2BA236BB72A603FBB7B99 /* Pods-NotificationServiceExtension.releasedevelopment.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -1352,7 +1318,7 @@ }; 7FD73CA82B23CE9500420AF3 /* ReleaseAdHoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E61AD6D2DE65B6FB14945CDF /* Pods-NotificationServiceExtension.releaseadhoc.xcconfig */; + baseConfigurationReference = AC9422F6C8A49AE701481721 /* Pods-NotificationServiceExtension.releaseadhoc.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -1432,7 +1398,7 @@ }; 7FD73CA92B23CE9500420AF3 /* ReleaseProduction */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 90E08F0C8C924EDA018C8866 /* Pods-NotificationServiceExtension.releaseproduction.xcconfig */; + baseConfigurationReference = 96ADA7C82BA6A08C4A56344A /* Pods-NotificationServiceExtension.releaseproduction.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; @@ -1729,7 +1695,7 @@ }; CF9AF93F29EE9276001FA527 /* DebugProduction */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C3788801E65E896FA7C77298 /* Pods-NewExpensify.debugproduction.xcconfig */; + baseConfigurationReference = 0BFF51686238403B4F82713B /* Pods-NewExpensify.debugproduction.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -1767,7 +1733,7 @@ }; CF9AF94029EE9276001FA527 /* DebugProduction */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 52E63EFD054926BFEA3EC143 /* Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig */; + baseConfigurationReference = 016DA61B5C80AB62C04F4D3F /* Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -1871,7 +1837,7 @@ }; CF9AF94529EE927A001FA527 /* DebugAdHoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7B318CF669A0F7FE948D5CED /* Pods-NewExpensify.debugadhoc.xcconfig */; + baseConfigurationReference = 5A1F158A9A6CBE170EC19D9C /* Pods-NewExpensify.debugadhoc.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIconAdHoc; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -1909,7 +1875,7 @@ }; CF9AF94629EE927A001FA527 /* DebugAdHoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4E9593A0EE1C84B8A8EC062F /* Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig */; + baseConfigurationReference = F98306ABF3F272DF04DF65CC /* Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -2007,7 +1973,7 @@ }; CF9AF94829EE928E001FA527 /* ReleaseProduction */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 32181F72DC539FFD1D1F0CA4 /* Pods-NewExpensify.releaseproduction.xcconfig */; + baseConfigurationReference = 9EADA69D62F2E7B3D96E5B1C /* Pods-NewExpensify.releaseproduction.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -2043,7 +2009,7 @@ }; CF9AF94929EE928E001FA527 /* ReleaseProduction */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E2F78D2A9B3DB96F0524690B /* Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig */; + baseConfigurationReference = 466D03D63F4B48E009C04FA3 /* Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -2139,7 +2105,7 @@ }; CF9AF94E29EE9293001FA527 /* ReleaseAdHoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 68F4F270A8D1414FC14F356F /* Pods-NewExpensify.releaseadhoc.xcconfig */; + baseConfigurationReference = 7312B334B72E8BE41A811FAB /* Pods-NewExpensify.releaseadhoc.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIconAdHoc; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -2175,7 +2141,7 @@ }; CF9AF94F29EE9293001FA527 /* ReleaseAdHoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FF0EADDA6099EF76253FA7AB /* Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig */; + baseConfigurationReference = D15262BE5F713CDB4DA576AE /* Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 776dcb544ee6..596a15eda627 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -32,6 +32,9 @@ PODS: - React-Core - CocoaAsyncSocket (7.6.5) - DoubleConversion (1.1.6) + - EXAV (13.4.1): + - ExpoModulesCore + - ReactCommon/turbomodule/core - Expo (50.0.0-preview.7): - ExpoModulesCore - ExpoImage (1.10.1): @@ -1458,6 +1461,7 @@ DEPENDENCIES: - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - BVLinearGradient (from `../node_modules/react-native-linear-gradient`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - EXAV (from `../node_modules/expo-av/ios`) - Expo (from `../node_modules/expo`) - ExpoImage (from `../node_modules/expo-image/ios`) - ExpoModulesCore (from `../node_modules/expo-modules-core`) @@ -1636,6 +1640,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-linear-gradient" DoubleConversion: :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + EXAV: + :path: "../node_modules/expo-av/ios" Expo: :path: "../node_modules/expo" ExpoImage: @@ -1831,6 +1837,7 @@ SPEC CHECKSUMS: BVLinearGradient: 421743791a59d259aec53f4c58793aad031da2ca CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 DoubleConversion: fea03f2699887d960129cc54bba7e52542b6f953 + EXAV: f393dfc0b28214d62855a31e06eb21d426d6e2da Expo: cd2dc043dd1cc3d9e8e4e035fb9a41b421e8f13f ExpoImage: 1cdaa65a6a70bb01067e21ad1347ff2d973885f5 ExpoModulesCore: 01c0abfa6cd9c41c4bd76d8a1a079e6b591db10f @@ -1967,7 +1974,7 @@ SPEC CHECKSUMS: SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 Turf: 13d1a92d969ca0311bbc26e8356cca178ce95da2 VisionCamera: 7d13aae043ffb38b224a0f725d1e23ca9c190fe7 - Yoga: e64aa65de36c0832d04e8c7bd614396c77a80047 + Yoga: 13c8ef87792450193e117976337b8527b49e8c03 PODFILE CHECKSUM: 0ccbb4f2406893c6e9f266dc1e7470dcd72885d2 diff --git a/package-lock.json b/package-lock.json index 3e5ae6e8d58c..d66525c15b87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,6 +53,7 @@ "domhandler": "^4.3.0", "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#c6bb3cfa56d12af9fa02e2bfc729646f5b64ef44", "expo": "^50.0.0-preview.7", + "expo-av": "~13.4.1", "expo-image": "1.10.1", "fbjs": "^3.0.2", "htmlparser2": "^7.2.0", @@ -31215,6 +31216,14 @@ "md5-file": "^3.2.3" } }, + "node_modules/expo-av": { + "version": "13.4.1", + "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-13.4.1.tgz", + "integrity": "sha512-0K8QEFzZeNGrppzYUs8wOtjOyPPkxzlVYbEHM6WzIQOG1uYYNOJkJB3aQHVFXHmz+AzoHwMrUjcschofwaMNeg==", + "peerDependencies": { + "expo": "*" + } + }, "node_modules/expo-constants": { "version": "15.4.2", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-15.4.2.tgz", @@ -76162,6 +76171,12 @@ "md5-file": "^3.2.3" } }, + "expo-av": { + "version": "13.4.1", + "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-13.4.1.tgz", + "integrity": "sha512-0K8QEFzZeNGrppzYUs8wOtjOyPPkxzlVYbEHM6WzIQOG1uYYNOJkJB3aQHVFXHmz+AzoHwMrUjcschofwaMNeg==", + "requires": {} + }, "expo-constants": { "version": "15.4.2", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-15.4.2.tgz", From 8db82ceb9c37805f28f272654ce005364417b53b Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Tue, 23 Jan 2024 16:34:03 +0100 Subject: [PATCH 156/701] Post merge cleanup --- src/components/PopoverMenu.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/PopoverMenu.tsx b/src/components/PopoverMenu.tsx index d25699b70422..1041197ccc40 100644 --- a/src/components/PopoverMenu.tsx +++ b/src/components/PopoverMenu.tsx @@ -10,6 +10,7 @@ import useWindowDimensions from '@hooks/useWindowDimensions'; import CONST from '@src/CONST'; import type {AnchorPosition} from '@src/styles'; import type IconAsset from '@src/types/utils/IconAsset'; +import * as Expensicons from './Icon/Expensicons'; import MenuItem from './MenuItem'; import type {AnchorAlignment} from './Popover/types'; import PopoverWithMeasuredContent from './PopoverWithMeasuredContent'; From 826a937482a3fe73807fcf5bb0ce86edc0a41ffb Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Tue, 23 Jan 2024 08:35:43 -0800 Subject: [PATCH 157/701] add ReportUtils.canInviteToReport --- src/libs/ReportUtils.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 8e1826637c56..8ced1596a274 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -5,6 +5,7 @@ import lodashEscape from 'lodash/escape'; import lodashFindLastIndex from 'lodash/findLastIndex'; import lodashIntersection from 'lodash/intersection'; import lodashIsEqual from 'lodash/isEqual'; +import lodashIsEmpty from 'lodash/isEmpty'; import type {OnyxCollection, OnyxEntry, OnyxUpdate} from 'react-native-onyx'; import Onyx from 'react-native-onyx'; import type {ValueOf} from 'type-fest'; @@ -968,6 +969,15 @@ function canCreateTaskInReport(report: OnyxEntry): boolean { return true; } +/** + * Returns whether it's possible to invite to a report. + * Only chat reports that aren't DMs can be invited to. (threads in DMs are eligible for invites) + * + */ +function canInviteToReport(report: OnyxEntry): boolean { + return isChatReport(report) && (!isDM(report) || !lodashIsEmpty(getParentReport(report))); +} + /** * Returns true if there are any Expensify accounts (i.e. with domain 'expensify.com') in the set of accountIDs * by cross-referencing the accountIDs with personalDetails. From bac2b7393c417674cf61091c81c93c3c34a9e55e Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Tue, 23 Jan 2024 08:35:59 -0800 Subject: [PATCH 158/701] allow invites in threads in DMs --- src/pages/ReportDetailsPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/ReportDetailsPage.js b/src/pages/ReportDetailsPage.js index ff9ed62c6a65..5319b57faa85 100644 --- a/src/pages/ReportDetailsPage.js +++ b/src/pages/ReportDetailsPage.js @@ -123,7 +123,7 @@ function ReportDetailsPage(props) { } }, }); - } else if (isUserCreatedPolicyRoom && (!participants.length || !isPolicyMember) && !props.report.parentReportID) { + } else if (ReportUtils.canInviteToReport(props.report)) { items.push({ key: CONST.REPORT_DETAILS_MENU_ITEM.INVITE, translationKey: 'common.invite', From 68d0308bd9440a4ede8b9ce5b2359705feec9907 Mon Sep 17 00:00:00 2001 From: Jasper Huang Date: Tue, 23 Jan 2024 08:37:00 -0800 Subject: [PATCH 159/701] remove unused --- src/libs/ReportUtils.ts | 9 --------- src/pages/ReportDetailsPage.js | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 8ced1596a274..82dc0e92f771 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -969,15 +969,6 @@ function canCreateTaskInReport(report: OnyxEntry): boolean { return true; } -/** - * Returns whether it's possible to invite to a report. - * Only chat reports that aren't DMs can be invited to. (threads in DMs are eligible for invites) - * - */ -function canInviteToReport(report: OnyxEntry): boolean { - return isChatReport(report) && (!isDM(report) || !lodashIsEmpty(getParentReport(report))); -} - /** * Returns true if there are any Expensify accounts (i.e. with domain 'expensify.com') in the set of accountIDs * by cross-referencing the accountIDs with personalDetails. diff --git a/src/pages/ReportDetailsPage.js b/src/pages/ReportDetailsPage.js index 5319b57faa85..ff9ed62c6a65 100644 --- a/src/pages/ReportDetailsPage.js +++ b/src/pages/ReportDetailsPage.js @@ -123,7 +123,7 @@ function ReportDetailsPage(props) { } }, }); - } else if (ReportUtils.canInviteToReport(props.report)) { + } else if (isUserCreatedPolicyRoom && (!participants.length || !isPolicyMember) && !props.report.parentReportID) { items.push({ key: CONST.REPORT_DETAILS_MENU_ITEM.INVITE, translationKey: 'common.invite', From 7d7c4dad4bcd283490af0176538a1d36d95f86ae Mon Sep 17 00:00:00 2001 From: Mykhailo Kravchenko Date: Tue, 23 Jan 2024 19:38:17 +0100 Subject: [PATCH 160/701] extend routes --- src/ROUTES.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/ROUTES.ts b/src/ROUTES.ts index 37003a09a0cd..df26c7cf27eb 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -156,8 +156,9 @@ const ROUTES = { getRoute: (reportID: string) => `r/${reportID}` as const, }, EDIT_REQUEST: { - route: 'r/:threadReportID/edit/:field', - getRoute: (threadReportID: string, field: ValueOf) => `r/${threadReportID}/edit/${field}` as const, + route: 'r/:threadReportID/edit/:field/:tagIndex?', + getRoute: (threadReportID: string, field: ValueOf, tagIndex?: number) => + `r/${threadReportID}/edit/${field}${tagIndex !== undefined ? `/${tagIndex}` : ''}` as const, }, EDIT_CURRENCY_REQUEST: { route: 'r/:threadReportID/edit/currency', @@ -279,8 +280,8 @@ const ROUTES = { getRoute: (iouType: string, reportID = '') => `${iouType}/new/category/${reportID}` as const, }, MONEY_REQUEST_TAG: { - route: ':iouType/new/tag/:reportID?', - getRoute: (iouType: string, reportID = '') => `${iouType}/new/tag/${reportID}` as const, + route: ':iouType/new/tag/:tagIndex/:reportID?', + getRoute: (iouType: string, tagIndex: number, reportID = '') => `${iouType}/new/tag/${tagIndex}/${reportID}` as const, }, MONEY_REQUEST_MERCHANT: { route: ':iouType/new/merchant/:reportID?', @@ -365,9 +366,9 @@ const ROUTES = { getUrlWithBackToParam(`${action}/${iouType}/scan/${transactionID}/${reportID}`, backTo), }, MONEY_REQUEST_STEP_TAG: { - route: 'create/:iouType/tag/:transactionID/:reportID', - getRoute: (iouType: ValueOf, transactionID: string, reportID: string, backTo = '') => - getUrlWithBackToParam(`create/${iouType}/tag/${transactionID}/${reportID}`, backTo), + route: 'create/:iouType/tag/:tagIndex/:transactionID/:reportID', + getRoute: (iouType: ValueOf, tagIndex: number, transactionID: string, reportID: string, backTo = '') => + getUrlWithBackToParam(`create/${iouType}/tag/${tagIndex}/${transactionID}/${reportID}`, backTo), }, MONEY_REQUEST_STEP_WAYPOINT: { route: ':action/:iouType/waypoint/:transactionID/:reportID/:pageIndex', From 6f723e2fa83b5abf47440018702a54c4aaa1f3bf Mon Sep 17 00:00:00 2001 From: Mykhailo Kravchenko Date: Tue, 23 Jan 2024 19:38:25 +0100 Subject: [PATCH 161/701] clarify types --- src/types/onyx/PolicyTag.ts | 10 ++++++++-- src/types/onyx/index.ts | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/types/onyx/PolicyTag.ts b/src/types/onyx/PolicyTag.ts index 58a21dcf4df5..8765cff5c575 100644 --- a/src/types/onyx/PolicyTag.ts +++ b/src/types/onyx/PolicyTag.ts @@ -10,6 +10,12 @@ type PolicyTag = { 'GL Code': string; }; -type PolicyTags = Record; +type PolicyTagList = { + name: string; + required: boolean; + tags: PolicyTags; +}; + +type PolicyTags = Record; -export type {PolicyTag, PolicyTags}; +export type {PolicyTag, PolicyTags, PolicyTagList}; diff --git a/src/types/onyx/index.ts b/src/types/onyx/index.ts index e6d6c27fc818..e5c730c1541a 100644 --- a/src/types/onyx/index.ts +++ b/src/types/onyx/index.ts @@ -31,7 +31,7 @@ import type {PolicyCategories, PolicyCategory} from './PolicyCategory'; import type {PolicyMembers} from './PolicyMember'; import type PolicyMember from './PolicyMember'; import type PolicyReportField from './PolicyReportField'; -import type {PolicyTag, PolicyTags} from './PolicyTag'; +import type {PolicyTag, PolicyTagList, PolicyTags} from './PolicyTag'; import type PrivatePersonalDetails from './PrivatePersonalDetails'; import type RecentlyUsedCategories from './RecentlyUsedCategories'; import type RecentlyUsedReportFields from './RecentlyUsedReportFields'; @@ -105,6 +105,7 @@ export type { PolicyMembers, PolicyTag, PolicyTags, + PolicyTagList, PrivatePersonalDetails, RecentWaypoint, RecentlyUsedCategories, From 430a72b05fa07dada9aa195064a1ef0b56ce1573 Mon Sep 17 00:00:00 2001 From: Mykhailo Kravchenko Date: Tue, 23 Jan 2024 19:38:56 +0100 Subject: [PATCH 162/701] improve getTag of TransactionUtils --- src/libs/TransactionUtils.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libs/TransactionUtils.ts b/src/libs/TransactionUtils.ts index 1229e700d297..6296024dc0f4 100644 --- a/src/libs/TransactionUtils.ts +++ b/src/libs/TransactionUtils.ts @@ -364,7 +364,11 @@ function getBillable(transaction: OnyxEntry): boolean { /** * Return the tag from the transaction. This "tag" field has no "modified" complement. */ -function getTag(transaction: OnyxEntry): string { +function getTag(transaction: OnyxEntry, tagIndex?: number): string { + if (tagIndex !== undefined) { + return transaction?.tag?.split(':')[tagIndex] ?? ''; + } + return transaction?.tag ?? ''; } From 7881a0c5a86efdbe41cf16af8c4a5ca560eeb11f Mon Sep 17 00:00:00 2001 From: Mykhailo Kravchenko Date: Tue, 23 Jan 2024 19:39:18 +0100 Subject: [PATCH 163/701] Implement new logic of PolicyUtils --- src/libs/PolicyUtils.ts | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/src/libs/PolicyUtils.ts b/src/libs/PolicyUtils.ts index ec7346e26f80..164a46ecfab6 100644 --- a/src/libs/PolicyUtils.ts +++ b/src/libs/PolicyUtils.ts @@ -3,7 +3,7 @@ import type {OnyxCollection, OnyxEntry} from 'react-native-onyx'; import type {ValueOf} from 'type-fest'; import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; -import type {PersonalDetailsList, Policy, PolicyMembers, PolicyTag, PolicyTags} from '@src/types/onyx'; +import type {PersonalDetailsList, Policy, PolicyMembers, PolicyTagList, PolicyTags} from '@src/types/onyx'; import type {EmptyObject} from '@src/types/utils/EmptyObject'; import {isEmptyObject} from '@src/types/utils/EmptyObject'; @@ -157,42 +157,40 @@ function getIneligibleInvitees(policyMembers: OnyxEntry, personal } /** - * Gets the tag from policy tags, defaults to the first if no key is provided. + * Gets a tag name from policy tags based on a tag index. */ -function getTag(policyTags: OnyxEntry, tagKey?: keyof typeof policyTags): PolicyTag | undefined | EmptyObject { - if (isEmptyObject(policyTags)) { - return {}; +function getTagListName(policyTags: OnyxEntry, tagIndex: number) { + if (Object.keys(policyTags ?? {})?.length === 0) { + return ''; } - const policyTagKey = tagKey ?? Object.keys(policyTags ?? {})[0]; + const policyTagKeys = Object.keys(policyTags ?? {})[tagIndex] ?? []; - return policyTags?.[policyTagKey] ?? {}; + return policyTags?.[policyTagKeys]?.name ?? ''; } /** - * Gets the first tag name from policy tags. + * Gets all tag lists of a policy */ -function getTagListName(policyTags: OnyxEntry) { - if (Object.keys(policyTags ?? {})?.length === 0) { - return ''; +function getTagLists(policyTags: OnyxCollection): PolicyTagList[] { + if (isEmptyObject(policyTags)) { + return []; } - const policyTagKeys = Object.keys(policyTags ?? {})[0] ?? []; - - return policyTags?.[policyTagKeys]?.name ?? ''; + return Object.values(policyTags).filter((policyTagList): policyTagList is PolicyTagList => policyTagList !== null); } /** - * Gets the tags of a policy for a specific key. Defaults to the first tag if no key is provided. + * Gets a tag list of a policy by a tag index */ -function getTagList(policyTags: OnyxCollection, tagKey: string) { - if (Object.keys(policyTags ?? {})?.length === 0) { +function getTagList(policyTags: OnyxCollection, tagIndex: number): PolicyTagList | EmptyObject { + const tagLists = getTagLists(policyTags); + + if (tagLists.length === 0) { return {}; } - const policyTagKey = tagKey ?? Object.keys(policyTags ?? {})[0]; - - return policyTags?.[policyTagKey]?.tags ?? {}; + return tagLists[tagIndex]; } function isPendingDeletePolicy(policy: OnyxEntry): boolean { @@ -218,7 +216,7 @@ export { isPolicyAdmin, getMemberAccountIDsForWorkspace, getIneligibleInvitees, - getTag, + getTagLists, getTagListName, getTagList, isPendingDeletePolicy, From 8a26e3779b2146c02ec51dcbf9c6cdc80ebcd0fb Mon Sep 17 00:00:00 2001 From: Mykhailo Kravchenko Date: Tue, 23 Jan 2024 19:39:56 +0100 Subject: [PATCH 164/701] Implement new logic of IOU --- src/libs/actions/IOU.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index 7ee752a1f0ef..db65aa77549d 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -231,17 +231,28 @@ function resetMoneyRequestCategory_temporaryForRefactor(transactionID) { /* * @param {String} transactionID + * @param {String} reportTags * @param {String} tag + * @param {Number} tagIndex */ -function setMoneyRequestTag_temporaryForRefactor(transactionID, tag) { - Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {tag}); +function setMoneyRequestTag_temporaryForRefactor(transactionID, reportTags, tag, tagIndex) { + const splittedReportTags = reportTags.split(CONST.COLON); + splittedReportTags[tagIndex] = tag; + + Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, { + tag: splittedReportTags.join(CONST.COLON), + }); } /* * @param {String} transactionID + * @param {String} reportTags + * @param {String} tag */ -function resetMoneyRequestTag_temporaryForRefactor(transactionID) { - Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {tag: null}); +function resetMoneyRequestTag_temporaryForRefactor(transactionID, reportTags, tag) { + Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, { + tag: reportTags.replace(tag, '').replace(/:*$/, ''), + }); } /** @@ -743,8 +754,9 @@ function getMoneyRequestInformation( ); const optimisticPolicyRecentlyUsedCategories = Policy.buildOptimisticPolicyRecentlyUsedCategories(iouReport.policyID, category); - + // TODO: Adapt const optimisticPolicyRecentlyUsedTags = Policy.buildOptimisticPolicyRecentlyUsedTags(iouReport.policyID, tag); + // const optimisticPolicyRecentlyUsedTags = {}; // If there is an existing transaction (which is the case for distance requests), then the data from the existing transaction // needs to be manually merged into the optimistic transaction. This is because buildOnyxDataForMoneyRequest() uses `Onyx.set()` for the transaction From 02ae4cc330e5b07391a271fa60c3c9d2ee492ab2 Mon Sep 17 00:00:00 2001 From: Mykhailo Kravchenko Date: Tue, 23 Jan 2024 19:40:38 +0100 Subject: [PATCH 165/701] Implement new logic to components --- ...oraryForRefactorRequestConfirmationList.js | 45 +++++++++---------- .../ReportActionItem/MoneyRequestView.js | 43 +++++++++--------- src/components/TagPicker/index.js | 10 ++--- .../TagPicker/tagPickerPropTypes.js | 3 ++ src/libs/ModifiedExpenseMessage.ts | 2 +- src/pages/EditRequestPage.js | 23 ++++++---- src/pages/EditRequestTagPage.js | 6 ++- src/pages/iou/MoneyRequestTagPage.js | 2 +- .../step/IOURequestStepConfirmation.js | 1 - .../iou/request/step/IOURequestStepTag.js | 40 ++++++++++------- 10 files changed, 97 insertions(+), 78 deletions(-) diff --git a/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js b/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js index 36d424ea28f2..dd067901483a 100755 --- a/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js +++ b/src/components/MoneyTemporaryForRefactorRequestConfirmationList.js @@ -78,9 +78,6 @@ const propTypes = { /** IOU category */ iouCategory: PropTypes.string, - /** IOU tag */ - iouTag: PropTypes.string, - /** IOU isBillable */ iouIsBillable: PropTypes.bool, @@ -175,7 +172,6 @@ const defaultProps = { onSelectParticipant: () => {}, iouType: CONST.IOU.TYPE.REQUEST, iouCategory: '', - iouTag: '', iouIsBillable: false, onToggleBillable: () => {}, payeePersonalDetails: null, @@ -215,7 +211,6 @@ function MoneyTemporaryForRefactorRequestConfirmationList({ iouCurrencyCode, iouIsBillable, iouMerchant, - iouTag, iouType, isDistanceRequest, isEditingSplitBill, @@ -268,13 +263,11 @@ function MoneyTemporaryForRefactorRequestConfirmationList({ const shouldShowDate = shouldShowSmartScanFields || isDistanceRequest; const shouldShowMerchant = shouldShowSmartScanFields && !isDistanceRequest; - // Fetches the first tag list of the policy - const policyTag = PolicyUtils.getTag(policyTags); - const policyTagList = lodashGet(policyTag, 'tags', {}); - const policyTagListName = lodashGet(policyTag, 'name', translate('common.tag')); + const policyTagList = useMemo(() => PolicyUtils.getTagLists(policyTags), [policyTags]); + const policyTagValueList = useMemo(() => _.flatten(_.map(policyTagList, ({tags}) => _.values(tags))), [policyTagList]); // A flag for showing the tags field - const shouldShowTags = isPolicyExpenseChat && OptionsListUtils.hasEnabledOptions(_.values(policyTagList)); + const shouldShowTags = isPolicyExpenseChat && OptionsListUtils.hasEnabledOptions(policyTagValueList); // A flag for showing tax rate const shouldShowTax = isPolicyExpenseChat && policy && policy.isTaxTrackingEnabled; @@ -796,21 +789,23 @@ function MoneyTemporaryForRefactorRequestConfirmationList({ rightLabel={canUseViolations && Boolean(policy.requiresCategory) ? translate('common.required') : ''} /> )} - {shouldShowTags && ( - - Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_TAG.getRoute(iouType, transaction.transactionID, reportID, Navigation.getActiveRouteWithoutParams())) - } - style={[styles.moneyRequestMenuItem]} - disabled={didConfirm} - interactive={!isReadOnly} - rightLabel={canUseViolations && Boolean(policy.requiresTag) ? translate('common.required') : ''} - /> - )} + {shouldShowTags && + _.map(policyTagList, ({name}, index) => ( + + Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_TAG.getRoute(iouType, index, transaction.transactionID, reportID, Navigation.getActiveRouteWithoutParams())) + } + style={[styles.moneyRequestMenuItem]} + disabled={didConfirm} + interactive={!isReadOnly} + rightLabel={canUseViolations && Boolean(policy.requiresTag) ? translate('common.required') : ''} + /> + ))} {shouldShowTax && ( PolicyUtils.getTagLists(policyTags), [policyTags]); + const policyTagValueList = useMemo(() => _.flatten(_.map(policyTagList, ({tags}) => _.values(tags))), [policyTagList]); // Flags for showing categories and tags const shouldShowCategory = isPolicyExpenseChat && (transactionCategory || OptionsListUtils.hasEnabledOptions(lodashValues(policyCategories))); - const shouldShowTag = isPolicyExpenseChat && (transactionTag || OptionsListUtils.hasEnabledOptions(lodashValues(policyTagsList))); + const shouldShowTag = isPolicyExpenseChat && (transactionTag || OptionsListUtils.hasEnabledOptions(lodashValues(policyTagValueList))); const shouldShowBillable = isPolicyExpenseChat && (transactionBillable || !lodashGet(policy, 'disabledFields.defaultBillable', true)); const {getViolationsForField} = useViolations(transactionViolations); @@ -346,20 +346,24 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate {canUseViolations && } )} - {shouldShowTag && ( - - Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.TAG))} - brickRoadIndicator={hasViolations('tag') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} - /> - {canUseViolations && } - - )} + {shouldShowTag && + _.map(policyTagList, ({name}, index) => ( + + Navigation.navigate(ROUTES.EDIT_REQUEST.getRoute(report.reportID, CONST.EDIT_REQUEST_FIELD.TAG, index))} + brickRoadIndicator={hasViolations('tag') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : ''} + /> + {canUseViolations && } + + ))} {isCardTransaction && ( )} - {shouldShowBillable && ( <> diff --git a/src/components/TagPicker/index.js b/src/components/TagPicker/index.js index e258472eae93..9989447f9118 100644 --- a/src/components/TagPicker/index.js +++ b/src/components/TagPicker/index.js @@ -12,15 +12,15 @@ import CONST from '@src/CONST'; import ONYXKEYS from '@src/ONYXKEYS'; import {defaultProps, propTypes} from './tagPickerPropTypes'; -function TagPicker({selectedTag, tag, policyTags, policyRecentlyUsedTags, shouldShowDisabledAndSelectedOption, insets, onSubmit}) { +function TagPicker({selectedTag, tag, tagIndex, policyTags, policyRecentlyUsedTags, shouldShowDisabledAndSelectedOption, insets, onSubmit}) { const styles = useThemeStyles(); const StyleUtils = useStyleUtils(); const {translate} = useLocalize(); const [searchValue, setSearchValue] = useState(''); const policyRecentlyUsedTagsList = lodashGet(policyRecentlyUsedTags, tag, []); - const policyTagList = PolicyUtils.getTagList(policyTags, tag); - const policyTagsCount = _.size(_.filter(policyTagList, (policyTag) => policyTag.enabled)); + const policyTagList = PolicyUtils.getTagList(policyTags, tagIndex); + const policyTagsCount = _.size(_.filter(policyTagList.tags, (policyTag) => policyTag.enabled)); const isTagsCountBelowThreshold = policyTagsCount < CONST.TAG_LIST_THRESHOLD; const shouldShowTextInput = !isTagsCountBelowThreshold; @@ -41,10 +41,10 @@ function TagPicker({selectedTag, tag, policyTags, policyRecentlyUsedTags, should const enabledTags = useMemo(() => { if (!shouldShowDisabledAndSelectedOption) { - return policyTagList; + return policyTagList.tags; } const selectedNames = _.map(selectedOptions, (s) => s.name); - const tags = [...selectedOptions, ..._.filter(policyTagList, (policyTag) => policyTag.enabled && !selectedNames.includes(policyTag.name))]; + const tags = [...selectedOptions, ..._.filter(policyTagList.tags, (policyTag) => policyTag.enabled && !selectedNames.includes(policyTag.name))]; return tags; }, [selectedOptions, policyTagList, shouldShowDisabledAndSelectedOption]); diff --git a/src/components/TagPicker/tagPickerPropTypes.js b/src/components/TagPicker/tagPickerPropTypes.js index b98f7f6ef8e9..d74bad59a557 100644 --- a/src/components/TagPicker/tagPickerPropTypes.js +++ b/src/components/TagPicker/tagPickerPropTypes.js @@ -12,6 +12,9 @@ const propTypes = { /** The name of tag list we are getting tags for */ tag: PropTypes.string.isRequired, + // TODO: Comment + tagIndex: PropTypes.number.isRequired, + /** Callback to submit the selected tag */ onSubmit: PropTypes.func.isRequired, diff --git a/src/libs/ModifiedExpenseMessage.ts b/src/libs/ModifiedExpenseMessage.ts index ff5ad9327191..a754bf857431 100644 --- a/src/libs/ModifiedExpenseMessage.ts +++ b/src/libs/ModifiedExpenseMessage.ts @@ -102,7 +102,7 @@ function getForReportAction(reportAction: ReportAction): string { const reportActionOriginalMessage = reportAction.originalMessage as ExpenseOriginalMessage | undefined; const policyID = ReportUtils.getReportPolicyID(reportAction.reportID) ?? ''; const policyTags = allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {}; - const policyTagListName = PolicyUtils.getTagListName(policyTags) || Localize.translateLocal('common.tag'); + const policyTagListName = PolicyUtils.getTagListName(policyTags, 0) || Localize.translateLocal('common.tag'); const removalFragments: string[] = []; const setFragments: string[] = []; diff --git a/src/pages/EditRequestPage.js b/src/pages/EditRequestPage.js index 606d3da1ddb9..f9f6561d07f9 100644 --- a/src/pages/EditRequestPage.js +++ b/src/pages/EditRequestPage.js @@ -1,8 +1,9 @@ import lodashGet from 'lodash/get'; import lodashValues from 'lodash/values'; import PropTypes from 'prop-types'; -import React, {useCallback, useEffect} from 'react'; +import React, {useCallback, useEffect, useMemo} from 'react'; import {withOnyx} from 'react-native-onyx'; +import _ from 'underscore'; import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView'; import categoryPropTypes from '@components/categoryPropTypes'; import ScreenWrapper from '@components/ScreenWrapper'; @@ -40,6 +41,9 @@ const propTypes = { /** reportID for the "transaction thread" */ threadReportID: PropTypes.string, + + // TODO: Comment + tagIndex: PropTypes.string, }), }).isRequired, @@ -77,16 +81,18 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep comment: transactionDescription, merchant: transactionMerchant, category: transactionCategory, - tag: transactionTag, + // tag: reportTags, } = ReportUtils.getTransactionDetails(transaction); const defaultCurrency = lodashGet(route, 'params.currency', '') || transactionCurrency; const fieldToEdit = lodashGet(route, ['params', 'field'], ''); + const rawTagIndex = lodashGet(route, ['params', 'tagIndex'], undefined); + const tagIndex = +rawTagIndex; - // For now, it always defaults to the first tag of the policy - const policyTag = PolicyUtils.getTag(policyTags); - const policyTagList = lodashGet(policyTag, 'tags', {}); - const tagListName = PolicyUtils.getTagListName(policyTags); + const transactionTag = TransactionUtils.getTag(transaction, +tagIndex); + const policyTagList = useMemo(() => PolicyUtils.getTagLists(policyTags), [policyTags]); + const policyTagValueList = useMemo(() => _.flatten(_.map(policyTagList, ({tags}) => _.values(tags))), [policyTagList]); + const policyTagListName = PolicyUtils.getTagListName(policyTags, +tagIndex); // A flag for verifying that the current report is a sub-report of a workspace chat const isPolicyExpenseChat = ReportUtils.isGroupPolicy(report); @@ -95,7 +101,7 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep const shouldShowCategories = isPolicyExpenseChat && (transactionCategory || OptionsListUtils.hasEnabledOptions(lodashValues(policyCategories))); // A flag for showing the tags page - const shouldShowTags = isPolicyExpenseChat && (transactionTag || OptionsListUtils.hasEnabledOptions(lodashValues(policyTagList))); + const shouldShowTags = isPolicyExpenseChat && (transactionTag || OptionsListUtils.hasEnabledOptions(policyTagValueList)); // Decides whether to allow or disallow editing a money request useEffect(() => { @@ -251,7 +257,8 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep return ( diff --git a/src/pages/EditRequestTagPage.js b/src/pages/EditRequestTagPage.js index 8ecc4a953065..398b6adc39d5 100644 --- a/src/pages/EditRequestTagPage.js +++ b/src/pages/EditRequestTagPage.js @@ -18,11 +18,14 @@ const propTypes = { /** The tag name to which the default tag belongs to */ tagName: PropTypes.string.isRequired, + // TODO: Comment + tagIndex: PropTypes.number.isRequired, + /** Callback to fire when the Save button is pressed */ onSubmit: PropTypes.func.isRequired, }; -function EditRequestTagPage({defaultTag, policyID, tagName, onSubmit}) { +function EditRequestTagPage({defaultTag, policyID, tagName, tagIndex, onSubmit}) { const styles = useThemeStyles(); const {translate} = useLocalize(); @@ -46,6 +49,7 @@ function EditRequestTagPage({defaultTag, policyID, tagName, onSubmit}) { { Navigation.goBack(ROUTES.MONEY_REQUEST_CONFIRMATION.getRoute(iouType, report.reportID)); diff --git a/src/pages/iou/request/step/IOURequestStepConfirmation.js b/src/pages/iou/request/step/IOURequestStepConfirmation.js index 9df2564ae38d..5021c1996a7c 100644 --- a/src/pages/iou/request/step/IOURequestStepConfirmation.js +++ b/src/pages/iou/request/step/IOURequestStepConfirmation.js @@ -349,7 +349,6 @@ function IOURequestStepConfirmation({ iouIsBillable={transaction.billable} onToggleBillable={setBillable} iouCategory={transaction.category} - iouTag={transaction.tag} onConfirm={createTransaction} onSendMoney={sendMoney} onSelectParticipant={addNewParticipant} diff --git a/src/pages/iou/request/step/IOURequestStepTag.js b/src/pages/iou/request/step/IOURequestStepTag.js index 7e2ccbe1a9dd..f272042ff16d 100644 --- a/src/pages/iou/request/step/IOURequestStepTag.js +++ b/src/pages/iou/request/step/IOURequestStepTag.js @@ -1,6 +1,5 @@ import React from 'react'; import {withOnyx} from 'react-native-onyx'; -import _ from 'underscore'; import TagPicker from '@components/TagPicker'; import tagPropTypes from '@components/tagPropTypes'; import Text from '@components/Text'; @@ -10,6 +9,7 @@ import useThemeStyles from '@hooks/useThemeStyles'; import compose from '@libs/compose'; import Navigation from '@libs/Navigation/Navigation'; import * as PolicyUtils from '@libs/PolicyUtils'; +import * as TransactionUtils from '@libs/TransactionUtils'; import reportPropTypes from '@pages/reportPropTypes'; import * as IOU from '@userActions/IOU'; import ONYXKEYS from '@src/ONYXKEYS'; @@ -44,16 +44,17 @@ function IOURequestStepTag({ policyTags, report, route: { - params: {transactionID, backTo}, + params: {tagIndex: rawTagIndex, transactionID, backTo}, }, - transaction: {tag}, + transaction, }) { const styles = useThemeStyles(); const {translate} = useLocalize(); - // Fetches the first tag list of the policy - const tagListKey = _.first(_.keys(policyTags)); - const policyTagListName = PolicyUtils.getTagListName(policyTags) || translate('common.tag'); + const tagIndex = +rawTagIndex; + const reportTags = TransactionUtils.getTag(transaction); + const tag = TransactionUtils.getTag(transaction, tagIndex); + const policyTagListName = PolicyUtils.getTagListName(policyTags, tagIndex); const navigateBack = () => { Navigation.goBack(backTo || ROUTES.HOME); @@ -64,10 +65,10 @@ function IOURequestStepTag({ * @param {String} selectedTag.searchText */ const updateTag = (selectedTag) => { - if (selectedTag.searchText === tag) { - IOU.resetMoneyRequestTag_temporaryForRefactor(transactionID); + if (tag === selectedTag.searchText) { + IOU.resetMoneyRequestTag_temporaryForRefactor(transactionID, reportTags, selectedTag.searchText); } else { - IOU.setMoneyRequestTag_temporaryForRefactor(transactionID, selectedTag.searchText); + IOU.setMoneyRequestTag_temporaryForRefactor(transactionID, reportTags, selectedTag.searchText, tagIndex); } navigateBack(); }; @@ -79,13 +80,20 @@ function IOURequestStepTag({ shouldShowWrapper testID={IOURequestStepTag.displayName} > - {translate('iou.tagSelection', {tagName: policyTagListName})} - + {({insets}) => ( + <> + {translate('iou.tagSelection', {tagName: policyTagListName})} + + + + )} ); } From c9de6f5c3eac55f6230849904a47588dab27cba0 Mon Sep 17 00:00:00 2001 From: Tomasz Misiukiewicz Date: Wed, 24 Jan 2024 09:17:41 +0100 Subject: [PATCH 166/701] update copies in troubleshooting section --- src/languages/en.ts | 2 ++ src/languages/es.ts | 2 ++ .../settings/AboutPage/TroubleshootingPage.tsx | 17 ++++++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/languages/en.ts b/src/languages/en.ts index 49d639ff4d0d..3e785b6c1bd0 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -796,6 +796,8 @@ export default { troubleshooting: { resetAndRefresh: 'Reset and refresh', viewConsole: 'View console', + description: 'Use the tools below to help troubleshoot the Expensify experience. If you encounter any issues, please', + submitBug: 'submit a bug', }, goToExpensifyClassic: 'Go to Expensify Classic', security: 'Security', diff --git a/src/languages/es.ts b/src/languages/es.ts index c26510645070..5a1ea9e88307 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -791,6 +791,8 @@ export default { troubleshooting: { resetAndRefresh: 'Restablecer y actualizar', viewConsole: 'Ver consola', + description: 'Utilice las siguientes herramientas para ayudar a solucionar los problemas de Expensify. Si tiene algún problema', + submitBug: 'envíe un error', }, security: 'Seguridad', signOut: 'Desconectar', diff --git a/src/pages/settings/AboutPage/TroubleshootingPage.tsx b/src/pages/settings/AboutPage/TroubleshootingPage.tsx index fbcba7544d7a..40f1116307f1 100644 --- a/src/pages/settings/AboutPage/TroubleshootingPage.tsx +++ b/src/pages/settings/AboutPage/TroubleshootingPage.tsx @@ -5,12 +5,15 @@ import IllustratedHeaderPageLayout from '@components/IllustratedHeaderPageLayout import LottieAnimations from '@components/LottieAnimations'; import MenuItemList from '@components/MenuItemList'; import TestToolMenu from '@components/TestToolMenu'; +import Text from '@components/Text'; +import TextLink from '@components/TextLink'; import useEnvironment from '@hooks/useEnvironment'; import useLocalize from '@hooks/useLocalize'; import useOnyxWipe from '@hooks/useOnyxWipe'; import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; +import * as Report from '@userActions/Report'; import ROUTES from '@src/ROUTES'; import SCREENS from '@src/SCREENS'; @@ -30,7 +33,7 @@ function TroubleshootingPage() { }, { translationKey: 'initialSettingsPage.troubleshooting.viewConsole', - icon: Expensicons.Monitor, + icon: Expensicons.Gear, action: () => console.log('ok'), }, ]; @@ -50,6 +53,18 @@ function TroubleshootingPage() { backgroundColor={theme.PAGE_THEMES[SCREENS.SETTINGS.PREFERENCES.ROOT].backgroundColor} illustration={LottieAnimations.PreferencesDJ} > + + {translate('footer.aboutExpensify')} + + {translate('initialSettingsPage.troubleshooting.description')}{' '} + Report.navigateToConciergeChat()} + > + {translate('initialSettingsPage.troubleshooting.submitBug')} + + + Date: Wed, 24 Jan 2024 09:49:27 +0100 Subject: [PATCH 167/701] update page title --- src/pages/settings/AboutPage/TroubleshootingPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/settings/AboutPage/TroubleshootingPage.tsx b/src/pages/settings/AboutPage/TroubleshootingPage.tsx index 40f1116307f1..002f9b15a7c8 100644 --- a/src/pages/settings/AboutPage/TroubleshootingPage.tsx +++ b/src/pages/settings/AboutPage/TroubleshootingPage.tsx @@ -54,7 +54,7 @@ function TroubleshootingPage() { illustration={LottieAnimations.PreferencesDJ} > - {translate('footer.aboutExpensify')} + {translate('initialSettingsPage.aboutPage.troubleshooting')} {translate('initialSettingsPage.troubleshooting.description')}{' '} Date: Wed, 24 Jan 2024 10:25:02 +0100 Subject: [PATCH 168/701] add new lottie animation for troubleshooting screen --- assets/animations/Desk.lottie | Bin 0 -> 169992 bytes src/components/LottieAnimations/index.tsx | 5 +++++ .../settings/AboutPage/TroubleshootingPage.tsx | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 assets/animations/Desk.lottie diff --git a/assets/animations/Desk.lottie b/assets/animations/Desk.lottie new file mode 100644 index 0000000000000000000000000000000000000000..dc568d176bb2dcc308b9e5b5bf65c53193ab54f1 GIT binary patch literal 169992 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

jHV9YAN9X$df$eqDB~H2d!ATs{I&!t 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 literal 0 HcmV?d00001 diff --git a/src/components/LottieAnimations/index.tsx b/src/components/LottieAnimations/index.tsx index d42d471eba5e..36640536f74b 100644 --- a/src/components/LottieAnimations/index.tsx +++ b/src/components/LottieAnimations/index.tsx @@ -56,6 +56,11 @@ const DotLottieAnimations: Record = { w: 375, h: 240, }, + Desk: { + file: require('@assets/animations/Desk.lottie'), + w: 200, + h: 145, + }, }; export default DotLottieAnimations; diff --git a/src/pages/settings/AboutPage/TroubleshootingPage.tsx b/src/pages/settings/AboutPage/TroubleshootingPage.tsx index 002f9b15a7c8..5fbb6117134d 100644 --- a/src/pages/settings/AboutPage/TroubleshootingPage.tsx +++ b/src/pages/settings/AboutPage/TroubleshootingPage.tsx @@ -51,7 +51,7 @@ function TroubleshootingPage() { title={translate('initialSettingsPage.aboutPage.troubleshooting')} onBackButtonPress={() => Navigation.goBack(ROUTES.SETTINGS_ABOUT)} backgroundColor={theme.PAGE_THEMES[SCREENS.SETTINGS.PREFERENCES.ROOT].backgroundColor} - illustration={LottieAnimations.PreferencesDJ} + illustration={LottieAnimations.Desk} > {translate('initialSettingsPage.aboutPage.troubleshooting')} From fb77237804348593296b1c57e1905f77792ce3c7 Mon Sep 17 00:00:00 2001 From: Kamil Owczarz <91068263+kowczarz@users.noreply.github.com> Date: Wed, 24 Jan 2024 11:12:19 +0100 Subject: [PATCH 169/701] Apply suggestions from code review Co-authored-by: Jakub Kosmydel <104823336+kosmydel@users.noreply.github.com> --- src/components/VideoPlayer/BaseVideoPlayer.js | 2 +- src/components/VideoPlayer/VideoPlayerControls/index.js | 5 +---- src/components/VideoPlayerContexts/PlaybackContext.js | 2 +- .../VideoPlayerContexts/VideoPopoverMenuContext.js | 4 ++-- src/components/VideoPlayerContexts/VolumeContext.js | 4 ++-- src/components/VideoPlayerPreview/VideoPlayerThumbnail.js | 4 ++-- 6 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index 6b4f1eceb6df..5ed4e9b02b67 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -210,6 +210,6 @@ function BaseVideoPlayer({ BaseVideoPlayer.propTypes = propTypes; BaseVideoPlayer.defaultProps = defaultProps; -BaseVideoPlayer.displayName = 'VideoPlayer'; +BaseVideoPlayer.displayName = 'BaseVideoPlayer'; export default BaseVideoPlayer; diff --git a/src/components/VideoPlayer/VideoPlayerControls/index.js b/src/components/VideoPlayer/VideoPlayerControls/index.js index 4bf61698fc2e..60d5eef5377b 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/index.js @@ -43,7 +43,6 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying const styles = useThemeStyles(); const {translate} = useLocalize(); const {pauseVideo, playVideo, currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); - const [durationFormatted, setDurationFormatted] = useState('0:00'); const [shouldShowTime, setShouldShowTime] = useState(false); const isCurrentlyURLSet = currentlyPlayingURL === url; const iconSpacing = small ? styles.mr3 : styles.mr4; @@ -74,9 +73,7 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying [videoPlayerRef], ); - useEffect(() => { - setDurationFormatted(convertMillisecondsToTime(duration)); - }, [duration]); +const durationFormatted = useMemo(() => convertMillisecondsToTime(duration), [duration]); return ( <> diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index 87a094de47df..3316419701dd 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -95,7 +95,7 @@ function usePlaybackContext() { return context; } -PlaybackContextProvider.displayName = 'EnvironmentProvider'; +PlaybackContextProvider.displayName = 'PlaybackContextProvider'; PlaybackContextProvider.propTypes = { /** Actual content wrapped by this component */ children: PropTypes.node.isRequired, diff --git a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js index 03af50cc9c3e..9019c53ccc6f 100644 --- a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js +++ b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js @@ -13,7 +13,7 @@ const VideoPopoverMenuContext = React.createContext(null); function VideoPopoverMenuContextProvider({children}) { const {currentVideoPlayerRef} = usePlaybackContext(); const {translate} = useLocalize(); - const [playbackSpeeds] = useState(CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS); + const playbackSpeeds = CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS; const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); const updatePlaybackSpeed = useCallback( @@ -65,7 +65,7 @@ function VideoPopoverMenuContextProvider({children}) { function useVideoPopoverMenuContext() { const context = useContext(VideoPopoverMenuContext); if (context === undefined) { - throw new Error('useVideoPopoverMenuContext must be used within a PlaybackContextProvider'); + throw new Error('useVideoPopoverMenuContext must be used within a VideoPopoverMenuContext'); } return context; } diff --git a/src/components/VideoPlayerContexts/VolumeContext.js b/src/components/VideoPlayerContexts/VolumeContext.js index 1c38933c608f..2df463654075 100644 --- a/src/components/VideoPlayerContexts/VolumeContext.js +++ b/src/components/VideoPlayerContexts/VolumeContext.js @@ -36,12 +36,12 @@ function VolumeContextProvider({children}) { function useVolumeContext() { const context = useContext(VolumeContext); if (context === undefined) { - throw new Error('useVolumeContext must be used within a PlaybackContextProvider'); + throw new Error('useVolumeContext must be used within a VolumeContextProvider'); } return context; } -VolumeContextProvider.displayName = 'EnvironmentProvider'; +VolumeContextProvider.displayName = 'VolumeContextProvider'; VolumeContextProvider.propTypes = { /** Actual content wrapped by this component */ children: PropTypes.node.isRequired, diff --git a/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js b/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js index 5b08ae98390f..646b77dffac1 100644 --- a/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js +++ b/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js @@ -46,8 +46,8 @@ function VideoPlayerThumbnail({thumbnailUrl, onPress, accessibilityLabel}) { From 3d1c96401449b85d7d5ce7f73a22ec28e25317dd Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Wed, 24 Jan 2024 11:16:02 +0100 Subject: [PATCH 170/701] Add missing html parser verification --- .../AttachmentCarousel/extractAttachmentsFromReport.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js index 741b98f908cf..0c9a5edab663 100644 --- a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js +++ b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js @@ -19,6 +19,9 @@ function extractAttachmentsFromReport(parentReportAction, reportActions) { const htmlParser = new HtmlParser({ onopentag: (name, attribs) => { + if (!attribs.src) { + return; + } if (name === 'video') { const splittedUrl = attribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE].split('/'); attachments.unshift({ From 8bd7354b0cef708c846740a697ef04897dcecc6b Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Wed, 24 Jan 2024 11:29:25 +0100 Subject: [PATCH 171/701] Rename Tooltip param name --- src/components/Tooltip/BaseTooltip/index.tsx | 4 ++-- src/components/Tooltip/TooltipRenderedOnPageBody.tsx | 8 ++++---- src/components/Tooltip/types.ts | 2 +- src/components/VideoPlayer/IconButton.js | 2 +- src/styles/utils/generators/TooltipStyleUtils.ts | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/components/Tooltip/BaseTooltip/index.tsx b/src/components/Tooltip/BaseTooltip/index.tsx index cc1296103051..5f6c38d19bff 100644 --- a/src/components/Tooltip/BaseTooltip/index.tsx +++ b/src/components/Tooltip/BaseTooltip/index.tsx @@ -67,7 +67,7 @@ function Tooltip( shouldHandleScroll = false, shiftHorizontal = 0, shiftVertical = 0, - forceRenderingBelow = false, + shouldForceRenderingBelow = false, }: TooltipProps, ref: ForwardedRef, ) { @@ -221,7 +221,7 @@ function Tooltip( // We pass a key, so whenever the content changes this component will completely remount with a fresh state. // This prevents flickering/moving while remaining performant. key={[text, ...renderTooltipContentKey, preferredLocale].join('-')} - forceRenderingBelow={forceRenderingBelow} + shouldForceRenderingBelow={shouldForceRenderingBelow} /> )} diff --git a/src/components/Tooltip/TooltipRenderedOnPageBody.tsx b/src/components/Tooltip/TooltipRenderedOnPageBody.tsx index c01a69c2e3da..0e97c2463532 100644 --- a/src/components/Tooltip/TooltipRenderedOnPageBody.tsx +++ b/src/components/Tooltip/TooltipRenderedOnPageBody.tsx @@ -34,7 +34,7 @@ type TooltipRenderedOnPageBodyProps = { /** Any additional amount to manually adjust the vertical position of the tooltip. A positive value shifts the tooltip down, and a negative value shifts it up. */ shiftVertical?: number; -} & Pick; +} & Pick; // Props will change frequently. // On every tooltip hover, we update the position in state which will result in re-rendering. @@ -54,7 +54,7 @@ function TooltipRenderedOnPageBody({ numberOfLines, maxWidth = 0, renderTooltipContent, - forceRenderingBelow = false, + shouldForceRenderingBelow = false, }: TooltipRenderedOnPageBodyProps) { // The width of tooltip's inner content. Has to be undefined in the beginning // as a width of 0 will cause the content to be rendered of a width of 0, @@ -96,7 +96,7 @@ function TooltipRenderedOnPageBody({ tooltipWrapperHeight: wrapperMeasuredHeight, manualShiftHorizontal: shiftHorizontal, manualShiftVertical: shiftVertical, - forceRenderingBelow, + shouldForceRenderingBelow, }), [ StyleUtils, @@ -111,7 +111,7 @@ function TooltipRenderedOnPageBody({ wrapperMeasuredHeight, shiftHorizontal, shiftVertical, - forceRenderingBelow, + shouldForceRenderingBelow, ], ); diff --git a/src/components/Tooltip/types.ts b/src/components/Tooltip/types.ts index 02d4d7628010..a949e98018b3 100644 --- a/src/components/Tooltip/types.ts +++ b/src/components/Tooltip/types.ts @@ -28,7 +28,7 @@ type TooltipProps = ChildrenProps & { /** passes this down to Hoverable component to decide whether to handle the scroll behaviour to show hover once the scroll ends */ shouldHandleScroll?: boolean; - forceRenderingBelow?: boolean; + shouldForceRenderingBelow?: boolean; }; type TooltipExtendedProps = TooltipProps & { diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js index 0441e2159c4f..d6ab4fe4a1d9 100644 --- a/src/components/VideoPlayer/IconButton.js +++ b/src/components/VideoPlayer/IconButton.js @@ -42,7 +42,7 @@ function IconButton({src, fill, onPress, style, hoverStyle, tooltipText, small, return ( {(isHovered) => ( diff --git a/src/styles/utils/generators/TooltipStyleUtils.ts b/src/styles/utils/generators/TooltipStyleUtils.ts index 02c9ea4aac61..21b271998370 100644 --- a/src/styles/utils/generators/TooltipStyleUtils.ts +++ b/src/styles/utils/generators/TooltipStyleUtils.ts @@ -116,7 +116,7 @@ type TooltipParams = { tooltipWrapperHeight?: number; manualShiftHorizontal?: number; manualShiftVertical?: number; - forceRenderingBelow?: boolean; + shouldForceRenderingBelow?: boolean; }; type GetTooltipStylesStyleUtil = {getTooltipStyles: (props: TooltipParams) => TooltipStyles}; @@ -156,7 +156,7 @@ const createTooltipStyleUtils: StyleUtilGenerator = ( tooltipWrapperHeight, manualShiftHorizontal = 0, manualShiftVertical = 0, - forceRenderingBelow = false, + shouldForceRenderingBelow = false, }) => { const tooltipVerticalPadding = spacing.pv1; @@ -185,7 +185,7 @@ const createTooltipStyleUtils: StyleUtilGenerator = ( // Or the wrapped component is overlapping at top-center with another element // we'll display it beneath its wrapped component rather than above it as usual. shouldShowBelow = - forceRenderingBelow || yOffset - tooltipHeight < GUTTER_WIDTH || !!(tooltip && isOverlappingAtTop(tooltip, xOffset, yOffset, tooltipTargetWidth, tooltipTargetHeight)); + shouldForceRenderingBelow || yOffset - tooltipHeight < GUTTER_WIDTH || !!(tooltip && isOverlappingAtTop(tooltip, xOffset, yOffset, tooltipTargetWidth, tooltipTargetHeight)); // When the tooltip size is ready, we can start animating the scale. scale = currentSize; From 1c159c1542bdb6a5ee8287e1f737df70f2cce09a Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Wed, 24 Jan 2024 11:51:03 +0100 Subject: [PATCH 172/701] Fix error --- .../AttachmentCarousel/extractAttachmentsFromReport.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js index 0c9a5edab663..741b98f908cf 100644 --- a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js +++ b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js @@ -19,9 +19,6 @@ function extractAttachmentsFromReport(parentReportAction, reportActions) { const htmlParser = new HtmlParser({ onopentag: (name, attribs) => { - if (!attribs.src) { - return; - } if (name === 'video') { const splittedUrl = attribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE].split('/'); attachments.unshift({ From cf82a5e0f40cac68b09d7dfde06c76728040e3f6 Mon Sep 17 00:00:00 2001 From: Alberto Date: Wed, 24 Jan 2024 12:32:57 +0100 Subject: [PATCH 173/701] Return to correct state/status --- src/CONST.ts | 8 ++++++++ src/libs/actions/IOU.js | 11 +++++++++-- src/types/onyx/Policy.ts | 3 +++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index b290d113a37d..89ce0a4234c9 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -1308,6 +1308,14 @@ const CONST = { LAST_BUSINESS_DAY_OF_MONTH: 'lastBusinessDayOfMonth', LAST_DAY_OF_MONTH: 'lastDayOfMonth', }, + APPROVAL_MODE: { + OPTIONAL: 'OPTIONAL', + BASIC: 'BASIC', + ADVANCED: 'ADVANCED', + DYNAMICEXTERNAL: 'DYNAMIC_EXTERNAL', + SMARTREPORT: 'SMARTREPORT', + BILLCOM: 'BILLCOM', + }, ROOM_PREFIX: '#', CUSTOM_UNIT_RATE_BASE_OFFSET: 100, OWNER_EMAIL_FAKE: '_FAKE_', diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index 65da7e3f95b6..a68822b3be4b 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -3418,6 +3418,13 @@ function cancelPayment(expenseReport, chatReport) { const optimisticReportAction = ReportUtils.buildOptimisticCancelPaymentReportAction(expenseReport.reportID, -expenseReport.total, expenseReport.currency,); const policy = ReportUtils.getPolicy(chatReport.policyID); const isFree = policy && policy.type === CONST.POLICY.TYPE.FREE; + const approvalMode = policy.approvalMode ?? CONST.POLICY.APPROVAL_MODE.BASIC; + let stateNum = CONST.REPORT.STATE_NUM.SUBMITTED; + let statusNum = CONST.REPORT.STATUS_NUM.SUBMITTED + if (!isFree) { + stateNum = approvalMode === CONST.POLICY.APPROVAL_MODE.OPTIONAL ? CONST.REPORT.STATE_NUM.SUBMITTED: CONST.REPORT.STATE_NUM.APPROVED; + statusNum = approvalMode === CONST.POLICY.APPROVAL_MODE.OPTIONAL ? CONST.REPORT.STATUS_NUM.CLOSED : CONST.REPORT.STATUS_NUM.APPROVED; + } const optimisticData = [ { onyxMethod: Onyx.METHOD.MERGE, @@ -3436,8 +3443,8 @@ function cancelPayment(expenseReport, chatReport) { ...expenseReport, lastMessageText: lodashGet(optimisticReportAction, 'message.0.text', ''), lastMessageHtml: lodashGet(optimisticReportAction, 'message.0.html', ''), - stateNum: isFree ? CONST.REPORT.STATE_NUM.SUBMITTED : CONST.REPORT.STATE_NUM.OPEN, - statusNum: isFree ? CONST.REPORT.STATUS_NUM.SUBMITTED : CONST.REPORT.STATUS_NUM.OPEN, + stateNum, + statusNum, }, }, ...(chatReport.reportID diff --git a/src/types/onyx/Policy.ts b/src/types/onyx/Policy.ts index 97e6597c6444..2d8bbb7924bd 100644 --- a/src/types/onyx/Policy.ts +++ b/src/types/onyx/Policy.ts @@ -118,6 +118,9 @@ type Policy = { /** Informative messages about which policy members were added with primary logins when invited with their secondary login */ primaryLoginsInvited?: Record; + + /** The approval mode set up on this policy */ + approvalMode?: ValueOf; }; export default Policy; From 48530bb26a182800dffd3855403427ad28aa4b54 Mon Sep 17 00:00:00 2001 From: Jakub Szymczak Date: Wed, 24 Jan 2024 12:59:20 +0100 Subject: [PATCH 174/701] migrate EditSplitPage to typescript --- src/ONYXKEYS.ts | 1 + src/libs/ReportUtils.ts | 1 + src/pages/EditSplitBillPage.js | 190 -------------------------------- src/pages/EditSplitBillPage.tsx | 180 ++++++++++++++++++++++++++++++ 4 files changed, 182 insertions(+), 190 deletions(-) delete mode 100644 src/pages/EditSplitBillPage.js create mode 100644 src/pages/EditSplitBillPage.tsx diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index 9693c907a5fe..5906328b889c 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -473,6 +473,7 @@ type OnyxValues = { [ONYXKEYS.COLLECTION.SECURITY_GROUP]: OnyxTypes.SecurityGroup; [ONYXKEYS.COLLECTION.TRANSACTION]: OnyxTypes.Transaction; [ONYXKEYS.COLLECTION.TRANSACTION_DRAFT]: OnyxTypes.Transaction; + [ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT]: OnyxTypes.Transaction; [ONYXKEYS.COLLECTION.POLICY_RECENTLY_USED_TAGS]: OnyxTypes.RecentlyUsedTags; [ONYXKEYS.COLLECTION.SELECTED_TAB]: string; [ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS]: OnyxTypes.TransactionViolation[]; diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 33290b5046f0..5b37ac2806b2 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -4839,4 +4839,5 @@ export type { OptimisticAddCommentReportAction, OptimisticCreatedReportAction, OptimisticClosedReportAction, + TransactionDetails, }; diff --git a/src/pages/EditSplitBillPage.js b/src/pages/EditSplitBillPage.js deleted file mode 100644 index 2be8d6f683ee..000000000000 --- a/src/pages/EditSplitBillPage.js +++ /dev/null @@ -1,190 +0,0 @@ -import lodashGet from 'lodash/get'; -import PropTypes from 'prop-types'; -import React from 'react'; -import {withOnyx} from 'react-native-onyx'; -import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView'; -import transactionPropTypes from '@components/transactionPropTypes'; -import compose from '@libs/compose'; -import * as CurrencyUtils from '@libs/CurrencyUtils'; -import Navigation from '@libs/Navigation/Navigation'; -import * as ReportUtils from '@libs/ReportUtils'; -import * as IOU from '@userActions/IOU'; -import CONST from '@src/CONST'; -import ONYXKEYS from '@src/ONYXKEYS'; -import ROUTES from '@src/ROUTES'; -import EditRequestAmountPage from './EditRequestAmountPage'; -import EditRequestCategoryPage from './EditRequestCategoryPage'; -import EditRequestCreatedPage from './EditRequestCreatedPage'; -import EditRequestDescriptionPage from './EditRequestDescriptionPage'; -import EditRequestMerchantPage from './EditRequestMerchantPage'; -import EditRequestTagPage from './EditRequestTagPage'; -import reportPropTypes from './reportPropTypes'; - -const propTypes = { - /** Route from navigation */ - route: PropTypes.shape({ - /** Params from the route */ - params: PropTypes.shape({ - /** The transaction field we are editing */ - field: PropTypes.string, - - /** The chat reportID of the split */ - reportID: PropTypes.string, - - /** reportActionID of the split action */ - reportActionID: PropTypes.string, - }), - }).isRequired, - - /** The current transaction */ - transaction: transactionPropTypes.isRequired, - - /** The draft transaction that holds data to be persisted on the current transaction */ - draftTransaction: transactionPropTypes, - - /** The report currently being used */ - report: reportPropTypes.isRequired, -}; - -const defaultProps = { - draftTransaction: undefined, -}; - -function EditSplitBillPage({route, transaction, draftTransaction, report}) { - const fieldToEdit = lodashGet(route, ['params', 'field'], ''); - const reportID = lodashGet(route, ['params', 'reportID'], ''); - const reportActionID = lodashGet(route, ['params', 'reportActionID'], ''); - - const { - amount: transactionAmount, - currency: transactionCurrency, - comment: transactionDescription, - merchant: transactionMerchant, - created: transactionCreated, - category: transactionCategory, - tag: transactionTag, - } = draftTransaction ? ReportUtils.getTransactionDetails(draftTransaction) : ReportUtils.getTransactionDetails(transaction); - - const defaultCurrency = lodashGet(route, 'params.currency', '') || transactionCurrency; - - function navigateBackToSplitDetails() { - Navigation.navigate(ROUTES.SPLIT_BILL_DETAILS.getRoute(reportID, reportActionID)); - } - - const setDraftSplitTransaction = (transactionChanges) => { - IOU.setDraftSplitTransaction(transaction.transactionID, transactionChanges); - navigateBackToSplitDetails(); - }; - - if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.DESCRIPTION) { - return ( - { - setDraftSplitTransaction({ - comment: transactionChanges.comment.trim(), - }); - }} - /> - ); - } - - if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.DATE) { - return ( - - ); - } - - if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.AMOUNT) { - return ( - { - const amount = CurrencyUtils.convertToBackendAmount(Number.parseFloat(transactionChanges.amount)); - - setDraftSplitTransaction({ - amount, - currency: transactionChanges.currency, - }); - }} - onNavigateToCurrency={() => { - const activeRoute = encodeURIComponent(Navigation.getActiveRouteWithoutParams()); - Navigation.navigate(ROUTES.EDIT_SPLIT_BILL_CURRENCY.getRoute(reportID, reportActionID, defaultCurrency, activeRoute)); - }} - /> - ); - } - - if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.MERCHANT) { - return ( - { - setDraftSplitTransaction({merchant: transactionChanges.merchant.trim()}); - }} - /> - ); - } - - if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.CATEGORY) { - return ( - { - setDraftSplitTransaction({category: transactionChanges.category.trim()}); - }} - /> - ); - } - - if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.TAG) { - return ( - { - setDraftSplitTransaction({tag: transactionChanges.tag.trim()}); - }} - /> - ); - } - - return ; -} - -EditSplitBillPage.displayName = 'EditSplitBillPage'; -EditSplitBillPage.propTypes = propTypes; -EditSplitBillPage.defaultProps = defaultProps; -export default compose( - withOnyx({ - reportActions: { - key: ({route}) => `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${route.params.reportID}`, - canEvict: false, - }, - report: { - key: ({route}) => `${ONYXKEYS.COLLECTION.REPORT}${route.params.reportID}`, - }, - }), - // eslint-disable-next-line rulesdir/no-multiple-onyx-in-file - withOnyx({ - transaction: { - key: ({route, reportActions}) => { - const reportAction = reportActions[`${route.params.reportActionID.toString()}`]; - return `${ONYXKEYS.COLLECTION.TRANSACTION}${lodashGet(reportAction, 'originalMessage.IOUTransactionID', 0)}`; - }, - }, - draftTransaction: { - key: ({route, reportActions}) => { - const reportAction = reportActions[`${route.params.reportActionID.toString()}`]; - return `${ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT}${lodashGet(reportAction, 'originalMessage.IOUTransactionID', 0)}`; - }, - }, - }), -)(EditSplitBillPage); diff --git a/src/pages/EditSplitBillPage.tsx b/src/pages/EditSplitBillPage.tsx new file mode 100644 index 000000000000..607dfa552d8b --- /dev/null +++ b/src/pages/EditSplitBillPage.tsx @@ -0,0 +1,180 @@ +import type {RouteProp} from '@react-navigation/native'; +import React from 'react'; +import type {OnyxEntry} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; +import FullPageNotFoundView from '@components/BlockingViews/FullPageNotFoundView'; +import * as CurrencyUtils from '@libs/CurrencyUtils'; +import Navigation from '@libs/Navigation/Navigation'; +import * as ReportUtils from '@libs/ReportUtils'; +import * as IOU from '@userActions/IOU'; +import CONST from '@src/CONST'; +import ONYXKEYS from '@src/ONYXKEYS'; +import ROUTES from '@src/ROUTES'; +import type {Report, ReportActions, Transaction} from '@src/types/onyx'; +import type {OriginalMessageIOU} from '@src/types/onyx/OriginalMessage'; +import EditRequestAmountPage from './EditRequestAmountPage'; +import EditRequestCategoryPage from './EditRequestCategoryPage'; +import EditRequestCreatedPage from './EditRequestCreatedPage'; +import EditRequestDescriptionPage from './EditRequestDescriptionPage'; +import EditRequestMerchantPage from './EditRequestMerchantPage'; +import EditRequestTagPage from './EditRequestTagPage'; + +type EditSplitBillOnyxProps = { + /** The report currently being used */ + report: OnyxEntry; + + /** The report action for currently used report */ + // Used in withOnyx + // eslint-disable-next-line react/no-unused-prop-types + reportActions: OnyxEntry; + + /** The current transaction */ + transaction: OnyxEntry; + + /** The draft transaction that holds data to be persisted on the current transaction */ + draftTransaction: OnyxEntry; +}; + +type EditSplitBillProps = EditSplitBillOnyxProps & { + route: RouteProp<{params: {field: string; reportID: string; reportActionID: string}}>; +}; + +function EditSplitBillPage({route, transaction, draftTransaction, report}: EditSplitBillProps) { + const fieldToEdit = route.params.field; + const reportID = route.params.reportID; + const reportActionID = route.params.reportActionID; + + const draftTransactionDetails = ReportUtils.getTransactionDetails(draftTransaction); + const transactionDetails = ReportUtils.getTransactionDetails(transaction); + const transactionAmount = draftTransactionDetails ? draftTransactionDetails.amount : transactionDetails?.amount; + const transactionCurrency = draftTransactionDetails ? draftTransactionDetails.currency : transactionDetails?.currency; + const transactionDescription = draftTransactionDetails ? draftTransactionDetails.comment : transactionDetails?.comment; + const transactionMerchant = draftTransactionDetails ? draftTransactionDetails.merchant : transactionDetails?.merchant; + const transactionCreated = draftTransactionDetails ? draftTransactionDetails.created : transactionDetails?.created; + const transactionCategory = draftTransactionDetails ? draftTransactionDetails.category : transactionDetails?.category; + const transactionTag = draftTransactionDetails ? draftTransactionDetails.tag : transactionDetails?.tag; + + const defaultCurrency = transactionCurrency; + + function navigateBackToSplitDetails() { + Navigation.navigate(ROUTES.SPLIT_BILL_DETAILS.getRoute(reportID, reportActionID)); + } + + // eslint-disable-next-line @typescript-eslint/ban-types + const setDraftSplitTransaction = (transactionChanges: Object) => { + if (transaction) { + IOU.setDraftSplitTransaction(transaction.transactionID, transactionChanges); + } + navigateBackToSplitDetails(); + }; + + if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.DESCRIPTION) { + return ( + { + setDraftSplitTransaction({ + comment: transactionChanges.comment.trim(), + }); + }} + /> + ); + } + + if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.DATE) { + return ( + + ); + } + + if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.AMOUNT) { + return ( + { + const amount = CurrencyUtils.convertToBackendAmount(Number.parseFloat(transactionChanges.amount)); + + setDraftSplitTransaction({ + amount, + currency: transactionChanges.currency, + }); + }} + onNavigateToCurrency={() => { + const activeRoute = encodeURIComponent(Navigation.getActiveRouteWithoutParams()); + if (reportID && transactionAmount && defaultCurrency) { + Navigation.navigate(ROUTES.EDIT_SPLIT_BILL_CURRENCY.getRoute(reportID, reportActionID, defaultCurrency, activeRoute)); + } + }} + /> + ); + } + + if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.MERCHANT) { + return ( + { + setDraftSplitTransaction({merchant: transactionChanges.merchant.trim()}); + }} + isPolicyExpenseChat={false} + /> + ); + } + + if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.CATEGORY) { + return ( + { + setDraftSplitTransaction({category: transactionChanges.category.trim()}); + }} + /> + ); + } + + if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.TAG && transactionTag) { + return ( + { + setDraftSplitTransaction({tag: transactionChanges.tag.trim()}); + }} + tagName="" + /> + ); + } + + return ; +} + +EditSplitBillPage.displayName = 'EditSplitBillPage'; + +export default withOnyx({ + report: { + key: ({route}) => `${ONYXKEYS.COLLECTION.REPORT}${route.params.reportID}`, + }, + reportActions: { + key: ({route}) => `${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${route.params.reportID}`, + canEvict: false, + }, + transaction: { + key: ({route, reportActions}: Partial) => { + const reportAction = reportActions?.[`${route?.params.reportActionID.toString()}`]; + const transactionID = (reportAction as OriginalMessageIOU)?.originalMessage.IOUTransactionID ? (reportAction as OriginalMessageIOU).originalMessage.IOUTransactionID : 0; + return `${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`; + }, + }, + draftTransaction: { + key: ({route, reportActions}: Partial) => { + const reportAction = reportActions?.[`${route?.params.reportActionID.toString()}`]; + const transactionID = (reportAction as OriginalMessageIOU)?.originalMessage.IOUTransactionID ? (reportAction as OriginalMessageIOU).originalMessage.IOUTransactionID : 0; + return `${ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT}${transactionID}`; + }, + }, +})(EditSplitBillPage); From 3c170756ea2dbe939edf9d4cfdafd318c6ff45c2 Mon Sep 17 00:00:00 2001 From: rayane-djouah <77965000+rayane-djouah@users.noreply.github.com> Date: Wed, 24 Jan 2024 13:39:33 +0100 Subject: [PATCH 175/701] run prettier --- src/components/DistanceRequest/index.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/DistanceRequest/index.tsx b/src/components/DistanceRequest/index.tsx index c377e7012fa2..773283c90f6d 100644 --- a/src/components/DistanceRequest/index.tsx +++ b/src/components/DistanceRequest/index.tsx @@ -165,7 +165,14 @@ function DistanceRequest({transactionID = '', report, transaction, route, isEdit */ const navigateToWaypointEditPage = (index: number) => { Navigation.navigate( - ROUTES.MONEY_REQUEST_STEP_WAYPOINT.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transactionID, report?.reportID ?? '', index.toString(), Navigation.getActiveRouteWithoutParams()), + ROUTES.MONEY_REQUEST_STEP_WAYPOINT.getRoute( + CONST.IOU.ACTION.EDIT, + CONST.IOU.TYPE.REQUEST, + transactionID, + report?.reportID ?? '', + index.toString(), + Navigation.getActiveRouteWithoutParams(), + ), ); }; From f161fd9f7437def27a9e2b529b8a6a94d7e72170 Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Wed, 24 Jan 2024 14:52:19 +0100 Subject: [PATCH 176/701] Cleanup --- .../HTMLEngineProvider/HTMLRenderers/VideoRenderer.js | 7 ++++--- src/components/VideoPlayer/VideoPlayerControls/index.js | 4 ++-- src/components/VideoPlayerPreview/VideoPlayerThumbnail.js | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js b/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js index 89af4515780f..b90c7fd7667b 100644 --- a/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js +++ b/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js @@ -1,5 +1,6 @@ import React from 'react'; import VideoPlayerPreview from '@components/VideoPlayerPreview'; +import * as FileUtils from '@libs/fileDownload/FileUtils'; import {parseReportRouteParams} from '@libs/ReportUtils'; import tryResolveUrlFromApiRoot from '@libs/tryResolveUrlFromApiRoot'; import Navigation from '@navigation/Navigation'; @@ -12,13 +13,13 @@ const propTypes = { }; function VideoRenderer(props) { - const fileName = props.displayName; const htmlAttribs = props.tnode.attributes; const attrHref = htmlAttribs.href || htmlAttribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE] || ''; const sourceURL = tryResolveUrlFromApiRoot(attrHref); + const fileName = FileUtils.getFileName(`${sourceURL}`); const thumbnailUrl = htmlAttribs[CONST.ATTACHMENT_THUMBNAIL_URL_ATTRIBUTE]; - const width = htmlAttribs[CONST.ATTACHMENT_THUMBNAIL_WIDTH_ATTRIBUTE]; - const height = htmlAttribs[CONST.ATTACHMENT_THUMBNAIL_HEIGHT_ATTRIBUTE]; + const width = Number(htmlAttribs[CONST.ATTACHMENT_THUMBNAIL_WIDTH_ATTRIBUTE]); + const height = Number(htmlAttribs[CONST.ATTACHMENT_THUMBNAIL_HEIGHT_ATTRIBUTE]); const activeRoute = Navigation.getActiveRoute(); const {reportID} = parseReportRouteParams(activeRoute); diff --git a/src/components/VideoPlayer/VideoPlayerControls/index.js b/src/components/VideoPlayer/VideoPlayerControls/index.js index 60d5eef5377b..78d53f72a062 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/index.js @@ -1,5 +1,5 @@ import PropTypes from 'prop-types'; -import React, {useCallback, useEffect, useState} from 'react'; +import React, {useCallback, useMemo, useState} from 'react'; import {View} from 'react-native'; import Animated from 'react-native-reanimated'; import * as Expensicons from '@components/Icon/Expensicons'; @@ -73,7 +73,7 @@ function VideoPlayerControls({duration, position, url, videoPlayerRef, isPlaying [videoPlayerRef], ); -const durationFormatted = useMemo(() => convertMillisecondsToTime(duration), [duration]); + const durationFormatted = useMemo(() => convertMillisecondsToTime(duration), [duration]); return ( <> diff --git a/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js b/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js index 646b77dffac1..e7901617f1b2 100644 --- a/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js +++ b/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js @@ -6,6 +6,7 @@ import * as Expensicons from '@components/Icon/Expensicons'; import ImageWithSizeCalculation from '@components/Image'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; import useThemeStyles from '@hooks/useThemeStyles'; +import variables from '@styles/variables'; import CONST from '@src/CONST'; const propTypes = { From 58ad1d3e5f06fb2bb8e3be4fccd9b544c57526c4 Mon Sep 17 00:00:00 2001 From: Mykhailo Kravchenko Date: Wed, 24 Jan 2024 16:01:45 +0100 Subject: [PATCH 177/701] Implement new logic for recently used tags --- src/libs/actions/IOU.js | 2 -- src/libs/actions/Policy.ts | 24 ++++++++++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index ef20a3f13a8e..b856193ef90a 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -754,9 +754,7 @@ function getMoneyRequestInformation( ); const optimisticPolicyRecentlyUsedCategories = Policy.buildOptimisticPolicyRecentlyUsedCategories(iouReport.policyID, category); - // TODO: Adapt const optimisticPolicyRecentlyUsedTags = Policy.buildOptimisticPolicyRecentlyUsedTags(iouReport.policyID, tag); - // const optimisticPolicyRecentlyUsedTags = {}; // If there is an existing transaction (which is the case for distance requests), then the data from the existing transaction // needs to be manually merged into the optimistic transaction. This is because buildOnyxDataForMoneyRequest() uses `Onyx.set()` for the transaction diff --git a/src/libs/actions/Policy.ts b/src/libs/actions/Policy.ts index cbbc00dd42fc..0a97dd054edb 100644 --- a/src/libs/actions/Policy.ts +++ b/src/libs/actions/Policy.ts @@ -1588,20 +1588,28 @@ function buildOptimisticPolicyRecentlyUsedCategories(policyID: string, category: return lodashUnion([category], policyRecentlyUsedCategories); } -function buildOptimisticPolicyRecentlyUsedTags(policyID: string, tag: string): RecentlyUsedTags { - if (!policyID || !tag) { +function buildOptimisticPolicyRecentlyUsedTags(policyID: string, reportTags: string): RecentlyUsedTags { + if (!policyID || !reportTags) { return {}; } + const splittedReportTags = reportTags.split(CONST.COLON); const policyTags = allPolicyTags?.[`${ONYXKEYS.COLLECTION.POLICY_TAGS}${policyID}`] ?? {}; - // For now it only uses the first tag of the policy, since multi-tags are not yet supported - const tagListKey = Object.keys(policyTags)[0]; + const policyTagKeys = Object.keys(policyTags); const policyRecentlyUsedTags = allRecentlyUsedTags?.[`${ONYXKEYS.COLLECTION.POLICY_RECENTLY_USED_TAGS}${policyID}`] ?? {}; + const newOptimisticPolicyRecentlyUsedTags: Record = {}; - return { - ...policyRecentlyUsedTags, - [tagListKey]: lodashUnion([tag], policyRecentlyUsedTags?.[tagListKey] ?? []), - }; + splittedReportTags.forEach((tag, index) => { + if (!tag) { + return; + } + + const tagListKey = policyTagKeys[index]; + const prevRecentlyUsedTags = policyRecentlyUsedTags[tagListKey] ?? []; + newOptimisticPolicyRecentlyUsedTags[tagListKey] = lodashUnion([tag], prevRecentlyUsedTags); + }); + + return newOptimisticPolicyRecentlyUsedTags; } /** From b503ed98afc467e9444591e59ce1cc6a30a6ff17 Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Wed, 24 Jan 2024 16:48:33 +0100 Subject: [PATCH 178/701] Code review changes --- src/CONST.ts | 2 + .../HTMLRenderers/VideoRenderer.js | 2 +- src/components/VideoPlayer/BaseVideoPlayer.js | 44 ++----------------- src/components/VideoPlayer/IconButton.js | 8 ++-- .../VideoPlayerControls/VolumeButton/index.js | 2 +- src/components/VideoPlayer/index.js | 3 ++ src/components/VideoPlayer/index.native.js | 7 ++- src/components/VideoPlayer/propTypes.js | 42 ++++++++++++++++++ .../VideoPlayer/{utils.js => utils.ts} | 5 +-- .../VideoPopoverMenuContext.js | 7 ++- .../VideoPlayerThumbnail.js | 10 ++--- src/components/VideoPlayerPreview/index.js | 15 ++++--- src/hooks/useThumbnailDimensions.ts | 14 +++++- 13 files changed, 90 insertions(+), 71 deletions(-) create mode 100644 src/components/VideoPlayer/propTypes.js rename src/components/VideoPlayer/{utils.js => utils.ts} (61%) diff --git a/src/CONST.ts b/src/CONST.ts index d27fe7c0969e..1e69e197a3c7 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -3144,6 +3144,7 @@ const CONST = { VIDEO_PLAYER: { POPOVER_Y_OFFSET: -30, + DEFAULT_PLAYBACK_SPEED_INDEX: 2, PLAYBACK_SPEEDS: [0.25, 0.5, 1, 1.5, 2], HIDE_TIME_TEXT_WIDTH: 250, MIN_WIDTH: 170, @@ -3152,6 +3153,7 @@ const CONST = { NATIVE: 32, NORMAL: 8, }, + DEFAULT_VIDEO_DIMENSIONS: {width: 1900, height: 1400}, }, MINI_CONTEXT_MENU_MAX_ITEMS: 4, diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js b/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js index b90c7fd7667b..58a695aeb2fa 100644 --- a/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js +++ b/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js @@ -29,7 +29,7 @@ function VideoRenderer(props) { fileName={fileName} thumbnailUrl={thumbnailUrl} videoDimensions={{width, height}} - showModal={() => { + onShowModalPress={() => { const route = ROUTES.REPORT_ATTACHMENTS.getRoute(reportID, sourceURL); Navigation.navigate(route); }} diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index 5ed4e9b02b67..f2a410d6f382 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -1,6 +1,5 @@ /* eslint-disable no-underscore-dangle */ import {ResizeMode, Video} from 'expo-av'; -import PropTypes from 'prop-types'; import React, {useCallback, useEffect, useRef, useState} from 'react'; import {View} from 'react-native'; import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; @@ -10,46 +9,9 @@ import VideoPopoverMenu from '@components/VideoPopoverMenu'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import addEncryptedAuthTokenToURL from '@libs/addEncryptedAuthTokenToURL'; -import stylePropTypes from '@styles/stylePropTypes'; +import {videoPlayerDefaultProps, videoPlayerPropTypes} from './propTypes'; import VideoPlayerControls from './VideoPlayerControls'; -const propTypes = { - url: PropTypes.string.isRequired, - - onVideoLoaded: PropTypes.func, - - resizeMode: PropTypes.string, - - isLooping: PropTypes.bool, - - style: stylePropTypes, - - videoPlayerStyle: stylePropTypes, - - videoStyle: stylePropTypes, - - videoControlsStyle: stylePropTypes, - - shouldUseSharedVideoElement: PropTypes.bool, - - shouldUseSmallVideoControls: PropTypes.bool, - - isVideoHovered: PropTypes.bool, -}; - -const defaultProps = { - onVideoLoaded: () => {}, - resizeMode: ResizeMode.CONTAIN, - isLooping: false, - style: undefined, - videoPlayerStyle: undefined, - videoStyle: undefined, - videoControlsStyle: undefined, - shouldUseSharedVideoElement: false, - shouldUseSmallVideoControls: false, - isVideoHovered: false, -}; - function BaseVideoPlayer({ url, resizeMode, @@ -208,8 +170,8 @@ function BaseVideoPlayer({ ); } -BaseVideoPlayer.propTypes = propTypes; -BaseVideoPlayer.defaultProps = defaultProps; +BaseVideoPlayer.propTypes = videoPlayerPropTypes; +BaseVideoPlayer.defaultProps = videoPlayerDefaultProps; BaseVideoPlayer.displayName = 'BaseVideoPlayer'; export default BaseVideoPlayer; diff --git a/src/components/VideoPlayer/IconButton.js b/src/components/VideoPlayer/IconButton.js index d6ab4fe4a1d9..71c1a2150692 100644 --- a/src/components/VideoPlayer/IconButton.js +++ b/src/components/VideoPlayer/IconButton.js @@ -24,7 +24,7 @@ const propTypes = { small: PropTypes.bool, - forceRenderingTooltipBelow: PropTypes.bool, + shouldForceRenderingTooltipBelow: PropTypes.bool, }; const defaultProps = { @@ -34,15 +34,15 @@ const defaultProps = { hoverStyle: {}, small: false, tooltipText: '', - forceRenderingTooltipBelow: false, + shouldForceRenderingTooltipBelow: false, }; -function IconButton({src, fill, onPress, style, hoverStyle, tooltipText, small, forceRenderingTooltipBelow}) { +function IconButton({src, fill, onPress, style, hoverStyle, tooltipText, small, shouldForceRenderingTooltipBelow}) { const styles = useThemeStyles(); return ( {(isHovered) => ( diff --git a/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js b/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js index ab5ecaa64c25..1c1d042d3893 100644 --- a/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js +++ b/src/components/VideoPlayer/VideoPlayerControls/VolumeButton/index.js @@ -91,7 +91,7 @@ function VolumeButton({style, small}) { src={volumeIcon.icon} fill={styles.white} small={small} - forceRenderingTooltipBelow + shouldForceRenderingTooltipBelow /> )} diff --git a/src/components/VideoPlayer/index.js b/src/components/VideoPlayer/index.js index 5708b8d4db72..c51e9bd680e1 100644 --- a/src/components/VideoPlayer/index.js +++ b/src/components/VideoPlayer/index.js @@ -1,5 +1,6 @@ import React, {forwardRef} from 'react'; import BaseVideoPlayer from './BaseVideoPlayer'; +import {videoPlayerDefaultProps, videoPlayerPropTypes} from './propTypes'; function VideoPlayer(props, ref) { return ( @@ -12,5 +13,7 @@ function VideoPlayer(props, ref) { } VideoPlayer.displayName = 'VideoPlayer'; +VideoPlayer.propTypes = videoPlayerPropTypes; +VideoPlayer.defaultProps = videoPlayerDefaultProps; export default forwardRef(VideoPlayer); diff --git a/src/components/VideoPlayer/index.native.js b/src/components/VideoPlayer/index.native.js index f668a276d7c4..6581ff01cb75 100644 --- a/src/components/VideoPlayer/index.native.js +++ b/src/components/VideoPlayer/index.native.js @@ -1,20 +1,23 @@ import React, {forwardRef} from 'react'; import CONST from '@src/CONST'; import BaseVideoPlayer from './BaseVideoPlayer'; +import {videoPlayerDefaultProps, videoPlayerPropTypes} from './propTypes'; -function VideoPlayer(props, ref) { +function VideoPlayer({videoControlsStyle, ...props}, ref) { return ( ); } VideoPlayer.displayName = 'VideoPlayer'; +VideoPlayer.propTypes = videoPlayerPropTypes; +VideoPlayer.defaultProps = videoPlayerDefaultProps; export default forwardRef(VideoPlayer); diff --git a/src/components/VideoPlayer/propTypes.js b/src/components/VideoPlayer/propTypes.js new file mode 100644 index 000000000000..c10eeb7443ab --- /dev/null +++ b/src/components/VideoPlayer/propTypes.js @@ -0,0 +1,42 @@ +import {ResizeMode} from 'expo-av'; +import PropTypes from 'prop-types'; +import stylePropTypes from '@styles/stylePropTypes'; + +const videoPlayerPropTypes = { + url: PropTypes.string.isRequired, + + onVideoLoaded: PropTypes.func, + + resizeMode: PropTypes.string, + + isLooping: PropTypes.bool, + + style: stylePropTypes, + + videoPlayerStyle: stylePropTypes, + + videoStyle: stylePropTypes, + + videoControlsStyle: stylePropTypes, + + shouldUseSharedVideoElement: PropTypes.bool, + + shouldUseSmallVideoControls: PropTypes.bool, + + isVideoHovered: PropTypes.bool, +}; + +const videoPlayerDefaultProps = { + onVideoLoaded: () => {}, + resizeMode: ResizeMode.CONTAIN, + isLooping: false, + style: undefined, + videoPlayerStyle: undefined, + videoStyle: undefined, + videoControlsStyle: undefined, + shouldUseSharedVideoElement: false, + shouldUseSmallVideoControls: false, + isVideoHovered: false, +}; + +export {videoPlayerDefaultProps, videoPlayerPropTypes}; diff --git a/src/components/VideoPlayer/utils.js b/src/components/VideoPlayer/utils.ts similarity index 61% rename from src/components/VideoPlayer/utils.js rename to src/components/VideoPlayer/utils.ts index 622ac18516ad..57f5422d0ce5 100644 --- a/src/components/VideoPlayer/utils.js +++ b/src/components/VideoPlayer/utils.ts @@ -1,10 +1,9 @@ import {format} from 'date-fns'; // Converts milliseconds to 'minutes:seconds' format -const convertMillisecondsToTime = (milliseconds) => { +const convertMillisecondsToTime = (milliseconds: number) => { const date = new Date(milliseconds); - const time = format(date, 'mm:ss'); - return time; + return format(date, 'mm:ss'); }; export default convertMillisecondsToTime; diff --git a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js index 9019c53ccc6f..dcf06de0af6a 100644 --- a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js +++ b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js @@ -13,8 +13,7 @@ const VideoPopoverMenuContext = React.createContext(null); function VideoPopoverMenuContextProvider({children}) { const {currentVideoPlayerRef} = usePlaybackContext(); const {translate} = useLocalize(); - const playbackSpeeds = CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS; - const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(playbackSpeeds[2]); + const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS[CONST.VIDEO_PLAYER.DEFAULT_PLAYBACK_SPEED_INDEX]); const updatePlaybackSpeed = useCallback( (speed) => { @@ -44,7 +43,7 @@ function VideoPopoverMenuContextProvider({children}) { icon: Expensicons.Meter, text: translate('videoPlayer.playbackSpeed'), subMenuItems: [ - ..._.map(playbackSpeeds, (speed) => ({ + ..._.map(CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS, (speed) => ({ icon: currentPlaybackSpeed === speed ? Expensicons.Checkmark : null, text: speed.toString(), onSelected: () => { @@ -55,7 +54,7 @@ function VideoPopoverMenuContextProvider({children}) { ], }, ], - [currentPlaybackSpeed, downloadAttachment, playbackSpeeds, translate, updatePlaybackSpeed], + [currentPlaybackSpeed, downloadAttachment, translate, updatePlaybackSpeed], ); const contextValue = useMemo(() => ({menuItems, updatePlaybackSpeed}), [menuItems, updatePlaybackSpeed]); diff --git a/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js b/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js index e7901617f1b2..9e6069e4d979 100644 --- a/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js +++ b/src/components/VideoPlayerPreview/VideoPlayerThumbnail.js @@ -3,7 +3,7 @@ import React from 'react'; import {View} from 'react-native'; import Icon from '@components/Icon'; import * as Expensicons from '@components/Icon/Expensicons'; -import ImageWithSizeCalculation from '@components/Image'; +import Image from '@components/Image'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; import useThemeStyles from '@hooks/useThemeStyles'; import variables from '@styles/variables'; @@ -18,20 +18,18 @@ const propTypes = { }; const defaultProps = { - thumbnailUrl: null, + thumbnailUrl: undefined, }; function VideoPlayerThumbnail({thumbnailUrl, onPress, accessibilityLabel}) { const styles = useThemeStyles(); - const updateImageSize = () => {}; return ( {thumbnailUrl && ( - @@ -59,6 +57,6 @@ function VideoPlayerThumbnail({thumbnailUrl, onPress, accessibilityLabel}) { VideoPlayerThumbnail.propTypes = propTypes; VideoPlayerThumbnail.defaultProps = defaultProps; -VideoPlayerThumbnail.displayName = 'AttachmentView'; +VideoPlayerThumbnail.displayName = 'VideoPlayerThumbnail'; export default VideoPlayerThumbnail; diff --git a/src/components/VideoPlayerPreview/index.js b/src/components/VideoPlayerPreview/index.js index 135e86c478da..3600a6906d8d 100644 --- a/src/components/VideoPlayerPreview/index.js +++ b/src/components/VideoPlayerPreview/index.js @@ -9,6 +9,7 @@ import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; import useThumbnailDimensions from '@hooks/useThumbnailDimensions'; import useWindowDimensions from '@hooks/useWindowDimensions'; +import CONST from '@src/CONST'; import VideoPlayerThumbnail from './VideoPlayerThumbnail'; const propTypes = { @@ -23,15 +24,15 @@ const propTypes = { fileName: PropTypes.string.isRequired, - showModal: PropTypes.func.isRequired, + onShowModalPress: PropTypes.func.isRequired, }; const defaultProps = { - videoDimensions: {width: 1900, height: 1400}, - thumbnailUrl: null, + videoDimensions: CONST.VIDEO_PLAYER.DEFAULT_VIDEO_DIMENSIONS, + thumbnailUrl: undefined, }; -function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, showModal}) { +function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, onShowModalPress}) { const styles = useThemeStyles(); const {translate} = useLocalize(); const {currentlyPlayingURL, updateCurrentlyPlayingURL} = usePlaybackContext(); @@ -47,7 +48,7 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, const handleOnPress = () => { updateCurrentlyPlayingURL(videoUrl); if (isSmallScreenWidth) { - showModal(); + onShowModalPress(); } }; @@ -70,7 +71,7 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, <> @@ -79,7 +80,7 @@ function VideoPlayerPreview({videoUrl, thumbnailUrl, fileName, videoDimensions, src={Expensicons.Expand} style={styles.videoExpandButton} tooltipText={translate('videoPlayer.expand')} - onPress={showModal} + onPress={onShowModalPress} small /> diff --git a/src/hooks/useThumbnailDimensions.ts b/src/hooks/useThumbnailDimensions.ts index 6a4b954c324d..e48f842bb69e 100644 --- a/src/hooks/useThumbnailDimensions.ts +++ b/src/hooks/useThumbnailDimensions.ts @@ -1,13 +1,23 @@ import {useMemo} from 'react'; +import type {StyleProp, ViewStyle} from 'react-native'; +import type {DimensionValue} from 'react-native/Libraries/StyleSheet/StyleSheetTypes'; import CONST from '@src/CONST'; import useWindowDimensions from './useWindowDimensions'; -export default function useThumbnailDimensions(width: number, height: number) { +type ThumbnailDimensions = { + thumbnailDimensionsStyles: { + aspectRatio?: number | string | undefined; + height?: DimensionValue | undefined; + width?: DimensionValue | undefined; + } & StyleProp; +}; + +export default function useThumbnailDimensions(width: number, height: number): ThumbnailDimensions { const {isSmallScreenWidth} = useWindowDimensions(); const fixedDimenstion = isSmallScreenWidth ? CONST.THUMBNAIL_IMAGE.SMALL_SCREEN.SIZE : CONST.THUMBNAIL_IMAGE.WIDE_SCREEN.SIZE; const thumbnailDimensionsStyles = useMemo(() => { - const aspectRatio = width / height || 1; + const aspectRatio = (height && width / height) || 1; if (width > height) { return {width: fixedDimenstion, aspectRatio}; } From c3f51167fd7b9e115eff84886d4a3041b832eac8 Mon Sep 17 00:00:00 2001 From: Mykhailo Kravchenko Date: Wed, 24 Jan 2024 16:50:41 +0100 Subject: [PATCH 179/701] integrate insertTagIntoReportTagsSting --- src/libs/IOUUtils.ts | 16 +++++++++++++++- src/libs/actions/IOU.js | 11 ++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/libs/IOUUtils.ts b/src/libs/IOUUtils.ts index 11dd0f5badda..701f8d5e6897 100644 --- a/src/libs/IOUUtils.ts +++ b/src/libs/IOUUtils.ts @@ -127,4 +127,18 @@ function isValidMoneyRequestType(iouType: string): boolean { return moneyRequestType.includes(iouType); } -export {calculateAmount, updateIOUOwnerAndTotal, isIOUReportPendingCurrencyConversion, isValidMoneyRequestType, navigateToStartMoneyRequestStep, navigateToStartStepIfScanFileCannotBeRead}; +function insertTagIntoReportTagsSting(reportTags: string, tag: string, tagIndex: number): string { + const splittedReportTags = reportTags.split(CONST.COLON); + splittedReportTags[tagIndex] = tag; + return splittedReportTags.join(CONST.COLON).replace(/:*$/, ''); +} + +export { + calculateAmount, + updateIOUOwnerAndTotal, + isIOUReportPendingCurrencyConversion, + isValidMoneyRequestType, + navigateToStartMoneyRequestStep, + navigateToStartStepIfScanFileCannotBeRead, + insertTagIntoReportTagsSting, +}; diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index b856193ef90a..2775d23aefca 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -236,22 +236,19 @@ function resetMoneyRequestCategory_temporaryForRefactor(transactionID) { * @param {Number} tagIndex */ function setMoneyRequestTag_temporaryForRefactor(transactionID, reportTags, tag, tagIndex) { - const splittedReportTags = reportTags.split(CONST.COLON); - splittedReportTags[tagIndex] = tag; - Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, { - tag: splittedReportTags.join(CONST.COLON), + tag: IOUUtils.insertTagIntoReportTagsSting(reportTags, tag, tagIndex), }); } /* * @param {String} transactionID * @param {String} reportTags - * @param {String} tag + * @param {Number} tagIndex */ -function resetMoneyRequestTag_temporaryForRefactor(transactionID, reportTags, tag) { +function resetMoneyRequestTag_temporaryForRefactor(transactionID, reportTags, tagIndex) { Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, { - tag: reportTags.replace(tag, '').replace(/:*$/, ''), + tag: IOUUtils.insertTagIntoReportTagsSting(reportTags, '', tagIndex), }); } From be603aacca037c3e6421dea8308dc546f88158da Mon Sep 17 00:00:00 2001 From: Mykhailo Kravchenko Date: Wed, 24 Jan 2024 16:51:02 +0100 Subject: [PATCH 180/701] remove fallback value --- src/components/ReportActionItem/MoneyRequestView.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/MoneyRequestView.js b/src/components/ReportActionItem/MoneyRequestView.js index c1252b5c5db8..c532a07305c0 100644 --- a/src/components/ReportActionItem/MoneyRequestView.js +++ b/src/components/ReportActionItem/MoneyRequestView.js @@ -354,7 +354,7 @@ function MoneyRequestView({report, parentReport, parentReportActions, policyCate > Date: Wed, 24 Jan 2024 16:51:25 +0100 Subject: [PATCH 181/701] integrate editing --- src/pages/EditRequestPage.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/pages/EditRequestPage.js b/src/pages/EditRequestPage.js index 52fb54e19082..0d4c51fc2f45 100644 --- a/src/pages/EditRequestPage.js +++ b/src/pages/EditRequestPage.js @@ -11,6 +11,7 @@ import tagPropTypes from '@components/tagPropTypes'; import transactionPropTypes from '@components/transactionPropTypes'; import compose from '@libs/compose'; import * as CurrencyUtils from '@libs/CurrencyUtils'; +import * as IOUUtils from '@libs/IOUUtils'; import Navigation from '@libs/Navigation/Navigation'; import * as OptionsListUtils from '@libs/OptionsListUtils'; import * as PolicyUtils from '@libs/PolicyUtils'; @@ -81,7 +82,7 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep comment: transactionDescription, merchant: transactionMerchant, category: transactionCategory, - // tag: reportTags, + tag: reportTags, } = ReportUtils.getTransactionDetails(transaction); const defaultCurrency = lodashGet(route, 'params.currency', '') || transactionCurrency; @@ -89,10 +90,10 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep const rawTagIndex = lodashGet(route, ['params', 'tagIndex'], undefined); const tagIndex = +rawTagIndex; - const transactionTag = TransactionUtils.getTag(transaction, +tagIndex); + const tag = TransactionUtils.getTag(transaction, tagIndex); const policyTagList = useMemo(() => PolicyUtils.getTagLists(policyTags), [policyTags]); const policyTagValueList = useMemo(() => _.flatten(_.map(policyTagList, ({tags}) => _.values(tags))), [policyTagList]); - const policyTagListName = PolicyUtils.getTagListName(policyTags, +tagIndex); + const policyTagListName = PolicyUtils.getTagListName(policyTags, tagIndex); // A flag for verifying that the current report is a sub-report of a workspace chat const isPolicyExpenseChat = ReportUtils.isGroupPolicy(report); @@ -101,7 +102,7 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep const shouldShowCategories = isPolicyExpenseChat && (transactionCategory || OptionsListUtils.hasEnabledOptions(lodashValues(policyCategories))); // A flag for showing the tags page - const shouldShowTags = isPolicyExpenseChat && (transactionTag || OptionsListUtils.hasEnabledOptions(policyTagValueList)); + const shouldShowTags = isPolicyExpenseChat && (reportTags || OptionsListUtils.hasEnabledOptions(policyTagValueList)); // Decides whether to allow or disallow editing a money request useEffect(() => { @@ -166,14 +167,14 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep const saveTag = useCallback( ({tag: newTag}) => { let updatedTag = newTag; - if (newTag === transactionTag) { + if (newTag === tag) { // In case the same tag has been selected, reset the tag. updatedTag = ''; } - IOU.updateMoneyRequestTag(transaction.transactionID, report.reportID, updatedTag); + IOU.updateMoneyRequestTag(transaction.transactionID, report.reportID, IOUUtils.insertTagIntoReportTagsSting(reportTags, updatedTag, tagIndex)); Navigation.dismissModal(); }, - [transactionTag, transaction.transactionID, report.reportID], + [tag, reportTags, tagIndex, transaction.transactionID, report.reportID], ); const saveCategory = useCallback( @@ -253,7 +254,7 @@ function EditRequestPage({report, route, policyCategories, policyTags, parentRep if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.TAG && shouldShowTags) { return ( Date: Wed, 24 Jan 2024 16:51:34 +0100 Subject: [PATCH 182/701] use updated reset --- src/pages/iou/request/step/IOURequestStepTag.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/iou/request/step/IOURequestStepTag.js b/src/pages/iou/request/step/IOURequestStepTag.js index f272042ff16d..76609d2a818d 100644 --- a/src/pages/iou/request/step/IOURequestStepTag.js +++ b/src/pages/iou/request/step/IOURequestStepTag.js @@ -66,7 +66,7 @@ function IOURequestStepTag({ */ const updateTag = (selectedTag) => { if (tag === selectedTag.searchText) { - IOU.resetMoneyRequestTag_temporaryForRefactor(transactionID, reportTags, selectedTag.searchText); + IOU.resetMoneyRequestTag_temporaryForRefactor(transactionID, reportTags, tagIndex); } else { IOU.setMoneyRequestTag_temporaryForRefactor(transactionID, reportTags, selectedTag.searchText, tagIndex); } From 66f2ab79cfe39b851e87df270a117f50b6dd384b Mon Sep 17 00:00:00 2001 From: Mykhailo Kravchenko Date: Wed, 24 Jan 2024 16:53:00 +0100 Subject: [PATCH 183/701] todo added --- src/libs/Violations/ViolationsUtils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/Violations/ViolationsUtils.ts b/src/libs/Violations/ViolationsUtils.ts index c0558d7487cf..9998939f7b75 100644 --- a/src/libs/Violations/ViolationsUtils.ts +++ b/src/libs/Violations/ViolationsUtils.ts @@ -53,7 +53,8 @@ const ViolationsUtils = { if (policyRequiresTags) { const hasTagOutOfPolicyViolation = transactionViolations.some((violation) => violation.name === 'tagOutOfPolicy'); const hasMissingTagViolation = transactionViolations.some((violation) => violation.name === 'missingTag'); - const isTagInPolicy = Boolean(policyTags[transaction.tag]?.enabled); + // TODO: Implement + const isTagInPolicy = false; // Boolean(policyTags[transaction.tag]?.enabled); // Add 'tagOutOfPolicy' violation if tag is not in policy if (!hasTagOutOfPolicyViolation && transaction.tag && !isTagInPolicy) { From cf690fb39da03ab015b3270113bba327fde56f94 Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Wed, 24 Jan 2024 16:53:09 +0100 Subject: [PATCH 184/701] Add missing display names --- .../Attachments/AttachmentView/AttachmentViewVideo/index.js | 1 + .../HTMLEngineProvider/HTMLRenderers/VideoRenderer.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js index 0c99c82fbdaa..951e86385128 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewVideo/index.js @@ -32,5 +32,6 @@ function AttachmentViewVideo({source, isHovered, shouldUseSharedVideoElement}) { AttachmentViewVideo.propTypes = propTypes; AttachmentViewVideo.defaultProps = defaultProps; +AttachmentViewVideo.displayName = 'AttachmentViewVideo'; export default React.memo(AttachmentViewVideo); diff --git a/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js b/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js index 58a695aeb2fa..f002d8df1e47 100644 --- a/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js +++ b/src/components/HTMLEngineProvider/HTMLRenderers/VideoRenderer.js @@ -38,6 +38,6 @@ function VideoRenderer(props) { } VideoRenderer.propTypes = propTypes; -VideoRenderer.displayName = 'ImageRenderer'; +VideoRenderer.displayName = 'VideoRenderer'; export default VideoRenderer; From 2c877a1a00930148b6b2c468d8beb3661fb0dcff Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Wed, 24 Jan 2024 17:03:54 +0100 Subject: [PATCH 185/701] Fix lint --- .../BaseAnchorForAttachmentsOnly.tsx | 4 +--- .../extractAttachmentsFromReport.js | 1 - src/components/VideoPlayer/BaseVideoPlayer.js | 2 +- .../VideoPlayerContexts/PlaybackContext.js | 20 +++++++++++-------- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.tsx b/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.tsx index 9aac88abc6e6..9de60ff9018b 100644 --- a/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.tsx +++ b/src/components/AnchorForAttachmentsOnly/BaseAnchorForAttachmentsOnly.tsx @@ -1,13 +1,11 @@ import React from 'react'; -import {withOnyx} from 'react-native-onyx'; import type {OnyxEntry} from 'react-native-onyx'; +import {withOnyx} from 'react-native-onyx'; import AttachmentView from '@components/Attachments/AttachmentView'; import PressableWithoutFeedback from '@components/Pressable/PressableWithoutFeedback'; import {ShowContextMenuContext, showContextMenuForReport} from '@components/ShowContextMenuContext'; -import VideoPlayerPreview from '@components/VideoPlayerPreview'; import addEncryptedAuthTokenToURL from '@libs/addEncryptedAuthTokenToURL'; import fileDownload from '@libs/fileDownload'; -import Navigation from '@libs/Navigation/Navigation'; import * as ReportUtils from '@libs/ReportUtils'; import * as Download from '@userActions/Download'; import CONST from '@src/CONST'; diff --git a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js index 741b98f908cf..d9cc39981154 100644 --- a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js +++ b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js @@ -1,4 +1,3 @@ -import Str from 'expensify-common/lib/str'; import {Parser as HtmlParser} from 'htmlparser2'; import _ from 'underscore'; import * as FileUtils from '@libs/fileDownload/FileUtils'; diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index f2a410d6f382..cc724aa2cf5f 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -1,5 +1,5 @@ /* eslint-disable no-underscore-dangle */ -import {ResizeMode, Video} from 'expo-av'; +import {Video} from 'expo-av'; import React, {useCallback, useEffect, useRef, useState} from 'react'; import {View} from 'react-native'; import FullScreenLoadingIndicator from '@components/FullscreenLoadingIndicator'; diff --git a/src/components/VideoPlayerContexts/PlaybackContext.js b/src/components/VideoPlayerContexts/PlaybackContext.js index 3316419701dd..bcaa863ab508 100644 --- a/src/components/VideoPlayerContexts/PlaybackContext.js +++ b/src/components/VideoPlayerContexts/PlaybackContext.js @@ -12,27 +12,31 @@ function PlaybackContextProvider({children}) { const {currentReportID} = useCurrentReportID(); const pauseVideo = useCallback(() => { - if (currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.setStatusAsync) { - currentVideoPlayerRef.current.setStatusAsync({shouldPlay: false}); + if (!(currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.setStatusAsync)) { + return; } + currentVideoPlayerRef.current.setStatusAsync({shouldPlay: false}); }, [currentVideoPlayerRef]); const stopVideo = useCallback(() => { - if (currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.stopAsync) { - currentVideoPlayerRef.current.stopAsync({shouldPlay: false}); + if (!(currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.stopAsync)) { + return; } + currentVideoPlayerRef.current.stopAsync({shouldPlay: false}); }, [currentVideoPlayerRef]); const playVideo = useCallback(() => { - if (currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.setStatusAsync) { - currentVideoPlayerRef.current.setStatusAsync({shouldPlay: true}); + if (!(currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.setStatusAsync)) { + return; } + currentVideoPlayerRef.current.setStatusAsync({shouldPlay: true}); }, [currentVideoPlayerRef]); const unloadVideo = useCallback(() => { - if (currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.unloadAsync) { - currentVideoPlayerRef.current.unloadAsync(); + if (!(currentVideoPlayerRef && currentVideoPlayerRef.current && currentVideoPlayerRef.current.unloadAsync)) { + return; } + currentVideoPlayerRef.current.unloadAsync(); }, [currentVideoPlayerRef]); const updateCurrentlyPlayingURL = useCallback( From 36a4f7404867b3a4411cba22cc26da479272cfd1 Mon Sep 17 00:00:00 2001 From: s-alves10 Date: Thu, 25 Jan 2024 04:57:34 -0600 Subject: [PATCH 186/701] fix: include created parameter in split bill API calls --- src/libs/actions/IOU.js | 18 ++++++++++++------ .../request/step/IOURequestStepConfirmation.js | 2 ++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index eb9541edcad2..1a9202b1d185 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -1362,13 +1362,14 @@ function requestMoney( * @param {String} comment * @param {String} currency * @param {String} merchant + * @param {String} created * @param {String} category * @param {String} tag * @param {String} existingSplitChatReportID - the report ID where the split bill happens, could be a group chat or a workspace chat * * @return {Object} */ -function createSplitsAndOnyxData(participants, currentUserLogin, currentUserAccountID, amount, comment, currency, merchant, category, tag, existingSplitChatReportID = '') { +function createSplitsAndOnyxData(participants, currentUserLogin, currentUserAccountID, amount, comment, currency, merchant, created, category, tag, existingSplitChatReportID = '') { const currentUserEmailForIOUSplit = OptionsListUtils.addSMSDomainIfPhoneNumber(currentUserLogin); const participantAccountIDs = _.map(participants, (participant) => Number(participant.accountID)); const existingSplitChatReport = @@ -1383,7 +1384,7 @@ function createSplitsAndOnyxData(participants, currentUserLogin, currentUserAcco currency, CONST.REPORT.SPLIT_REPORTID, comment, - '', + created, '', '', merchant || Localize.translateLocal('iou.request'), @@ -1584,7 +1585,7 @@ function createSplitsAndOnyxData(participants, currentUserLogin, currentUserAcco currency, oneOnOneIOUReport.reportID, comment, - '', + created, CONST.IOU.TYPE.SPLIT, splitTransaction.transactionID, merchant || Localize.translateLocal('iou.request'), @@ -1707,11 +1708,12 @@ function createSplitsAndOnyxData(participants, currentUserLogin, currentUserAcco * @param {String} comment * @param {String} currency * @param {String} merchant + * @param {String} created * @param {String} category * @param {String} tag * @param {String} existingSplitChatReportID - Either a group DM or a workspace chat */ -function splitBill(participants, currentUserLogin, currentUserAccountID, amount, comment, currency, merchant, category, tag, existingSplitChatReportID = '') { +function splitBill(participants, currentUserLogin, currentUserAccountID, amount, comment, currency, merchant, created, category, tag, existingSplitChatReportID = '') { const {splitData, splits, onyxData} = createSplitsAndOnyxData( participants, currentUserLogin, @@ -1720,6 +1722,7 @@ function splitBill(participants, currentUserLogin, currentUserAccountID, amount, comment, currency, merchant, + created, category, tag, existingSplitChatReportID, @@ -1734,6 +1737,7 @@ function splitBill(participants, currentUserLogin, currentUserAccountID, amount, comment, category, merchant, + created, tag, transactionID: splitData.transactionID, reportActionID: splitData.reportActionID, @@ -1756,11 +1760,12 @@ function splitBill(participants, currentUserLogin, currentUserAccountID, amount, * @param {String} comment * @param {String} currency * @param {String} merchant + * @param {String} created * @param {String} category * @param {String} tag */ -function splitBillAndOpenReport(participants, currentUserLogin, currentUserAccountID, amount, comment, currency, merchant, category, tag) { - const {splitData, splits, onyxData} = createSplitsAndOnyxData(participants, currentUserLogin, currentUserAccountID, amount, comment, currency, merchant, category, tag); +function splitBillAndOpenReport(participants, currentUserLogin, currentUserAccountID, amount, comment, currency, merchant, created, category, tag) { + const {splitData, splits, onyxData} = createSplitsAndOnyxData(participants, currentUserLogin, currentUserAccountID, amount, comment, currency, merchant, created, category, tag); API.write( 'SplitBillAndOpenReport', @@ -1770,6 +1775,7 @@ function splitBillAndOpenReport(participants, currentUserLogin, currentUserAccou splits: JSON.stringify(splits), currency, merchant, + created, comment, category, tag, diff --git a/src/pages/iou/request/step/IOURequestStepConfirmation.js b/src/pages/iou/request/step/IOURequestStepConfirmation.js index 9df2564ae38d..1024a5b15e8b 100644 --- a/src/pages/iou/request/step/IOURequestStepConfirmation.js +++ b/src/pages/iou/request/step/IOURequestStepConfirmation.js @@ -241,6 +241,7 @@ function IOURequestStepConfirmation({ trimmedComment, transaction.currency, transaction.merchant, + transaction.created, transaction.category, transaction.tag, report.reportID, @@ -258,6 +259,7 @@ function IOURequestStepConfirmation({ trimmedComment, transaction.currency, transaction.merchant, + transaction.created, transaction.category, transaction.tag, ); From 91c597357802156497c7a7dc6b4442a96de4e1d5 Mon Sep 17 00:00:00 2001 From: Tomasz Misiukiewicz Date: Thu, 25 Jan 2024 12:08:25 +0100 Subject: [PATCH 187/701] update background color for troubleshoot page --- src/pages/settings/AboutPage/TroubleshootingPage.tsx | 4 ++-- src/styles/theme/themes/dark.ts | 4 ++++ src/styles/theme/themes/light.ts | 4 ++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/pages/settings/AboutPage/TroubleshootingPage.tsx b/src/pages/settings/AboutPage/TroubleshootingPage.tsx index 5fbb6117134d..0df00e1e928a 100644 --- a/src/pages/settings/AboutPage/TroubleshootingPage.tsx +++ b/src/pages/settings/AboutPage/TroubleshootingPage.tsx @@ -34,7 +34,7 @@ function TroubleshootingPage() { { translationKey: 'initialSettingsPage.troubleshooting.viewConsole', icon: Expensicons.Gear, - action: () => console.log('ok'), + action: () => {}, }, ]; @@ -50,7 +50,7 @@ function TroubleshootingPage() { Navigation.goBack(ROUTES.SETTINGS_ABOUT)} - backgroundColor={theme.PAGE_THEMES[SCREENS.SETTINGS.PREFERENCES.ROOT].backgroundColor} + backgroundColor={theme.PAGE_THEMES[SCREENS.SETTINGS.TROUBLESHOOTING].backgroundColor} illustration={LottieAnimations.Desk} > diff --git a/src/styles/theme/themes/dark.ts b/src/styles/theme/themes/dark.ts index 4d4234e167ef..340695145a6c 100644 --- a/src/styles/theme/themes/dark.ts +++ b/src/styles/theme/themes/dark.ts @@ -126,6 +126,10 @@ const darkTheme = { backgroundColor: colors.productDark200, statusBarStyle: CONST.STATUS_BAR_STYLE.LIGHT_CONTENT, }, + [SCREENS.SETTINGS.TROUBLESHOOTING]: { + backgroundColor: colors.blue700, + statusBarStyle: CONST.STATUS_BAR_STYLE.LIGHT_CONTENT, + }, [SCREENS.SETTINGS.ABOUT]: { backgroundColor: colors.yellow600, statusBarStyle: CONST.STATUS_BAR_STYLE.LIGHT_CONTENT, diff --git a/src/styles/theme/themes/light.ts b/src/styles/theme/themes/light.ts index 9cc5b03ac777..c8981d8fba99 100644 --- a/src/styles/theme/themes/light.ts +++ b/src/styles/theme/themes/light.ts @@ -130,6 +130,10 @@ const lightTheme = { backgroundColor: colors.yellow600, statusBarStyle: CONST.STATUS_BAR_STYLE.LIGHT_CONTENT, }, + [SCREENS.SETTINGS.TROUBLESHOOTING]: { + backgroundColor: colors.blue700, + statusBarStyle: CONST.STATUS_BAR_STYLE.LIGHT_CONTENT, + }, [SCREENS.RIGHT_MODAL.REFERRAL]: { backgroundColor: colors.pink800, statusBarStyle: CONST.STATUS_BAR_STYLE.LIGHT_CONTENT, From 43519be814b183d53c72d21f857d0b761cbf365b Mon Sep 17 00:00:00 2001 From: Alberto Date: Thu, 25 Jan 2024 12:35:38 +0100 Subject: [PATCH 188/701] Do not set iouReport on cancelPayment --- src/libs/actions/IOU.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/libs/actions/IOU.js b/src/libs/actions/IOU.js index a68822b3be4b..0923c4144d18 100644 --- a/src/libs/actions/IOU.js +++ b/src/libs/actions/IOU.js @@ -3447,19 +3447,6 @@ function cancelPayment(expenseReport, chatReport) { statusNum, }, }, - ...(chatReport.reportID - ? [ - { - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.REPORT}${chatReport.reportID}`, - value: { - ...chatReport, - hasOutstandingChildRequest: true, - iouReportID: expenseReport.reportID, - }, - }, - ] - : []), ]; const successData = [ From 29d09d54955c14238490f2a8254ecd0860830b9e Mon Sep 17 00:00:00 2001 From: Tomasz Misiukiewicz Date: Thu, 25 Jan 2024 12:42:50 +0100 Subject: [PATCH 189/701] update lottie animation --- assets/animations/Desk.lottie | Bin 169992 -> 165417 bytes src/components/LottieAnimations/index.tsx | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/animations/Desk.lottie b/assets/animations/Desk.lottie index dc568d176bb2dcc308b9e5b5bf65c53193ab54f1..a959c8759e4517459f8bb251b8c2309cc5a79466 100644 GIT binary patch literal 165417 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 z%0D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 literal 169992 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

jHV9YAN9X$df$eqDB~H2d!ATs{I&!t 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 diff --git a/src/components/LottieAnimations/index.tsx b/src/components/LottieAnimations/index.tsx index 36640536f74b..100b4bb3f170 100644 --- a/src/components/LottieAnimations/index.tsx +++ b/src/components/LottieAnimations/index.tsx @@ -58,8 +58,8 @@ const DotLottieAnimations: Record = { }, Desk: { file: require('@assets/animations/Desk.lottie'), - w: 200, - h: 145, + w: 375, + h: 240, }, }; From a983a2d4f0fa0d2e76c75f3eeaa305e710ceb3a0 Mon Sep 17 00:00:00 2001 From: Tomasz Misiukiewicz Date: Thu, 25 Jan 2024 12:58:04 +0100 Subject: [PATCH 190/701] update type for menu items --- src/pages/settings/AboutPage/TroubleshootingPage.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/pages/settings/AboutPage/TroubleshootingPage.tsx b/src/pages/settings/AboutPage/TroubleshootingPage.tsx index 0df00e1e928a..c3120b70a79d 100644 --- a/src/pages/settings/AboutPage/TroubleshootingPage.tsx +++ b/src/pages/settings/AboutPage/TroubleshootingPage.tsx @@ -1,5 +1,6 @@ import React, {useMemo} from 'react'; import {View} from 'react-native'; +import type {SvgProps} from 'react-native-svg'; import * as Expensicons from '@components/Icon/Expensicons'; import IllustratedHeaderPageLayout from '@components/IllustratedHeaderPageLayout'; import LottieAnimations from '@components/LottieAnimations'; @@ -14,9 +15,16 @@ import useTheme from '@hooks/useTheme'; import useThemeStyles from '@hooks/useThemeStyles'; import Navigation from '@libs/Navigation/Navigation'; import * as Report from '@userActions/Report'; +import type {TranslationPaths} from '@src/languages/types'; import ROUTES from '@src/ROUTES'; import SCREENS from '@src/SCREENS'; +type BaseMenuItem = { + translationKey: TranslationPaths; + icon: React.FC; + action: () => void; +}; + function TroubleshootingPage() { const {translate} = useLocalize(); const theme = useTheme(); @@ -25,7 +33,7 @@ function TroubleshootingPage() { const wipeOnyx = useOnyxWipe(); const menuItems = useMemo(() => { - const baseMenuItems = [ + const baseMenuItems: BaseMenuItem[] = [ { translationKey: 'initialSettingsPage.troubleshooting.resetAndRefresh', icon: Expensicons.RotateLeft, From 27d4d330c5458ca8c53ad3a549082557254135bf Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Thu, 25 Jan 2024 13:11:14 +0100 Subject: [PATCH 191/701] Code review changes --- src/CONST.ts | 1 - .../extractAttachmentsFromReport.js | 2 +- .../VideoPopoverMenuContext.js | 2 +- src/styles/index.ts | 16 ++++++++-------- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/CONST.ts b/src/CONST.ts index 24dfacc6d532..a7edaee43a1d 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -3157,7 +3157,6 @@ const CONST = { VIDEO_PLAYER: { POPOVER_Y_OFFSET: -30, - DEFAULT_PLAYBACK_SPEED_INDEX: 2, PLAYBACK_SPEEDS: [0.25, 0.5, 1, 1.5, 2], HIDE_TIME_TEXT_WIDTH: 250, MIN_WIDTH: 170, diff --git a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js index d9cc39981154..42e32489bbf4 100644 --- a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js +++ b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js @@ -31,7 +31,7 @@ function extractAttachmentsFromReport(parentReportAction, reportActions) { return; } - if (name === 'img') { + if (name === 'img' && attribs.src) { const expensifySource = attribs[CONST.ATTACHMENT_SOURCE_ATTRIBUTE]; const source = tryResolveUrlFromApiRoot(expensifySource || attribs.src); const fileName = attribs[CONST.ATTACHMENT_ORIGINAL_FILENAME_ATTRIBUTE] || FileUtils.getFileName(`${source}`); diff --git a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js index dcf06de0af6a..23d1aec1817c 100644 --- a/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js +++ b/src/components/VideoPlayerContexts/VideoPopoverMenuContext.js @@ -13,7 +13,7 @@ const VideoPopoverMenuContext = React.createContext(null); function VideoPopoverMenuContextProvider({children}) { const {currentVideoPlayerRef} = usePlaybackContext(); const {translate} = useLocalize(); - const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS[CONST.VIDEO_PLAYER.DEFAULT_PLAYBACK_SPEED_INDEX]); + const [currentPlaybackSpeed, setCurrentPlaybackSpeed] = useState(CONST.VIDEO_PLAYER.PLAYBACK_SPEEDS[2]); const updatePlaybackSpeed = useCallback( (speed) => { diff --git a/src/styles/index.ts b/src/styles/index.ts index 5a4ef23f91d2..0fcf5ee38c2a 100644 --- a/src/styles/index.ts +++ b/src/styles/index.ts @@ -4196,15 +4196,15 @@ const styles = (theme: ThemeColors) => progressBarOutline: { width: '100%', - height: 5, - borderRadius: 10, + height: 4, + borderRadius: 8, backgroundColor: theme.transparentWhite, }, progressBarFill: { height: '100%', backgroundColor: colors.white, - borderRadius: 10, + borderRadius: 8, }, videoPlayerControlsRow: { @@ -4235,8 +4235,8 @@ const styles = (theme: ThemeColors) => width: 4, height: 60, backgroundColor: theme.transparentWhite, - borderRadius: 10, - marginTop: 10, + borderRadius: 8, + marginTop: 8, alignItems: 'center', justifyContent: 'flex-end', }, @@ -4253,7 +4253,7 @@ const styles = (theme: ThemeColors) => width: 4, height: 20, backgroundColor: colors.white, - borderRadius: 10, + borderRadius: 8, }, videoIconButton: { @@ -4286,8 +4286,8 @@ const styles = (theme: ThemeColors) => videoExpandButton: { position: 'absolute', - top: 10, - right: 10, + top: 12, + right: 12, backgroundColor: theme.videoPlayerBG, borderRadius: 8, padding: 8, From 6d4ab71ab6b489a972f45e10c8fefcedc61626c5 Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Thu, 25 Jan 2024 14:35:35 +0100 Subject: [PATCH 192/701] Fix crash on popover close --- src/components/PopoverMenu.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/PopoverMenu.tsx b/src/components/PopoverMenu.tsx index 1041197ccc40..15825ddcd073 100644 --- a/src/components/PopoverMenu.tsx +++ b/src/components/PopoverMenu.tsx @@ -179,7 +179,7 @@ function PopoverMenu({ const onModalHide = () => { setFocusedIndex(-1); if (selectedItemIndex.current !== null) { - menuItems[selectedItemIndex.current].onSelected(); + currentMenuItems[selectedItemIndex.current].onSelected(); selectedItemIndex.current = null; } }; From 79867d6d992e2f61ddcc888896769bbf54c4c88d Mon Sep 17 00:00:00 2001 From: Kamil Owczarz Date: Thu, 25 Jan 2024 17:31:44 +0100 Subject: [PATCH 193/701] Fix not showing video controls on mobile --- src/components/VideoPlayer/BaseVideoPlayer.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/VideoPlayer/BaseVideoPlayer.js b/src/components/VideoPlayer/BaseVideoPlayer.js index cc724aa2cf5f..8a7479cb8fda 100644 --- a/src/components/VideoPlayer/BaseVideoPlayer.js +++ b/src/components/VideoPlayer/BaseVideoPlayer.js @@ -9,6 +9,7 @@ import VideoPopoverMenu from '@components/VideoPopoverMenu'; import useThemeStyles from '@hooks/useThemeStyles'; import useWindowDimensions from '@hooks/useWindowDimensions'; import addEncryptedAuthTokenToURL from '@libs/addEncryptedAuthTokenToURL'; +import * as DeviceCapabilities from '@libs/DeviceCapabilities'; import {videoPlayerDefaultProps, videoPlayerPropTypes} from './propTypes'; import VideoPlayerControls from './VideoPlayerControls'; @@ -44,6 +45,8 @@ function BaseVideoPlayer({ const [sourceURL] = useState(url.includes('blob:') ? url : addEncryptedAuthTokenToURL(url)); const [isPopoverVisible, setIsPopoverVisible] = useState(false); const [popoverAnchorPosition, setPopoverAnchorPosition] = useState({horizontal: 0, vertical: 0}); + const canUseTouchScreen = DeviceCapabilities.canUseTouchScreen(); + const showPopoverMenu = (e) => { setPopoverAnchorPosition({horizontal: e.nativeEvent.pageX, vertical: e.nativeEvent.pageY}); setIsPopoverVisible(true); @@ -146,7 +149,7 @@ function BaseVideoPlayer({ {isLoading && } - {!isLoading && (isPopoverVisible || isHovered) && ( + {!isLoading && (isPopoverVisible || isHovered || canUseTouchScreen) && ( Date: Thu, 25 Jan 2024 19:39:39 +0100 Subject: [PATCH 194/701] Update expensify-common --- package-lock.json | 169 +++++++++++++++++---------- package.json | 2 +- patches/expensify-common+1.0.0.patch | 15 --- 3 files changed, 110 insertions(+), 76 deletions(-) delete mode 100644 patches/expensify-common+1.0.0.patch diff --git a/package-lock.json b/package-lock.json index 3b3bbe9de128..f36cc7ae49ee 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "date-fns-tz": "^2.0.0", "dom-serializer": "^0.2.2", "domhandler": "^4.3.0", - "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#c6bb3cfa56d12af9fa02e2bfc729646f5b64ef44", + "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#d91d7a902c437d5eed2da108b20fd707bf7a7577", "expo": "^50.0.0-preview.7", "expo-av": "~13.4.1", "expo-image": "1.10.1", @@ -22754,6 +22754,7 @@ "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" @@ -22933,6 +22934,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -25707,10 +25709,9 @@ } }, "node_modules/classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==", - "license": "MIT" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.4.0.tgz", + "integrity": "sha512-lWxiIlphgAhTLN657pwU/ofFxsUTOWc2CRIFeoV5st0MGRJHStUnWIUJgDHxjUO/F0mXzGufXIM4Lfu/8h+MpA==" }, "node_modules/clean-css": { "version": "5.3.2", @@ -27820,6 +27821,7 @@ "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==", + "dev": true, "dependencies": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -29018,6 +29020,7 @@ "version": "1.22.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.1", @@ -29122,6 +29125,7 @@ "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", @@ -29145,6 +29149,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "license": "MIT", "dependencies": { "is-callable": "^1.1.4", @@ -31100,11 +31105,11 @@ }, "node_modules/expensify-common": { "version": "1.0.0", - "resolved": "git+ssh://git@github.com/Expensify/expensify-common.git#c6bb3cfa56d12af9fa02e2bfc729646f5b64ef44", - "integrity": "sha512-a/UBkrerB57nB9xbBrFIeJG3IN0lVZV+/JWNbGMfT0FHxtg8/4sGWdC+AHqR3Bm01gwt67dd2csFferlZmTIsg==", + "resolved": "git+ssh://git@github.com/Expensify/expensify-common.git#d91d7a902c437d5eed2da108b20fd707bf7a7577", + "integrity": "sha512-4t6hHLXzMVN0Y9aPlGyLaA+F1oGt5o5qKmL78cWOIfSLvR2Aq10V0qtFGhXKaPmTdpI+ieVyNLH0QSUmVlwK8Q==", "license": "MIT", "dependencies": { - "classnames": "2.3.1", + "classnames": "2.4.0", "clipboard": "2.0.11", "html-entities": "^2.4.0", "jquery": "3.6.0", @@ -31115,8 +31120,7 @@ "react-dom": "16.12.0", "semver": "^7.5.2", "simply-deferred": "git+https://github.com/Expensify/simply-deferred.git#77a08a95754660c7bd6e0b6979fdf84e8e831bf5", - "string.prototype.replaceall": "^1.0.8", - "ua-parser-js": "^1.0.35", + "ua-parser-js": "^1.0.37", "underscore": "1.13.6" } }, @@ -31160,9 +31164,9 @@ } }, "node_modules/expensify-common/node_modules/ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==", + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", "funding": [ { "type": "opencollective", @@ -31171,9 +31175,12 @@ { "type": "paypal", "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" } ], - "license": "MIT", "engines": { "node": "*" } @@ -32720,6 +32727,7 @@ "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, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -32745,6 +32753,7 @@ "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, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -32872,6 +32881,7 @@ "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, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -33009,6 +33019,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, "license": "MIT", "dependencies": { "define-properties": "^1.1.3" @@ -33202,6 +33213,7 @@ "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, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -33246,6 +33258,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.1" @@ -34763,6 +34776,7 @@ "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", @@ -34892,6 +34906,7 @@ "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", @@ -34926,6 +34941,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "license": "MIT", "dependencies": { "has-bigints": "^1.0.1" @@ -34951,6 +34967,7 @@ "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, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -35053,6 +35070,7 @@ "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, "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -35303,6 +35321,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -35324,6 +35343,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -35397,6 +35417,7 @@ "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, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -35423,6 +35444,7 @@ "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, "license": "MIT", "dependencies": { "call-bind": "^1.0.2" @@ -35447,6 +35469,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" @@ -35462,6 +35485,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "license": "MIT", "dependencies": { "has-symbols": "^1.0.2" @@ -35529,6 +35553,7 @@ "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, "license": "MIT", "dependencies": { "call-bind": "^1.0.2" @@ -35599,6 +35624,7 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, "license": "MIT" }, "node_modules/isbinaryfile": { @@ -42204,6 +42230,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -42226,6 +42253,7 @@ "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, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -46644,6 +46672,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -47353,6 +47382,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -47392,6 +47422,7 @@ "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", @@ -49082,26 +49113,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.replaceall": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.replaceall/-/string.prototype.replaceall-1.0.8.tgz", - "integrity": "sha512-MmCXb9980obcnmbEd3guqVl6lXTxpP28zASfgAlAhlBMw5XehQeSKsdIWlAYtLxp/1GtALwex+2HyoIQtaLQwQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "is-regex": "^1.1.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", @@ -49118,6 +49134,7 @@ "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", @@ -49131,6 +49148,7 @@ "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", @@ -50762,6 +50780,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -50775,6 +50794,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -50792,6 +50812,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -50810,6 +50831,7 @@ "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", @@ -50903,6 +50925,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.2", @@ -52908,6 +52931,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, "license": "MIT", "dependencies": { "is-bigint": "^1.0.1", @@ -69905,6 +69929,7 @@ "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, "requires": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -70026,6 +70051,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dev": true, "requires": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -72063,9 +72089,9 @@ } }, "classnames": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.4.0.tgz", + "integrity": "sha512-lWxiIlphgAhTLN657pwU/ofFxsUTOWc2CRIFeoV5st0MGRJHStUnWIUJgDHxjUO/F0mXzGufXIM4Lfu/8h+MpA==" }, "clean-css": { "version": "5.3.2", @@ -73574,6 +73600,7 @@ "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==", + "dev": true, "requires": { "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" @@ -74460,6 +74487,7 @@ "version": "1.22.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "dev": true, "requires": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.1", @@ -74553,6 +74581,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, "requires": { "get-intrinsic": "^1.1.3", "has": "^1.0.3", @@ -74572,6 +74601,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -75961,11 +75991,11 @@ } }, "expensify-common": { - "version": "git+ssh://git@github.com/Expensify/expensify-common.git#c6bb3cfa56d12af9fa02e2bfc729646f5b64ef44", - "integrity": "sha512-a/UBkrerB57nB9xbBrFIeJG3IN0lVZV+/JWNbGMfT0FHxtg8/4sGWdC+AHqR3Bm01gwt67dd2csFferlZmTIsg==", - "from": "expensify-common@git+ssh://git@github.com/Expensify/expensify-common.git#c6bb3cfa56d12af9fa02e2bfc729646f5b64ef44", + "version": "git+ssh://git@github.com/Expensify/expensify-common.git#d91d7a902c437d5eed2da108b20fd707bf7a7577", + "integrity": "sha512-4t6hHLXzMVN0Y9aPlGyLaA+F1oGt5o5qKmL78cWOIfSLvR2Aq10V0qtFGhXKaPmTdpI+ieVyNLH0QSUmVlwK8Q==", + "from": "expensify-common@git+ssh://git@github.com/Expensify/expensify-common.git#d91d7a902c437d5eed2da108b20fd707bf7a7577", "requires": { - "classnames": "2.3.1", + "classnames": "2.4.0", "clipboard": "2.0.11", "html-entities": "^2.4.0", "jquery": "3.6.0", @@ -75976,8 +76006,7 @@ "react-dom": "16.12.0", "semver": "^7.5.2", "simply-deferred": "git+https://github.com/Expensify/simply-deferred.git#77a08a95754660c7bd6e0b6979fdf84e8e831bf5", - "string.prototype.replaceall": "^1.0.8", - "ua-parser-js": "^1.0.35", + "ua-parser-js": "^1.0.37", "underscore": "1.13.6" }, "dependencies": { @@ -76012,9 +76041,9 @@ } }, "ua-parser-js": { - "version": "1.0.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.35.tgz", - "integrity": "sha512-fKnGuqmTBnIE+/KXSzCn4db8RTigUzw1AN0DmdU6hJovUTbYJKyqj+8Mt1c4VfRDnOVJnENmfYkIPZ946UrSAA==" + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==" } } }, @@ -77152,6 +77181,7 @@ "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, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -77168,7 +77198,8 @@ "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==" + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true }, "gauge": { "version": "3.0.2", @@ -77256,6 +77287,7 @@ "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, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -77350,6 +77382,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, "requires": { "define-properties": "^1.1.3" } @@ -77481,7 +77514,8 @@ "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==" + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true }, "has-flag": { "version": "3.0.0", @@ -77512,6 +77546,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, "requires": { "get-intrinsic": "^1.1.1" } @@ -78574,6 +78609,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dev": true, "requires": { "get-intrinsic": "^1.2.0", "has": "^1.0.3", @@ -78659,6 +78695,7 @@ "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, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -78683,6 +78720,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, "requires": { "has-bigints": "^1.0.1" } @@ -78700,6 +78738,7 @@ "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, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -78755,6 +78794,7 @@ "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, "requires": { "has-tostringtag": "^1.0.0" } @@ -78910,7 +78950,8 @@ "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==" + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true }, "is-number": { "version": "7.0.0", @@ -78921,6 +78962,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -78966,6 +79008,7 @@ "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, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -78981,6 +79024,7 @@ "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, "requires": { "call-bind": "^1.0.2" } @@ -78994,6 +79038,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, "requires": { "has-tostringtag": "^1.0.0" } @@ -79002,6 +79047,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, "requires": { "has-symbols": "^1.0.2" } @@ -79042,6 +79088,7 @@ "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, "requires": { "call-bind": "^1.0.2" } @@ -79085,7 +79132,8 @@ "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true }, "isbinaryfile": { "version": "5.0.0", @@ -83848,7 +83896,8 @@ "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object-visit": { "version": "1.0.1", @@ -83863,6 +83912,7 @@ "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, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -86944,6 +86994,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -87452,6 +87503,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -87483,6 +87535,7 @@ "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, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -88764,23 +88817,11 @@ "es-abstract": "^1.19.1" } }, - "string.prototype.replaceall": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.replaceall/-/string.prototype.replaceall-1.0.8.tgz", - "integrity": "sha512-MmCXb9980obcnmbEd3guqVl6lXTxpP28zASfgAlAhlBMw5XehQeSKsdIWlAYtLxp/1GtALwex+2HyoIQtaLQwQ==", - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "is-regex": "^1.1.4" - } - }, "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, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -88791,6 +88832,7 @@ "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, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -88801,6 +88843,7 @@ "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, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -89969,6 +90012,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -89979,6 +90023,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, "requires": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -89990,6 +90035,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, "requires": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -90002,6 +90048,7 @@ "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, "requires": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -90061,6 +90108,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, "requires": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -91481,6 +91529,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", diff --git a/package.json b/package.json index 6b8295a56f7a..2c51c0cf3c41 100644 --- a/package.json +++ b/package.json @@ -99,7 +99,7 @@ "date-fns-tz": "^2.0.0", "dom-serializer": "^0.2.2", "domhandler": "^4.3.0", - "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#c6bb3cfa56d12af9fa02e2bfc729646f5b64ef44", + "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#d91d7a902c437d5eed2da108b20fd707bf7a7577", "expo": "^50.0.0-preview.7", "expo-image": "1.10.1", "fbjs": "^3.0.2", diff --git a/patches/expensify-common+1.0.0.patch b/patches/expensify-common+1.0.0.patch deleted file mode 100644 index 2ff5acf759be..000000000000 --- a/patches/expensify-common+1.0.0.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/node_modules/expensify-common/lib/str.js b/node_modules/expensify-common/lib/str.js -index ad48560..60dc8af 100644 ---- a/node_modules/expensify-common/lib/str.js -+++ b/node_modules/expensify-common/lib/str.js -@@ -1088,6 +1088,10 @@ const Str = { - return _.contains(['jpeg', 'jpg', 'gif', 'png', 'bmp', 'webp'], this.getExtension(url)); - }, - -+ isVideo(url) { -+ return _.contains(['mov', 'mp4'], this.getExtension(url)); -+ }, -+ - /** - * Checks whether the given string is a +@ domain email account, such as - * +@domain.com From 4a66337088c177198c33afd7e5412195d4655796 Mon Sep 17 00:00:00 2001 From: Ishpaul Singh Date: Fri, 26 Jan 2024 01:14:41 +0530 Subject: [PATCH 195/701] fixes gap between buttons --- src/components/ReportActionItem/ActionableItemButtons.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ReportActionItem/ActionableItemButtons.tsx b/src/components/ReportActionItem/ActionableItemButtons.tsx index d1f169d2f409..6ead20d3e643 100644 --- a/src/components/ReportActionItem/ActionableItemButtons.tsx +++ b/src/components/ReportActionItem/ActionableItemButtons.tsx @@ -21,7 +21,7 @@ function ActionableItemButtons(props: ActionableItemButtonsProps) { const {translate} = useLocalize(); return ( - + {props.items?.map((item) => (