diff --git a/.lintstagedrc.json b/.lintstagedrc.json deleted file mode 100644 index 59c8ccb43..000000000 --- a/.lintstagedrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "*.{js,jsx,ts,tsx,html,json,yml,yaml,css,scss,md}": ["prettier --write"] -} diff --git a/.vscode/settings.json b/.vscode/settings.json index e62e8f133..ee5885290 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -38,12 +38,12 @@ "rust-analyzer.procMacro.enable": true, "rust-analyzer.diagnostics.experimental.enable": false, "tailwindCSS.experimental.classRegex": [ - ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], - "tw`([^`]*)", - "tw\\.[^`]+`([^`]*)`", - "tw\\(.*?\\).*?`([^`]*)", - "tw\\.style\\(([^)]*)\\)", - "twStyle\\(([^)]*)\\)" + ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"], // cva(....)`...` + "tw\\.[^`]+`([^`]*)`", // tw.xxx`...` + "tw\\(.*?\\).*?`([^`]*)", // tw(....)`...` + "tw`([^`]*)", // tw`...` (mobile) + "twStyle\\(([^)]*)\\)", // twStyle(....) (mobile) + ["styled\\([^,)]+,([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"] // styled(....)`...` (mobile) ], "search.exclude": { "**/node_modules": true, diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d9b04cd13..de7f0726b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -69,12 +69,12 @@ To run mobile app - Install [Android Studio](https://developer.android.com/studio) for Android and [Xcode](https://apps.apple.com/au/app/xcode/id497799835) for IOS development - `./.github/scripts/setup-system.sh mobile` + - The should setup most of the dependencies for the mobile app to build. -- You must also ensure [you must have NDK 24.0.8215888 and CMake](https://developer.android.com/studio/projects/install-ndk#default-version) in Android Studio -- `cd apps/mobile && pnpm i` - This is a separate workspace, you need to do this! + +- You must also ensure [you must have NDK 23.1.7779620 and CMake](https://developer.android.com/studio/projects/install-ndk#default-version) in Android Studio - `pnpm android` - runs on Android Emulator - `pnpm ios` - runs on iOS Emulator -- `pnpm start` - For already bundled app ### Pull Request diff --git a/Cargo.lock b/Cargo.lock index 01b48e41e..f84a45a79 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3130,8 +3130,7 @@ dependencies = [ [[package]] name = "if-watch" version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba7abdbb86e485125dad06c2691e1e393bf3b08c7b743b43aa162a00fd39062e" +source = "git+https://github.com/oscartbeaumont/if-watch?rev=410e8e1d2d0730f1441df1c29294fec4c3c04193#410e8e1d2d0730f1441df1c29294fec4c3c04193" dependencies = [ "async-io", "core-foundation", @@ -4081,7 +4080,7 @@ dependencies = [ [[package]] name = "mdns-sd" version = "0.6.1" -source = "git+https://github.com/oscartbeaumont/mdns-sd.git?rev=45515a98e9e408c102871abaa5a9bff3bee0cbe8#45515a98e9e408c102871abaa5a9bff3bee0cbe8" +source = "git+https://github.com/oscartbeaumont/mdns-sd?rev=45515a98e9e408c102871abaa5a9bff3bee0cbe8#45515a98e9e408c102871abaa5a9bff3bee0cbe8" dependencies = [ "flume", "if-addrs", diff --git a/Cargo.toml b/Cargo.toml index d0a34a322..d1b462eca 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,8 +40,10 @@ tokio = { version = "1.25.0" } [patch.crates-io] # We use this patch so we can compile for the IOS simulator on M1 openssl-sys = { git = "https://github.com/spacedriveapp/rust-openssl", rev = "92c3dec225a9e984884d5b30a517e5d44a24d03b" } +# We patch this so that it can be built for IOS - The `main` branch uses macOS specific APIs +if-watch = { git = "https://github.com/oscartbeaumont/if-watch", rev = "410e8e1d2d0730f1441df1c29294fec4c3c04193" } -mdns-sd = { git = "https://github.com/oscartbeaumont/mdns-sd.git", rev = "45515a98e9e408c102871abaa5a9bff3bee0cbe8" } # TODO: Do upstream PR +mdns-sd = { git = "https://github.com/oscartbeaumont/mdns-sd", rev = "45515a98e9e408c102871abaa5a9bff3bee0cbe8" } # TODO: Do upstream PR rspc = { git = "https://github.com/oscartbeaumont/rspc", rev = "c03872c0ba29d2429e9c059dfb235cdd03e15e8c" } # TODO: Move back to crates.io when new jsonrpc executor + `tokio::spawn` in the Tauri IPC plugin + upgraded Tauri version is released specta = { git = "https://github.com/oscartbeaumont/rspc", rev = "c03872c0ba29d2429e9c059dfb235cdd03e15e8c" } diff --git a/apps/landing/package.json b/apps/landing/package.json index 39b0b7c97..d6f8cde07 100644 --- a/apps/landing/package.json +++ b/apps/landing/package.json @@ -29,7 +29,7 @@ "react-burger-menu": "^3.0.8", "react-dom": "^18.2.0", "react-helmet": "^6.1.0", - "react-hook-form": "^7.36.1", + "react-hook-form": "^7.43.5", "react-tsparticles": "^2.3.3", "sirv": "^2.0.2", "ts-node": "^10.9.1", diff --git a/apps/mobile/.gitignore b/apps/mobile/.gitignore index c8eb0f9a6..6b0b6caab 100644 --- a/apps/mobile/.gitignore +++ b/apps/mobile/.gitignore @@ -37,12 +37,6 @@ node_modules/ npm-debug.log yarn-error.log -# BUCK -buck-out/ -\.buckd/ -*.keystore -!debug.keystore - # Bundle artifacts *.jsbundle @@ -53,3 +47,6 @@ buck-out/ .expo/ web-build/ dist/ + +# Temporary files created by Metro to check the health of the file watcher +.metro-health-check* \ No newline at end of file diff --git a/apps/mobile/android/.gitignore b/apps/mobile/android/.gitignore index 64436baaf..ab9e6d140 100644 --- a/apps/mobile/android/.gitignore +++ b/apps/mobile/android/.gitignore @@ -11,11 +11,5 @@ local.properties *.iml *.hprof -# BUCK -buck-out/ -\.buckd/ -*.keystore -!debug.keystore - # Bundle artifacts -*.jsbundle +*.jsbundle \ No newline at end of file diff --git a/apps/mobile/android/app/BUCK b/apps/mobile/android/app/BUCK deleted file mode 100644 index cabced2a6..000000000 --- a/apps/mobile/android/app/BUCK +++ /dev/null @@ -1,55 +0,0 @@ -# To learn about Buck see [Docs](https://buckbuild.com/). -# To run your application with Buck: -# - install Buck -# - `npm start` - to start the packager -# - `cd android` -# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"` -# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck -# - `buck install -r android/app` - compile, install and run application -# - -load(":build_defs.bzl", "create_aar_targets", "create_jar_targets") - -lib_deps = [] - -create_aar_targets(glob(["libs/*.aar"])) - -create_jar_targets(glob(["libs/*.jar"])) - -android_library( - name = "all-libs", - exported_deps = lib_deps, -) - -android_library( - name = "app-code", - srcs = glob([ - "src/main/java/**/*.java", - ]), - deps = [ - ":all-libs", - ":build_config", - ":res", - ], -) - -android_build_config( - name = "build_config", - package = "com.spacedrive.app", -) - -android_resource( - name = "res", - package = "com.spacedrive.app", - res = "src/main/res", -) - -android_binary( - name = "app", - keystore = "//android/keystores:debug", - manifest = "src/main/AndroidManifest.xml", - package_type = "debug", - deps = [ - ":app-code", - ], -) diff --git a/apps/mobile/android/app/build.gradle b/apps/mobile/android/app/build.gradle index cecfb1815..c12552698 100644 --- a/apps/mobile/android/app/build.gradle +++ b/apps/mobile/android/app/build.gradle @@ -1,8 +1,10 @@ apply plugin: "com.android.application" +apply plugin: "com.facebook.react" import com.android.build.OutputFile -import org.apache.tools.ant.taskdefs.condition.Os + +// SPACEDRIVE CODE apply plugin: 'org.mozilla.rust-android-gradle.rust-android' cargo { @@ -23,134 +25,108 @@ tasks.whenTaskAdded { task -> } } -/** - * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets - * and bundleReleaseJsAndAssets). - * These basically call `react-native bundle` with the correct arguments during the Android build - * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the - * bundle directly from the development server. Below you can see all the possible configurations - * and their defaults. If you decide to add a configuration block, make sure to add it before the - * `apply from: "../../node_modules/react-native/react.gradle"` line. - * - * project.ext.react = [ - * // the name of the generated asset file containing your JS bundle - * bundleAssetName: "index.android.bundle", - * - * // the entry file for bundle generation. If none specified and - * // "index.android.js" exists, it will be used. Otherwise "index.js" is - * // default. Can be overridden with ENTRY_FILE environment variable. - * entryFile: "index.android.js", - * - * // https://reactnative.dev/docs/performance#enable-the-ram-format - * bundleCommand: "ram-bundle", - * - * // whether to bundle JS and assets in debug mode - * bundleInDebug: false, - * - * // whether to bundle JS and assets in release mode - * bundleInRelease: true, - * - * // whether to bundle JS and assets in another build variant (if configured). - * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants - * // The configuration property can be in the following formats - * // 'bundleIn${productFlavor}${buildType}' - * // 'bundleIn${buildType}' - * // bundleInFreeDebug: true, - * // bundleInPaidRelease: true, - * // bundleInBeta: true, - * - * // whether to disable dev mode in custom build variants (by default only disabled in release) - * // for example: to disable dev mode in the staging build type (if configured) - * devDisabledInStaging: true, - * // The configuration property can be in the following formats - * // 'devDisabledIn${productFlavor}${buildType}' - * // 'devDisabledIn${buildType}' - * - * // the root of your project, i.e. where "package.json" lives - * root: "../../", - * - * // where to put the JS bundle asset in debug mode - * jsBundleDirDebug: "$buildDir/intermediates/assets/debug", - * - * // where to put the JS bundle asset in release mode - * jsBundleDirRelease: "$buildDir/intermediates/assets/release", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in debug mode - * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", - * - * // where to put drawable resources / React Native assets, e.g. the ones you use via - * // require('./image.png')), in release mode - * resourcesDirRelease: "$buildDir/intermediates/res/merged/release", - * - * // by default the gradle tasks are skipped if none of the JS files or assets change; this means - * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to - * // date; if you have any other folders that you want to ignore for performance reasons (gradle - * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ - * // for example, you might want to remove it from here. - * inputExcludes: ["android/**", "ios/**"], - * - * // override which node gets called and with what additional arguments - * nodeExecutableAndArgs: ["node"], - * - * // supply additional arguments to the packager - * extraPackagerArgs: [] - * ] - */ +// SPACEDRIVE CODE END def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() +def expoDebuggableVariants = ['debug'] +// Override `debuggableVariants` for expo-updates debugging +if (System.getenv('EX_UPDATES_NATIVE_DEBUG') == "1") { + react { + expoDebuggableVariants = [] + } +} -def reactNativeRoot = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() - -project.ext.react = [ - entryFile: ["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android"].execute(null, rootDir).text.trim(), - enableHermes: (findProperty('expo.jsEngine') ?: "jsc") == "hermes", - hermesCommand: new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc", - cliPath: "${reactNativeRoot}/cli.js", - composeSourceMapsPath: "${reactNativeRoot}/scripts/compose-source-maps.js", -] - -apply from: new File(reactNativeRoot, "react.gradle") /** - * Set this to true to create two separate APKs instead of one: - * - An APK that only works on ARM devices - * - An APK that only works on x86 devices - * The advantage is the size of the APK is reduced by about 4MB. - * Upload all the APKs to the Play Store and people will download - * the correct one based on the CPU architecture of their device. + * This is the configuration block to customize your React Native Android app. + * By default you don't need to apply any configuration, just uncomment the lines you need. + */ +react { + entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim()) + reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() + hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc" + debuggableVariants = expoDebuggableVariants + + // Use Expo CLI to bundle the app, this ensures the Metro config + // works correctly with Expo projects. + cliFile = new File(["node", "--print", "require.resolve('@expo/cli')"].execute(null, rootDir).text.trim()) + bundleCommand = "export:embed" + + /* Folders */ + // The root of your project, i.e. where "package.json" lives. Default is '..' + // root = file("../") + // The folder where the react-native NPM package is. Default is ../node_modules/react-native + // reactNativeDir = file("../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen + // codegenDir = file("../node_modules/react-native-codegen") + + /* Variants */ + // The list of variants to that are debuggable. For those we're going to + // skip the bundling of the JS bundle and the assets. By default is just 'debug'. + // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. + // debuggableVariants = ["liteDebug", "prodDebug"] + + /* Bundling */ + // A list containing the node command and its flags. Default is just 'node'. + // nodeExecutableAndArgs = ["node"] + + // + // The path to the CLI configuration file. Default is empty. + // bundleConfig = file(../rn-cli.config.js) + // + // The name of the generated asset file containing your JS bundle + // bundleAssetName = "MyApplication.android.bundle" + // + // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' + // entryFile = file("../js/MyApplication.android.js") + // + // A list of extra flags to pass to the 'bundle' commands. + // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle + // extraPackagerArgs = [] + + /* Hermes Commands */ + // The hermes compiler command to run. By default it is 'hermesc' + // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" + // + // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" + // hermesFlags = ["-O", "-output-source-map"] +} + +// Override `hermesEnabled` by `expo.jsEngine` +ext { + hermesEnabled = (findProperty('expo.jsEngine') ?: "hermes") == "hermes" +} + +/** + * Set this to true to create four separate APKs instead of one, + * one for each native architecture. This is useful if you don't + * use App Bundles (https://developer.android.com/guide/app-bundle/) + * and want to have separate APKs to upload to the Play Store. */ def enableSeparateBuildPerCPUArchitecture = false /** - * Run Proguard to shrink the Java bytecode in release builds. + * Set this to true to Run Proguard on Release builds to minify the Java bytecode. */ def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean() /** - * The preferred build flavor of JavaScriptCore. + * The preferred build flavor of JavaScriptCore (JSC) * * For example, to use the international variant, you can use: * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` * * The international variant includes ICU i18n library and necessary data * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that - * give correct results when using with locales other than en-US. Note that + * give correct results when using with locales other than en-US. Note that * this variant is about 6MiB larger per architecture than default. */ def jscFlavor = 'org.webkit:android-jsc:+' /** - * Whether to enable the Hermes VM. - * - * This should be set on project.ext.react and that value will be read here. If it is not set - * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode - * and the benefits of using Hermes will therefore be sharply reduced. - */ -def enableHermes = project.ext.react.get("enableHermes", false); - -/** - * Architectures to build native code for. + * Private function to get the list of Native Architectures you want to build. + * This reads the value from reactNativeArchitectures in your gradle.properties + * file and works together with the --active-arch-only flag of react-native run-android. */ def reactNativeArchitectures() { def value = project.getProperties().get("reactNativeArchitectures") @@ -163,84 +139,11 @@ android { compileSdkVersion rootProject.ext.compileSdkVersion defaultConfig { - applicationId 'com.spacedrive.app' + applicationId "com.spacedrive.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 versionName "0.0.1" - buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() - - if (isNewArchitectureEnabled()) { - // We configure the NDK build only if you decide to opt-in for the New Architecture. - externalNativeBuild { - ndkBuild { - arguments "APP_PLATFORM=android-21", - "APP_STL=c++_shared", - "NDK_TOOLCHAIN_VERSION=clang", - "GENERATED_SRC_DIR=$buildDir/generated/source", - "PROJECT_BUILD_DIR=$buildDir", - "REACT_ANDROID_DIR=${reactNativeRoot}/ReactAndroid", - "REACT_ANDROID_BUILD_DIR=${reactNativeRoot}/ReactAndroid/build", - "NODE_MODULES_DIR=$rootDir/../node_modules" - cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1" - cppFlags "-std=c++17" - // Make sure this target name is the same you specify inside the - // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable. - targets "spacedrive_appmodules" - - // Fix for windows limit on number of character in file paths and in command lines - if (Os.isFamily(Os.FAMILY_WINDOWS)) { - arguments "NDK_APP_SHORT_COMMANDS=true" - } - } - } - if (!enableSeparateBuildPerCPUArchitecture) { - ndk { - abiFilters (*reactNativeArchitectures()) - } - } - } - } - - if (isNewArchitectureEnabled()) { - // We configure the NDK build only if you decide to opt-in for the New Architecture. - externalNativeBuild { - ndkBuild { - path "$projectDir/src/main/jni/Android.mk" - } - } - def reactAndroidProjectDir = project(':ReactAndroid').projectDir - def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) { - dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck") - from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") - into("$buildDir/react-ndk/exported") - } - def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) { - dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck") - from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib") - into("$buildDir/react-ndk/exported") - } - afterEvaluate { - // If you wish to add a custom TurboModule or component locally, - // you should uncomment this line. - // preBuild.dependsOn("generateCodegenArtifactsFromSchema") - preDebugBuild.dependsOn(packageReactNdkDebugLibs) - preReleaseBuild.dependsOn(packageReactNdkReleaseLibs) - - // Due to a bug inside AGP, we have to explicitly set a dependency - // between configureNdkBuild* tasks and the preBuild tasks. - // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732 - configureNdkBuildRelease.dependsOn(preReleaseBuild) - configureNdkBuildDebug.dependsOn(preDebugBuild) - reactNativeArchitectures().each { architecture -> - tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure { - dependsOn("preDebugBuild") - } - tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure { - dependsOn("preReleaseBuild") - } - } - } } splits { @@ -277,11 +180,12 @@ android { variant.outputs.each { output -> // For each separate APK per architecture, set a unique version code as described here: // https://developer.android.com/studio/build/configure-apk-splits.html + // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc. def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4] def abi = output.getFilter(OutputFile.ABI) if (abi != null) { // null for the universal-debug, universal-release variants output.versionCodeOverride = - versionCodes.get(abi) * 1048576 + defaultConfig.versionCode + defaultConfig.versionCode * 1000 + versionCodes.get(abi) } } @@ -309,10 +213,8 @@ android { } dependencies { - implementation fileTree(dir: "libs", include: ["*.jar"]) - - //noinspection GradleDynamicVersion - implementation "com.facebook.react:react-native:+" // From node_modules + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true"; def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true"; @@ -321,76 +223,38 @@ dependencies { // If your app supports Android versions before Ice Cream Sandwich (API level 14) if (isGifEnabled || isWebpEnabled) { - implementation "com.facebook.fresco:fresco:${frescoVersion}" - implementation "com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}" + implementation("com.facebook.fresco:fresco:${frescoVersion}") + implementation("com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}") } if (isGifEnabled) { // For animated gif support - implementation "com.facebook.fresco:animated-gif:${frescoVersion}" + implementation("com.facebook.fresco:animated-gif:${frescoVersion}") } if (isWebpEnabled) { // For webp support - implementation "com.facebook.fresco:webpsupport:${frescoVersion}" + implementation("com.facebook.fresco:webpsupport:${frescoVersion}") if (isWebpAnimatedEnabled) { // Animated webp support - implementation "com.facebook.fresco:animated-webp:${frescoVersion}" + implementation("com.facebook.fresco:animated-webp:${frescoVersion}") } } - implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" - debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { - exclude group:'com.facebook.fbjni' - } + implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0") + + debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { - exclude group:'com.facebook.flipper' exclude group:'com.squareup.okhttp3', module:'okhttp' } - debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { - exclude group:'com.facebook.flipper' - } + debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") - if (enableHermes) { - //noinspection GradleDynamicVersion - implementation("com.facebook.react:hermes-engine:+") { // From node_modules - exclude group:'com.facebook.fbjni' - } + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") } else { implementation jscFlavor } } -if (isNewArchitectureEnabled()) { - // If new architecture is enabled, we let you build RN from source - // Otherwise we fallback to a prebuilt .aar bundled in the NPM package. - // This will be applied to all the imported transtitive dependency. - configurations.all { - resolutionStrategy.dependencySubstitution { - substitute(module("com.facebook.react:react-native")) - .using(project(":ReactAndroid")) - .because("On New Architecture we're building React Native from source") - substitute(module("com.facebook.react:hermes-engine")) - .using(project(":ReactAndroid:hermes-engine")) - .because("On New Architecture we're building Hermes from source") - } - } -} - -// Run this once to be able to run the application with BUCK -// puts all compile dependencies into folder libs for BUCK to use -task copyDownloadableDepsToLibs(type: Copy) { - from configurations.implementation - into 'libs' -} - apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle"); -applyNativeModulesAppBuildGradle(project) - -def isNewArchitectureEnabled() { - // To opt-in for the New Architecture, you can either: - // - Set `newArchEnabled` to true inside the `gradle.properties` file - // - Invoke gradle with `-newArchEnabled=true` - // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true` - return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" -} +applyNativeModulesAppBuildGradle(project) \ No newline at end of file diff --git a/apps/mobile/android/app/build_defs.bzl b/apps/mobile/android/app/build_defs.bzl deleted file mode 100644 index fff270f8d..000000000 --- a/apps/mobile/android/app/build_defs.bzl +++ /dev/null @@ -1,19 +0,0 @@ -"""Helper definitions to glob .aar and .jar targets""" - -def create_aar_targets(aarfiles): - for aarfile in aarfiles: - name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] - lib_deps.append(":" + name) - android_prebuilt_aar( - name = name, - aar = aarfile, - ) - -def create_jar_targets(jarfiles): - for jarfile in jarfiles: - name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] - lib_deps.append(":" + name) - prebuilt_jar( - name = name, - binary_jar = jarfile, - ) diff --git a/apps/mobile/android/app/proguard-rules.pro b/apps/mobile/android/app/proguard-rules.pro index 551eb41da..78d6c0389 100644 --- a/apps/mobile/android/app/proguard-rules.pro +++ b/apps/mobile/android/app/proguard-rules.pro @@ -11,4 +11,4 @@ -keep class com.swmansion.reanimated.** { *; } -keep class com.facebook.react.turbomodule.** { *; } -# Add any project specific keep options here: +# Add any project specific keep options here: \ No newline at end of file diff --git a/apps/mobile/android/app/src/debug/java/com/spacedrive/app/ReactNativeFlipper.java b/apps/mobile/android/app/src/debug/java/com/spacedrive/app/ReactNativeFlipper.java index 00c9f2231..37ca9c904 100644 --- a/apps/mobile/android/app/src/debug/java/com/spacedrive/app/ReactNativeFlipper.java +++ b/apps/mobile/android/app/src/debug/java/com/spacedrive/app/ReactNativeFlipper.java @@ -1,5 +1,5 @@ /** - * Copyright (c) Facebook, Inc. and its affiliates. + * Copyright (c) Meta Platforms, Inc. and affiliates. * *

This source code is licensed under the MIT license found in the LICENSE file in the root * directory of this source tree. @@ -17,22 +17,27 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping; import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; -import com.facebook.flipper.plugins.react.ReactFlipperPlugin; import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; +import com.facebook.react.ReactInstanceEventListener; import com.facebook.react.ReactInstanceManager; import com.facebook.react.bridge.ReactContext; import com.facebook.react.modules.network.NetworkingModule; import okhttp3.OkHttpClient; +/** + * Class responsible of loading Flipper inside your React Native application. This is the debug + * flavor of it. Here you can add your own plugins and customize the Flipper setup. + */ public class ReactNativeFlipper { public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { if (FlipperUtils.shouldEnableFlipper(context)) { final FlipperClient client = AndroidFlipperClient.getInstance(context); + client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); - client.addPlugin(new ReactFlipperPlugin()); client.addPlugin(new DatabasesFlipperPlugin(context)); client.addPlugin(new SharedPreferencesFlipperPlugin(context)); client.addPlugin(CrashReporterPlugin.getInstance()); + NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); NetworkingModule.setCustomClientBuilder( new NetworkingModule.CustomClientBuilder() { @@ -43,12 +48,13 @@ public class ReactNativeFlipper { }); client.addPlugin(networkFlipperPlugin); client.start(); + // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized // Hence we run if after all native modules have been initialized ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); if (reactContext == null) { reactInstanceManager.addReactInstanceEventListener( - new ReactInstanceManager.ReactInstanceEventListener() { + new ReactInstanceEventListener() { @Override public void onReactContextInitialized(ReactContext reactContext) { reactInstanceManager.removeReactInstanceEventListener(this); diff --git a/apps/mobile/android/app/src/main/java/com/spacedrive/app/MainActivity.java b/apps/mobile/android/app/src/main/java/com/spacedrive/app/MainActivity.java index 94ac57750..1309a4b94 100644 --- a/apps/mobile/android/app/src/main/java/com/spacedrive/app/MainActivity.java +++ b/apps/mobile/android/app/src/main/java/com/spacedrive/app/MainActivity.java @@ -5,7 +5,8 @@ import android.os.Bundle; import com.facebook.react.ReactActivity; import com.facebook.react.ReactActivityDelegate; -import com.facebook.react.ReactRootView; +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; +import com.facebook.react.defaults.DefaultReactActivityDelegate; import expo.modules.ReactActivityDelegateWrapper; @@ -29,15 +30,20 @@ public class MainActivity extends ReactActivity { } /** - * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and - * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer - * (Paper). + * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link + * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React + * (aka React 18) with two boolean flags. */ @Override protected ReactActivityDelegate createReactActivityDelegate() { - return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, - new MainActivityDelegate(this, getMainComponentName()) - ); + 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(), // fabricEnabled + // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18). + DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled + )); } /** @@ -59,25 +65,4 @@ public class MainActivity extends ReactActivity { // because it's doing more than {@link Activity#moveTaskToBack} in fact. super.invokeDefaultOnBackPressed(); } - - public static class MainActivityDelegate extends ReactActivityDelegate { - public MainActivityDelegate(ReactActivity activity, String mainComponentName) { - super(activity, mainComponentName); - } - - @Override - protected ReactRootView createRootView() { - ReactRootView reactRootView = new ReactRootView(getContext()); - // If you opted-in for the New Architecture, we enable the Fabric Renderer. - reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED); - return reactRootView; - } - - @Override - protected boolean isConcurrentRootEnabled() { - // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18). - // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html - return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; - } - } -} +} \ No newline at end of file diff --git a/apps/mobile/android/app/src/main/java/com/spacedrive/app/MainApplication.java b/apps/mobile/android/app/src/main/java/com/spacedrive/app/MainApplication.java index 1d47d6150..ad2962a9e 100644 --- a/apps/mobile/android/app/src/main/java/com/spacedrive/app/MainApplication.java +++ b/apps/mobile/android/app/src/main/java/com/spacedrive/app/MainApplication.java @@ -1,69 +1,70 @@ package com.spacedrive.app; import android.app.Application; -import android.content.Context; import android.content.res.Configuration; import androidx.annotation.NonNull; import com.facebook.react.PackageList; import com.facebook.react.ReactApplication; -import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; -import com.facebook.react.config.ReactFeatureFlags; +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; +import com.facebook.react.defaults.DefaultReactNativeHost; import com.facebook.soloader.SoLoader; -import com.spacedrive.app.newarchitecture.MainApplicationReactNativeHost; import expo.modules.ApplicationLifecycleDispatcher; import expo.modules.ReactNativeHostWrapper; -import java.lang.reflect.InvocationTargetException; import java.util.List; public class MainApplication extends Application implements ReactApplication { - private final ReactNativeHost mReactNativeHost = new ReactNativeHostWrapper( - this, - new ReactNativeHost(this) { - @Override - public boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; - } - @Override - protected List getPackages() { - @SuppressWarnings("UnnecessaryLocalVariable") - List packages = new PackageList(this).getPackages(); - // Packages that cannot be autolinked yet can be added manually here, for example: - packages.add(new com.spacedrive.app.SpacedrivePackage()); - return packages; - } + private final ReactNativeHost mReactNativeHost = + new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) { + @Override + public boolean getUseDeveloperSupport() { + return BuildConfig.DEBUG; + } - @Override - protected String getJSMainModuleName() { - return "index"; - } + @Override + protected List getPackages() { + @SuppressWarnings("UnnecessaryLocalVariable") + List packages = new PackageList(this).getPackages(); + // Packages that cannot be autolinked yet can be added manually here, for example: + packages.add(new com.spacedrive.app.SpacedrivePackage()); + return packages; + } + + @Override + protected String getJSMainModuleName() { + return "index"; + } + + @Override + protected boolean isNewArchEnabled() { + return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; + } + + @Override + protected Boolean isHermesEnabled() { + return BuildConfig.IS_HERMES_ENABLED; + } }); - private final ReactNativeHost mNewArchitectureNativeHost = - new ReactNativeHostWrapper(this, new MainApplicationReactNativeHost(this)); - @Override public ReactNativeHost getReactNativeHost() { - if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { - return mNewArchitectureNativeHost; - } else { - return mReactNativeHost; - } + return mReactNativeHost; } @Override public void onCreate() { super.onCreate(); - // If you opted-in for the New Architecture, we enable the TurboModule system - ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; SoLoader.init(this, /* native exopackage */ false); - - initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { + // If you opted-in for the New Architecture, we load the native entry point for this app. + DefaultNewArchitectureEntryPoint.load(); + } + ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); ApplicationLifecycleDispatcher.onApplicationCreate(this); } @@ -72,35 +73,4 @@ public class MainApplication extends Application implements ReactApplication { super.onConfigurationChanged(newConfig); ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig); } - - /** - * Loads Flipper in React Native templates. Call this in the onCreate method with something like - * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - * - * @param context - * @param reactInstanceManager - */ - private static void initializeFlipper( - Context context, ReactInstanceManager reactInstanceManager) { - if (BuildConfig.DEBUG) { - try { - /* - We use reflection here to pick up the class that initializes Flipper, - since Flipper library is not available in release mode - */ - Class aClass = Class.forName("com.spacedrive.app.ReactNativeFlipper"); - aClass - .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) - .invoke(null, context, reactInstanceManager); - } catch (ClassNotFoundException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - } - } -} +} \ No newline at end of file diff --git a/apps/mobile/android/app/src/main/java/com/spacedrive/app/newarchitecture/MainApplicationReactNativeHost.java b/apps/mobile/android/app/src/main/java/com/spacedrive/app/newarchitecture/MainApplicationReactNativeHost.java deleted file mode 100644 index 1a3e3aa1d..000000000 --- a/apps/mobile/android/app/src/main/java/com/spacedrive/app/newarchitecture/MainApplicationReactNativeHost.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.spacedrive.app.newarchitecture; - -import android.app.Application; -import androidx.annotation.NonNull; -import com.facebook.react.PackageList; -import com.facebook.react.ReactInstanceManager; -import com.facebook.react.ReactNativeHost; -import com.facebook.react.ReactPackage; -import com.facebook.react.ReactPackageTurboModuleManagerDelegate; -import com.facebook.react.bridge.JSIModulePackage; -import com.facebook.react.bridge.JSIModuleProvider; -import com.facebook.react.bridge.JSIModuleSpec; -import com.facebook.react.bridge.JSIModuleType; -import com.facebook.react.bridge.JavaScriptContextHolder; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.react.bridge.UIManager; -import com.facebook.react.fabric.ComponentFactory; -import com.facebook.react.fabric.CoreComponentsRegistry; -import com.facebook.react.fabric.EmptyReactNativeConfig; -import com.facebook.react.fabric.FabricJSIModuleProvider; -import com.facebook.react.fabric.ReactNativeConfig; -import com.facebook.react.uimanager.ViewManagerRegistry; -import com.spacedrive.app.BuildConfig; -import com.spacedrive.app.newarchitecture.components.MainComponentsRegistry; -import com.spacedrive.app.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate; -import java.util.ArrayList; -import java.util.List; - -/** - * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both - * TurboModule delegates and the Fabric Renderer. - * - *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the - * `newArchEnabled` property). Is ignored otherwise. - */ -public class MainApplicationReactNativeHost extends ReactNativeHost { - public MainApplicationReactNativeHost(Application application) { - super(application); - } - - @Override - public boolean getUseDeveloperSupport() { - return BuildConfig.DEBUG; - } - - @Override - protected List getPackages() { - List packages = new PackageList(this).getPackages(); - // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); - // TurboModules must also be loaded here providing a valid TurboReactPackage implementation: - // packages.add(new TurboReactPackage() { ... }); - // If you have custom Fabric Components, their ViewManagers should also be loaded here - // inside a ReactPackage. - return packages; - } - - @Override - protected String getJSMainModuleName() { - return "index"; - } - - @NonNull - @Override - protected ReactPackageTurboModuleManagerDelegate.Builder - getReactPackageTurboModuleManagerDelegateBuilder() { - // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary - // for the new architecture and to use TurboModules correctly. - return new MainApplicationTurboModuleManagerDelegate.Builder(); - } - - @Override - protected JSIModulePackage getJSIModulePackage() { - return new JSIModulePackage() { - @Override - public List getJSIModules( - final ReactApplicationContext reactApplicationContext, - final JavaScriptContextHolder jsContext) { - final List specs = new ArrayList<>(); - - // Here we provide a new JSIModuleSpec that will be responsible of providing the - // custom Fabric Components. - specs.add( - new JSIModuleSpec() { - @Override - public JSIModuleType getJSIModuleType() { - return JSIModuleType.UIManager; - } - - @Override - public JSIModuleProvider getJSIModuleProvider() { - final ComponentFactory componentFactory = new ComponentFactory(); - CoreComponentsRegistry.register(componentFactory); - - // Here we register a Components Registry. - // The one that is generated with the template contains no components - // and just provides you the one from React Native core. - MainComponentsRegistry.register(componentFactory); - - final ReactInstanceManager reactInstanceManager = getReactInstanceManager(); - - ViewManagerRegistry viewManagerRegistry = - new ViewManagerRegistry( - reactInstanceManager.getOrCreateViewManagers(reactApplicationContext)); - - return new FabricJSIModuleProvider( - reactApplicationContext, - componentFactory, - ReactNativeConfig.DEFAULT_CONFIG, - viewManagerRegistry); - } - }); - return specs; - } - }; - } -} diff --git a/apps/mobile/android/app/src/main/java/com/spacedrive/app/newarchitecture/components/MainComponentsRegistry.java b/apps/mobile/android/app/src/main/java/com/spacedrive/app/newarchitecture/components/MainComponentsRegistry.java deleted file mode 100644 index 0c5bce1e3..000000000 --- a/apps/mobile/android/app/src/main/java/com/spacedrive/app/newarchitecture/components/MainComponentsRegistry.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.spacedrive.app.newarchitecture.components; - -import com.facebook.jni.HybridData; -import com.facebook.proguard.annotations.DoNotStrip; -import com.facebook.react.fabric.ComponentFactory; -import com.facebook.soloader.SoLoader; - -/** - * Class responsible to load the custom Fabric Components. This class has native methods and needs a - * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ - * folder for you). - * - *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the - * `newArchEnabled` property). Is ignored otherwise. - */ -@DoNotStrip -public class MainComponentsRegistry { - static { - SoLoader.loadLibrary("fabricjni"); - } - - @DoNotStrip private final HybridData mHybridData; - - @DoNotStrip - private native HybridData initHybrid(ComponentFactory componentFactory); - - @DoNotStrip - private MainComponentsRegistry(ComponentFactory componentFactory) { - mHybridData = initHybrid(componentFactory); - } - - @DoNotStrip - public static MainComponentsRegistry register(ComponentFactory componentFactory) { - return new MainComponentsRegistry(componentFactory); - } -} diff --git a/apps/mobile/android/app/src/main/java/com/spacedrive/app/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/apps/mobile/android/app/src/main/java/com/spacedrive/app/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java deleted file mode 100644 index a2cd752da..000000000 --- a/apps/mobile/android/app/src/main/java/com/spacedrive/app/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.spacedrive.app.newarchitecture.modules; - -import com.facebook.jni.HybridData; -import com.facebook.react.ReactPackage; -import com.facebook.react.ReactPackageTurboModuleManagerDelegate; -import com.facebook.react.bridge.ReactApplicationContext; -import com.facebook.soloader.SoLoader; -import java.util.List; - -/** - * Class responsible to load the TurboModules. This class has native methods and needs a - * corresponding C++ implementation/header file to work correctly (already placed inside the jni/ - * folder for you). - * - *

Please note that this class is used ONLY if you opt-in for the New Architecture (see the - * `newArchEnabled` property). Is ignored otherwise. - */ -public class MainApplicationTurboModuleManagerDelegate - extends ReactPackageTurboModuleManagerDelegate { - - private static volatile boolean sIsSoLibraryLoaded; - - protected MainApplicationTurboModuleManagerDelegate( - ReactApplicationContext reactApplicationContext, List packages) { - super(reactApplicationContext, packages); - } - - protected native HybridData initHybrid(); - - native boolean canCreateTurboModule(String moduleName); - - public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder { - protected MainApplicationTurboModuleManagerDelegate build( - ReactApplicationContext context, List packages) { - return new MainApplicationTurboModuleManagerDelegate(context, packages); - } - } - - @Override - protected synchronized void maybeLoadOtherSoLibraries() { - if (!sIsSoLibraryLoaded) { - // If you change the name of your application .so file in the Android.mk file, - // make sure you update the name here as well. - SoLoader.loadLibrary("spacedrive_appmodules"); - sIsSoLibraryLoaded = true; - } - } -} diff --git a/apps/mobile/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/apps/mobile/android/app/src/main/jni/MainApplicationModuleProvider.cpp deleted file mode 100644 index 0ac23cc62..000000000 --- a/apps/mobile/android/app/src/main/jni/MainApplicationModuleProvider.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "MainApplicationModuleProvider.h" - -#include - -namespace facebook { -namespace react { - -std::shared_ptr MainApplicationModuleProvider( - const std::string moduleName, - const JavaTurboModule::InitParams ¶ms) { - // Here you can provide your own module provider for TurboModules coming from - // either your application or from external libraries. The approach to follow - // is similar to the following (for a library called `samplelibrary`: - // - // auto module = samplelibrary_ModuleProvider(moduleName, params); - // if (module != nullptr) { - // return module; - // } - // return rncore_ModuleProvider(moduleName, params); - return rncore_ModuleProvider(moduleName, params); -} - -} // namespace react -} // namespace facebook diff --git a/apps/mobile/android/app/src/main/jni/MainApplicationModuleProvider.h b/apps/mobile/android/app/src/main/jni/MainApplicationModuleProvider.h deleted file mode 100644 index 0fa43fa69..000000000 --- a/apps/mobile/android/app/src/main/jni/MainApplicationModuleProvider.h +++ /dev/null @@ -1,16 +0,0 @@ -#pragma once - -#include -#include - -#include - -namespace facebook { -namespace react { - -std::shared_ptr MainApplicationModuleProvider( - const std::string moduleName, - const JavaTurboModule::InitParams ¶ms); - -} // namespace react -} // namespace facebook diff --git a/apps/mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/apps/mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp deleted file mode 100644 index dbbdc3d13..000000000 --- a/apps/mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "MainApplicationTurboModuleManagerDelegate.h" -#include "MainApplicationModuleProvider.h" - -namespace facebook { -namespace react { - -jni::local_ref -MainApplicationTurboModuleManagerDelegate::initHybrid( - jni::alias_ref) { - return makeCxxInstance(); -} - -void MainApplicationTurboModuleManagerDelegate::registerNatives() { - registerHybrid({ - makeNativeMethod( - "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid), - makeNativeMethod( - "canCreateTurboModule", - MainApplicationTurboModuleManagerDelegate::canCreateTurboModule), - }); -} - -std::shared_ptr -MainApplicationTurboModuleManagerDelegate::getTurboModule( - const std::string name, - const std::shared_ptr jsInvoker) { - // Not implemented yet: provide pure-C++ NativeModules here. - return nullptr; -} - -std::shared_ptr -MainApplicationTurboModuleManagerDelegate::getTurboModule( - const std::string name, - const JavaTurboModule::InitParams ¶ms) { - return MainApplicationModuleProvider(name, params); -} - -bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule( - std::string name) { - return getTurboModule(name, nullptr) != nullptr || - getTurboModule(name, {.moduleName = name}) != nullptr; -} - -} // namespace react -} // namespace facebook diff --git a/apps/mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/apps/mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h deleted file mode 100644 index f5670d9f8..000000000 --- a/apps/mobile/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include - -#include -#include - -namespace facebook { -namespace react { - -class MainApplicationTurboModuleManagerDelegate - : public jni::HybridClass< - MainApplicationTurboModuleManagerDelegate, - TurboModuleManagerDelegate> { - public: - // Adapt it to the package you used for your Java class. - static constexpr auto kJavaDescriptor = - "Lcom/spacedrive/app/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; - - static jni::local_ref initHybrid(jni::alias_ref); - - static void registerNatives(); - - std::shared_ptr getTurboModule( - const std::string name, - const std::shared_ptr jsInvoker) override; - std::shared_ptr getTurboModule( - const std::string name, - const JavaTurboModule::InitParams ¶ms) override; - - /** - * Test-only method. Allows user to verify whether a TurboModule can be - * created by instances of this class. - */ - bool canCreateTurboModule(std::string name); -}; - -} // namespace react -} // namespace facebook diff --git a/apps/mobile/android/app/src/main/jni/MainComponentsRegistry.cpp b/apps/mobile/android/app/src/main/jni/MainComponentsRegistry.cpp deleted file mode 100644 index 8f7edffd6..000000000 --- a/apps/mobile/android/app/src/main/jni/MainComponentsRegistry.cpp +++ /dev/null @@ -1,61 +0,0 @@ -#include "MainComponentsRegistry.h" - -#include -#include -#include -#include - -namespace facebook { -namespace react { - -MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} - -std::shared_ptr -MainComponentsRegistry::sharedProviderRegistry() { - auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); - - // Custom Fabric Components go here. You can register custom - // components coming from your App or from 3rd party libraries here. - // - // providerRegistry->add(concreteComponentDescriptorProvider< - // AocViewerComponentDescriptor>()); - return providerRegistry; -} - -jni::local_ref -MainComponentsRegistry::initHybrid( - jni::alias_ref, - ComponentFactory *delegate) { - auto instance = makeCxxInstance(delegate); - - auto buildRegistryFunction = - [](EventDispatcher::Weak const &eventDispatcher, - ContextContainer::Shared const &contextContainer) - -> ComponentDescriptorRegistry::Shared { - auto registry = MainComponentsRegistry::sharedProviderRegistry() - ->createComponentDescriptorRegistry( - {eventDispatcher, contextContainer}); - - auto mutableRegistry = - std::const_pointer_cast(registry); - - mutableRegistry->setFallbackComponentDescriptor( - std::make_shared( - ComponentDescriptorParameters{ - eventDispatcher, contextContainer, nullptr})); - - return registry; - }; - - delegate->buildRegistryFunction = buildRegistryFunction; - return instance; -} - -void MainComponentsRegistry::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid), - }); -} - -} // namespace react -} // namespace facebook diff --git a/apps/mobile/android/app/src/main/jni/MainComponentsRegistry.h b/apps/mobile/android/app/src/main/jni/MainComponentsRegistry.h deleted file mode 100644 index a7f222542..000000000 --- a/apps/mobile/android/app/src/main/jni/MainComponentsRegistry.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -namespace facebook { -namespace react { - -class MainComponentsRegistry - : public facebook::jni::HybridClass { - public: - // Adapt it to the package you used for your Java class. - constexpr static auto kJavaDescriptor = - "Lcom/spacedrive/app/newarchitecture/components/MainComponentsRegistry;"; - - static void registerNatives(); - - MainComponentsRegistry(ComponentFactory *delegate); - - private: - static std::shared_ptr - sharedProviderRegistry(); - - static jni::local_ref initHybrid( - jni::alias_ref, - ComponentFactory *delegate); -}; - -} // namespace react -} // namespace facebook diff --git a/apps/mobile/android/app/src/main/jni/OnLoad.cpp b/apps/mobile/android/app/src/main/jni/OnLoad.cpp deleted file mode 100644 index c569b6e86..000000000 --- a/apps/mobile/android/app/src/main/jni/OnLoad.cpp +++ /dev/null @@ -1,11 +0,0 @@ -#include -#include "MainApplicationTurboModuleManagerDelegate.h" -#include "MainComponentsRegistry.h" - -JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { - return facebook::jni::initialize(vm, [] { - facebook::react::MainApplicationTurboModuleManagerDelegate:: - registerNatives(); - facebook::react::MainComponentsRegistry::registerNatives(); - }); -} diff --git a/apps/mobile/android/app/src/release/java/com/spacedrive/app/ReactNativeFlipper.java b/apps/mobile/android/app/src/release/java/com/spacedrive/app/ReactNativeFlipper.java new file mode 100644 index 000000000..50dd8daac --- /dev/null +++ b/apps/mobile/android/app/src/release/java/com/spacedrive/app/ReactNativeFlipper.java @@ -0,0 +1,20 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + *

This source code is licensed under the MIT license found in the LICENSE file in the root + * directory of this source tree. + */ +package com.spacedrive.app; + +import android.content.Context; +import com.facebook.react.ReactInstanceManager; + +/** + * Class responsible of loading Flipper inside your React Native application. This is the release + * flavor of it so it's empty as we don't want to load Flipper. + */ +public class ReactNativeFlipper { + public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { + // Do nothing as we don't want to initialize Flipper on Release. + } +} \ No newline at end of file diff --git a/apps/mobile/android/build.gradle b/apps/mobile/android/build.gradle index dc4382afd..c05852a6e 100644 --- a/apps/mobile/android/build.gradle +++ b/apps/mobile/android/build.gradle @@ -4,38 +4,31 @@ import org.apache.tools.ant.taskdefs.condition.Os buildscript { ext { - buildToolsVersion = findProperty('android.buildToolsVersion') ?: '31.0.0' + buildToolsVersion = findProperty('android.buildToolsVersion') ?: '33.0.0' minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '21') - compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '31') - targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '31') - reactNativeVersion = "0.69.4" // https://github.com/expo/expo/issues/18129 + compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '33') + targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '33') if (findProperty('android.kotlinVersion')) { kotlinVersion = findProperty('android.kotlinVersion') } frescoVersion = findProperty('expo.frescoVersion') ?: '2.5.0' - if (System.properties['os.arch'] == 'aarch64') { - // For M1 Users we need to use the NDK 24 which added support for aarch64 - ndkVersion = '24.0.8215888' - } else { - // Otherwise we default to the side-by-side NDK version from AGP. - ndkVersion = '21.4.7075529' - } + // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. + ndkVersion = "23.1.7779620" } repositories { google() mavenCentral() + // Spacedrive -- Required for the Android Rust plugin. maven { url "https://plugins.gradle.org/m2/" } } dependencies { - classpath('com.android.tools.build:gradle:7.1.1') + classpath('com.android.tools.build:gradle:7.4.1') classpath('com.facebook.react:react-native-gradle-plugin') - classpath('de.undercouch:gradle-download-task:5.0.1') + // Spacedrive -- Rust plugin. classpath('org.mozilla.rust-android-gradle:plugin:0.9.3') - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files } } @@ -52,13 +45,7 @@ allprojects { } google() - mavenCentral { - // We don't want to fetch react-native from Maven Central as there are - // older versions over there. - content { - excludeGroup 'com.facebook.react' - } - } + mavenCentral() maven { url 'https://www.jitpack.io' } } } diff --git a/apps/mobile/android/gradle.properties b/apps/mobile/android/gradle.properties index 9911ac4af..243667b99 100644 --- a/apps/mobile/android/gradle.properties +++ b/apps/mobile/android/gradle.properties @@ -50,4 +50,4 @@ expo.gif.enabled=true expo.webp.enabled=true # Enable animated webp support (~3.4 MB increase) # Disabled by default because iOS doesn't support animated webp -expo.webp.animated=false +expo.webp.animated=false \ No newline at end of file diff --git a/apps/mobile/android/gradle/wrapper/gradle-wrapper.properties b/apps/mobile/android/gradle/wrapper/gradle-wrapper.properties index 669386b87..7b54e6906 100644 --- a/apps/mobile/android/gradle/wrapper/gradle-wrapper.properties +++ b/apps/mobile/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/apps/mobile/android/gradlew b/apps/mobile/android/gradlew index 1b6c78733..ab2855b44 100755 --- a/apps/mobile/android/gradlew +++ b/apps/mobile/android/gradlew @@ -205,6 +205,12 @@ set -- \ org.gradle.wrapper.GradleWrapperMain \ "$@" +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + # Use "xargs" to parse quoted args. # # With -n1 it outputs one arg per line, with the quotes and backslashes removed. @@ -231,4 +237,4 @@ eval "set -- $( tr '\n' ' ' )" '"$@"' -exec "$JAVACMD" "$@" +exec "$JAVACMD" "$@" \ No newline at end of file diff --git a/apps/mobile/android/gradlew.bat b/apps/mobile/android/gradlew.bat index ac1b06f93..a74609357 100644 --- a/apps/mobile/android/gradlew.bat +++ b/apps/mobile/android/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,7 +25,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto execute +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -75,15 +75,17 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal -:omega +:omega \ No newline at end of file diff --git a/apps/mobile/android/settings.gradle b/apps/mobile/android/settings.gradle index d52a28091..7505dd3b5 100644 --- a/apps/mobile/android/settings.gradle +++ b/apps/mobile/android/settings.gradle @@ -7,11 +7,4 @@ apply from: new File(["node", "--print", "require.resolve('@react-native-communi applyNativeModulesSettingsGradle(settings) include ':app' -includeBuild(new File(["node", "--print", "require.resolve('react-native-gradle-plugin/package.json')"].execute(null, rootDir).text.trim()).getParentFile()) - -if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") { - include(":ReactAndroid") - project(":ReactAndroid").projectDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../ReactAndroid"); - include(":ReactAndroid:hermes-engine") - project(":ReactAndroid:hermes-engine").projectDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../ReactAndroid/hermes-engine"); -} +includeBuild(new File(["node", "--print", "require.resolve('react-native-gradle-plugin/package.json')"].execute(null, rootDir).text.trim()).getParentFile()) \ No newline at end of file diff --git a/apps/mobile/app.json b/apps/mobile/app.json index 02add5aa7..02f0b25d9 100644 --- a/apps/mobile/app.json +++ b/apps/mobile/app.json @@ -7,6 +7,7 @@ "orientation": "portrait", "jsEngine": "hermes", "scheme": "spacedrive", + "platforms": ["ios", "android"], "userInterfaceStyle": "automatic", "updates": { "enabled": false, diff --git a/apps/mobile/ios/Podfile b/apps/mobile/ios/Podfile index a1ba532e9..499f54880 100644 --- a/apps/mobile/ios/Podfile +++ b/apps/mobile/ios/Podfile @@ -5,34 +5,62 @@ require File.join(File.dirname(`node --print "require.resolve('@react-native-com require 'json' podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {} +ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0' + platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0' install! 'cocoapods', :deterministic_uuids => false +prepare_react_native_project! + +# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. +# because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this, +# you can also exclude `react-native-flipper` in `react-native.config.js` +# +# ```js +# module.exports = { +# dependencies: { +# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), +# } +# } +# ``` +flipper_config = FlipperConfiguration.disabled +if ENV['NO_FLIPPER'] == '1' then + # Explicitly disabled through environment variables + flipper_config = FlipperConfiguration.disabled +elsif podfile_properties.key?('ios.flipper') then + # Configure Flipper in Podfile.properties.json + if podfile_properties['ios.flipper'] == 'true' then + flipper_config = FlipperConfiguration.enabled(["Debug", "Release"]) + elsif podfile_properties['ios.flipper'] != 'false' then + flipper_config = FlipperConfiguration.enabled(["Debug", "Release"], { 'Flipper' => podfile_properties['ios.flipper'] }) + end +end + target 'Spacedrive' do use_expo_modules! config = use_native_modules! use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks'] + use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS'] # Flags change depending on the env values. flags = get_default_flags() use_react_native!( :path => config[:reactNativePath], - :hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes', + :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes', :fabric_enabled => flags[:fabric_enabled], # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/..", - # - # Uncomment to opt-in to using Flipper - # Note that if you have use_frameworks! enabled, Flipper will not work - # :flipper_configuration => !ENV['CI'] ? FlipperConfiguration.enabled : FlipperConfiguration.disabled, + # Note that if you have use_frameworks! enabled, Flipper will not work if enabled + :flipper_configuration => flipper_config ) post_install do |installer| react_native_post_install( installer, + config[:reactNativePath], # Set `mac_catalyst_enabled` to `true` in order to apply patches # necessary for Mac Catalyst builds :mac_catalyst_enabled => false diff --git a/apps/mobile/ios/Podfile.lock b/apps/mobile/ios/Podfile.lock index 184617f70..56e28f269 100644 --- a/apps/mobile/ios/Podfile.lock +++ b/apps/mobile/ios/Podfile.lock @@ -1,38 +1,41 @@ PODS: - boost (1.76.0) - DoubleConversion (1.1.6) - - EXApplication (5.0.1): + - EXApplication (5.1.1): - ExpoModulesCore - - EXConstants (14.0.2): + - EXConstants (14.2.1): - ExpoModulesCore - - EXFileSystem (15.1.1): + - EXFileSystem (15.2.2): - ExpoModulesCore - - EXFont (11.0.1): + - EXFont (11.1.1): - ExpoModulesCore - - EXMediaLibrary (15.0.0): + - EXMediaLibrary (15.2.2): - ExpoModulesCore - React-Core - - Expo (47.0.13): + - Expo (48.0.6): - ExpoModulesCore - - ExpoKeepAwake (11.0.1): + - ExpoKeepAwake (12.0.1): - ExpoModulesCore - - ExpoModulesCore (1.1.1): + - ExpoModulesCore (1.2.4): - React-Core + - React-RCTAppDelegate - ReactCommon/turbomodule/core - - EXSplashScreen (0.17.5): + - EXSplashScreen (0.18.1): - ExpoModulesCore - React-Core - - FBLazyVector (0.70.5) - - FBReactNativeSpec (0.70.5): + - FBLazyVector (0.71.3) + - FBReactNativeSpec (0.71.3): - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.5) - - RCTTypeSafety (= 0.70.5) - - React-Core (= 0.70.5) - - React-jsi (= 0.70.5) - - ReactCommon/turbomodule/core (= 0.70.5) + - RCTRequired (= 0.71.3) + - RCTTypeSafety (= 0.71.3) + - React-Core (= 0.71.3) + - React-jsi (= 0.71.3) + - ReactCommon/turbomodule/core (= 0.71.3) - fmt (6.2.1) - glog (0.3.5) - - hermes-engine (0.70.5) + - hermes-engine (0.71.3): + - hermes-engine/Pre-built (= 0.71.3) + - hermes-engine/Pre-built (0.71.3) - libevent (2.1.12) - lottie-ios (3.4.4) - lottie-react-native (5.1.4): @@ -55,214 +58,239 @@ PODS: - fmt (~> 6.2.1) - glog - libevent - - RCTRequired (0.70.5) - - RCTTypeSafety (0.70.5): - - FBLazyVector (= 0.70.5) - - RCTRequired (= 0.70.5) - - React-Core (= 0.70.5) - - React (0.70.5): - - React-Core (= 0.70.5) - - React-Core/DevSupport (= 0.70.5) - - React-Core/RCTWebSocket (= 0.70.5) - - React-RCTActionSheet (= 0.70.5) - - React-RCTAnimation (= 0.70.5) - - React-RCTBlob (= 0.70.5) - - React-RCTImage (= 0.70.5) - - React-RCTLinking (= 0.70.5) - - React-RCTNetwork (= 0.70.5) - - React-RCTSettings (= 0.70.5) - - React-RCTText (= 0.70.5) - - React-RCTVibration (= 0.70.5) - - React-bridging (0.70.5): - - RCT-Folly (= 2021.07.22.00) - - React-jsi (= 0.70.5) - - React-callinvoker (0.70.5) - - React-Codegen (0.70.5): - - FBReactNativeSpec (= 0.70.5) - - RCT-Folly (= 2021.07.22.00) - - RCTRequired (= 0.70.5) - - RCTTypeSafety (= 0.70.5) - - React-Core (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - ReactCommon/turbomodule/core (= 0.70.5) - - React-Core (0.70.5): + - RCTRequired (0.71.3) + - RCTTypeSafety (0.71.3): + - FBLazyVector (= 0.71.3) + - RCTRequired (= 0.71.3) + - React-Core (= 0.71.3) + - React (0.71.3): + - React-Core (= 0.71.3) + - React-Core/DevSupport (= 0.71.3) + - React-Core/RCTWebSocket (= 0.71.3) + - React-RCTActionSheet (= 0.71.3) + - React-RCTAnimation (= 0.71.3) + - React-RCTBlob (= 0.71.3) + - React-RCTImage (= 0.71.3) + - React-RCTLinking (= 0.71.3) + - React-RCTNetwork (= 0.71.3) + - React-RCTSettings (= 0.71.3) + - React-RCTText (= 0.71.3) + - React-RCTVibration (= 0.71.3) + - React-callinvoker (0.71.3) + - React-Codegen (0.71.3): + - FBReactNativeSpec + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-jsi + - React-jsiexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-Core (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.5) - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-Core/Default (= 0.71.3) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/CoreModulesHeaders (0.70.5): + - React-Core/CoreModulesHeaders (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/Default (0.70.5): + - React-Core/Default (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/DevSupport (0.70.5): + - React-Core/DevSupport (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.5) - - React-Core/RCTWebSocket (= 0.70.5) - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-jsinspector (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-Core/Default (= 0.71.3) + - React-Core/RCTWebSocket (= 0.71.3) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-jsinspector (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/RCTActionSheetHeaders (0.70.5): + - React-Core/RCTActionSheetHeaders (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/RCTAnimationHeaders (0.70.5): + - React-Core/RCTAnimationHeaders (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/RCTBlobHeaders (0.70.5): + - React-Core/RCTBlobHeaders (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/RCTImageHeaders (0.70.5): + - React-Core/RCTImageHeaders (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/RCTLinkingHeaders (0.70.5): + - React-Core/RCTLinkingHeaders (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/RCTNetworkHeaders (0.70.5): + - React-Core/RCTNetworkHeaders (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/RCTSettingsHeaders (0.70.5): + - React-Core/RCTSettingsHeaders (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/RCTTextHeaders (0.70.5): + - React-Core/RCTTextHeaders (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/RCTVibrationHeaders (0.70.5): + - React-Core/RCTVibrationHeaders (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - React-Core/Default - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-Core/RCTWebSocket (0.70.5): + - React-Core/RCTWebSocket (0.71.3): - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Core/Default (= 0.70.5) - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-Core/Default (= 0.71.3) + - React-cxxreact (= 0.71.3) + - React-hermes + - React-jsi (= 0.71.3) + - React-jsiexecutor (= 0.71.3) + - React-perflogger (= 0.71.3) - Yoga - - React-CoreModules (0.70.5): + - React-CoreModules (0.71.3): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.5) - - React-Codegen (= 0.70.5) - - React-Core/CoreModulesHeaders (= 0.70.5) - - React-jsi (= 0.70.5) - - React-RCTImage (= 0.70.5) - - ReactCommon/turbomodule/core (= 0.70.5) - - React-cxxreact (0.70.5): + - RCTTypeSafety (= 0.71.3) + - React-Codegen (= 0.71.3) + - React-Core/CoreModulesHeaders (= 0.71.3) + - React-jsi (= 0.71.3) + - React-RCTBlob + - React-RCTImage (= 0.71.3) + - ReactCommon/turbomodule/core (= 0.71.3) + - React-cxxreact (0.71.3): - boost (= 1.76.0) - DoubleConversion - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-callinvoker (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsinspector (= 0.70.5) - - React-logger (= 0.70.5) - - React-perflogger (= 0.70.5) - - React-runtimeexecutor (= 0.70.5) - - React-hermes (0.70.5): + - React-callinvoker (= 0.71.3) + - React-jsi (= 0.71.3) + - React-jsinspector (= 0.71.3) + - React-logger (= 0.71.3) + - React-perflogger (= 0.71.3) + - React-runtimeexecutor (= 0.71.3) + - React-hermes (0.71.3): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2021.07.22.00) - RCT-Folly/Futures (= 2021.07.22.00) - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-jsiexecutor (= 0.70.5) - - React-jsinspector (= 0.70.5) - - React-perflogger (= 0.70.5) - - React-jsi (0.70.5): + - React-cxxreact (= 0.71.3) + - React-jsi + - React-jsiexecutor (= 0.71.3) + - React-jsinspector (= 0.71.3) + - React-perflogger (= 0.71.3) + - React-jsi (0.71.3): - boost (= 1.76.0) - DoubleConversion - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-jsi/Default (= 0.70.5) - - React-jsi/Default (0.70.5): - - boost (= 1.76.0) + - React-jsiexecutor (0.71.3): - DoubleConversion - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-jsiexecutor (0.70.5): - - DoubleConversion - - glog - - RCT-Folly (= 2021.07.22.00) - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-perflogger (= 0.70.5) - - React-jsinspector (0.70.5) - - React-logger (0.70.5): + - React-cxxreact (= 0.71.3) + - React-jsi (= 0.71.3) + - React-perflogger (= 0.71.3) + - React-jsinspector (0.71.3) + - React-logger (0.71.3): - glog - react-native-document-picker (8.1.3): - React-Core @@ -272,77 +300,95 @@ PODS: - RCTTypeSafety - React-Core - ReactCommon/turbomodule/core - - React-perflogger (0.70.5) - - React-RCTActionSheet (0.70.5): - - React-Core/RCTActionSheetHeaders (= 0.70.5) - - React-RCTAnimation (0.70.5): + - React-perflogger (0.71.3) + - React-RCTActionSheet (0.71.3): + - React-Core/RCTActionSheetHeaders (= 0.71.3) + - React-RCTAnimation (0.71.3): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.5) - - React-Codegen (= 0.70.5) - - React-Core/RCTAnimationHeaders (= 0.70.5) - - React-jsi (= 0.70.5) - - ReactCommon/turbomodule/core (= 0.70.5) - - React-RCTBlob (0.70.5): + - RCTTypeSafety (= 0.71.3) + - React-Codegen (= 0.71.3) + - React-Core/RCTAnimationHeaders (= 0.71.3) + - React-jsi (= 0.71.3) + - ReactCommon/turbomodule/core (= 0.71.3) + - React-RCTAppDelegate (0.71.3): + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - ReactCommon/turbomodule/core + - React-RCTBlob (0.71.3): + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.5) - - React-Core/RCTBlobHeaders (= 0.70.5) - - React-Core/RCTWebSocket (= 0.70.5) - - React-jsi (= 0.70.5) - - React-RCTNetwork (= 0.70.5) - - ReactCommon/turbomodule/core (= 0.70.5) - - React-RCTImage (0.70.5): + - React-Codegen (= 0.71.3) + - React-Core/RCTBlobHeaders (= 0.71.3) + - React-Core/RCTWebSocket (= 0.71.3) + - React-jsi (= 0.71.3) + - React-RCTNetwork (= 0.71.3) + - ReactCommon/turbomodule/core (= 0.71.3) + - React-RCTImage (0.71.3): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.5) - - React-Codegen (= 0.70.5) - - React-Core/RCTImageHeaders (= 0.70.5) - - React-jsi (= 0.70.5) - - React-RCTNetwork (= 0.70.5) - - ReactCommon/turbomodule/core (= 0.70.5) - - React-RCTLinking (0.70.5): - - React-Codegen (= 0.70.5) - - React-Core/RCTLinkingHeaders (= 0.70.5) - - React-jsi (= 0.70.5) - - ReactCommon/turbomodule/core (= 0.70.5) - - React-RCTNetwork (0.70.5): + - RCTTypeSafety (= 0.71.3) + - React-Codegen (= 0.71.3) + - React-Core/RCTImageHeaders (= 0.71.3) + - React-jsi (= 0.71.3) + - React-RCTNetwork (= 0.71.3) + - ReactCommon/turbomodule/core (= 0.71.3) + - React-RCTLinking (0.71.3): + - React-Codegen (= 0.71.3) + - React-Core/RCTLinkingHeaders (= 0.71.3) + - React-jsi (= 0.71.3) + - ReactCommon/turbomodule/core (= 0.71.3) + - React-RCTNetwork (0.71.3): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.5) - - React-Codegen (= 0.70.5) - - React-Core/RCTNetworkHeaders (= 0.70.5) - - React-jsi (= 0.70.5) - - ReactCommon/turbomodule/core (= 0.70.5) - - React-RCTSettings (0.70.5): + - RCTTypeSafety (= 0.71.3) + - React-Codegen (= 0.71.3) + - React-Core/RCTNetworkHeaders (= 0.71.3) + - React-jsi (= 0.71.3) + - ReactCommon/turbomodule/core (= 0.71.3) + - React-RCTSettings (0.71.3): - RCT-Folly (= 2021.07.22.00) - - RCTTypeSafety (= 0.70.5) - - React-Codegen (= 0.70.5) - - React-Core/RCTSettingsHeaders (= 0.70.5) - - React-jsi (= 0.70.5) - - ReactCommon/turbomodule/core (= 0.70.5) - - React-RCTText (0.70.5): - - React-Core/RCTTextHeaders (= 0.70.5) - - React-RCTVibration (0.70.5): + - RCTTypeSafety (= 0.71.3) + - React-Codegen (= 0.71.3) + - React-Core/RCTSettingsHeaders (= 0.71.3) + - React-jsi (= 0.71.3) + - ReactCommon/turbomodule/core (= 0.71.3) + - React-RCTText (0.71.3): + - React-Core/RCTTextHeaders (= 0.71.3) + - React-RCTVibration (0.71.3): - RCT-Folly (= 2021.07.22.00) - - React-Codegen (= 0.70.5) - - React-Core/RCTVibrationHeaders (= 0.70.5) - - React-jsi (= 0.70.5) - - ReactCommon/turbomodule/core (= 0.70.5) - - React-runtimeexecutor (0.70.5): - - React-jsi (= 0.70.5) - - ReactCommon/turbomodule/core (0.70.5): + - React-Codegen (= 0.71.3) + - React-Core/RCTVibrationHeaders (= 0.71.3) + - React-jsi (= 0.71.3) + - ReactCommon/turbomodule/core (= 0.71.3) + - React-runtimeexecutor (0.71.3): + - React-jsi (= 0.71.3) + - ReactCommon/turbomodule/bridging (0.71.3): - DoubleConversion - glog + - hermes-engine - RCT-Folly (= 2021.07.22.00) - - React-bridging (= 0.70.5) - - React-callinvoker (= 0.70.5) - - React-Core (= 0.70.5) - - React-cxxreact (= 0.70.5) - - React-jsi (= 0.70.5) - - React-logger (= 0.70.5) - - React-perflogger (= 0.70.5) + - React-callinvoker (= 0.71.3) + - React-Core (= 0.71.3) + - React-cxxreact (= 0.71.3) + - React-jsi (= 0.71.3) + - React-logger (= 0.71.3) + - React-perflogger (= 0.71.3) + - ReactCommon/turbomodule/core (0.71.3): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2021.07.22.00) + - React-callinvoker (= 0.71.3) + - React-Core (= 0.71.3) + - React-cxxreact (= 0.71.3) + - React-jsi (= 0.71.3) + - React-logger (= 0.71.3) + - React-perflogger (= 0.71.3) - RNCAsyncStorage (1.17.11): - React-Core - RNCMaskedView (0.2.8): - React-Core - - RNFlashList (1.4.1): + - RNFlashList (1.4.0): - React-Core - RNFS (2.20.0): - React-Core @@ -375,16 +421,16 @@ PODS: - React-RCTText - ReactCommon/turbomodule/core - Yoga - - RNScreens (3.19.0): + - RNScreens (3.20.0): - React-Core - React-RCTImage - - RNSVG (13.8.0): + - RNSVG (13.4.0): - React-Core - Yoga (1.14.0) DEPENDENCIES: - - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) - - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) + - boost (from `../../../node_modules/react-native/third-party-podspecs/boost.podspec`) + - DoubleConversion (from `../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - EXApplication (from `../../../node_modules/expo-application/ios`) - EXConstants (from `../../../node_modules/expo-constants/ios`) - EXFileSystem (from `../../../node_modules/expo-file-system/ios`) @@ -394,51 +440,51 @@ DEPENDENCIES: - ExpoKeepAwake (from `../../../node_modules/expo-keep-awake/ios`) - ExpoModulesCore (from `../../../node_modules/expo-modules-core`) - EXSplashScreen (from `../../../node_modules/expo-splash-screen/ios`) - - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - - hermes-engine (from `../node_modules/react-native/sdks/hermes/hermes-engine.podspec`) + - FBLazyVector (from `../../../node_modules/react-native/Libraries/FBLazyVector`) + - FBReactNativeSpec (from `../../../node_modules/react-native/React/FBReactNativeSpec`) + - glog (from `../../../node_modules/react-native/third-party-podspecs/glog.podspec`) + - hermes-engine (from `../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - libevent (~> 2.1.12) - - lottie-react-native (from `../node_modules/lottie-react-native`) - - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - - React (from `../node_modules/react-native/`) - - React-bridging (from `../node_modules/react-native/ReactCommon`) - - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) + - lottie-react-native (from `../../../node_modules/lottie-react-native`) + - RCT-Folly (from `../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) + - RCTRequired (from `../../../node_modules/react-native/Libraries/RCTRequired`) + - RCTTypeSafety (from `../../../node_modules/react-native/Libraries/TypeSafety`) + - React (from `../../../node_modules/react-native/`) + - React-callinvoker (from `../../../node_modules/react-native/ReactCommon/callinvoker`) - React-Codegen (from `build/generated/ios`) - - React-Core (from `../node_modules/react-native/`) - - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) - - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) - - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) - - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) - - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - - react-native-document-picker (from `../node_modules/react-native-document-picker`) - - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) - - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) - - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) - - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) - - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) - - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) - - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" - - "RNCMaskedView (from `../node_modules/@react-native-masked-view/masked-view`)" - - "RNFlashList (from `../node_modules/@shopify/flash-list`)" - - RNFS (from `../node_modules/react-native-fs`) - - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - - RNReanimated (from `../node_modules/react-native-reanimated`) - - RNScreens (from `../node_modules/react-native-screens`) - - RNSVG (from `../node_modules/react-native-svg`) - - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) + - React-Core (from `../../../node_modules/react-native/`) + - React-Core/RCTWebSocket (from `../../../node_modules/react-native/`) + - React-CoreModules (from `../../../node_modules/react-native/React/CoreModules`) + - React-cxxreact (from `../../../node_modules/react-native/ReactCommon/cxxreact`) + - React-hermes (from `../../../node_modules/react-native/ReactCommon/hermes`) + - React-jsi (from `../../../node_modules/react-native/ReactCommon/jsi`) + - React-jsiexecutor (from `../../../node_modules/react-native/ReactCommon/jsiexecutor`) + - React-jsinspector (from `../../../node_modules/react-native/ReactCommon/jsinspector`) + - React-logger (from `../../../node_modules/react-native/ReactCommon/logger`) + - react-native-document-picker (from `../../../node_modules/react-native-document-picker`) + - react-native-safe-area-context (from `../../../node_modules/react-native-safe-area-context`) + - React-perflogger (from `../../../node_modules/react-native/ReactCommon/reactperflogger`) + - React-RCTActionSheet (from `../../../node_modules/react-native/Libraries/ActionSheetIOS`) + - React-RCTAnimation (from `../../../node_modules/react-native/Libraries/NativeAnimation`) + - React-RCTAppDelegate (from `../../../node_modules/react-native/Libraries/AppDelegate`) + - React-RCTBlob (from `../../../node_modules/react-native/Libraries/Blob`) + - React-RCTImage (from `../../../node_modules/react-native/Libraries/Image`) + - React-RCTLinking (from `../../../node_modules/react-native/Libraries/LinkingIOS`) + - React-RCTNetwork (from `../../../node_modules/react-native/Libraries/Network`) + - React-RCTSettings (from `../../../node_modules/react-native/Libraries/Settings`) + - React-RCTText (from `../../../node_modules/react-native/Libraries/Text`) + - React-RCTVibration (from `../../../node_modules/react-native/Libraries/Vibration`) + - React-runtimeexecutor (from `../../../node_modules/react-native/ReactCommon/runtimeexecutor`) + - ReactCommon/turbomodule/core (from `../../../node_modules/react-native/ReactCommon`) + - "RNCAsyncStorage (from `../../../node_modules/@react-native-async-storage/async-storage`)" + - "RNCMaskedView (from `../../../node_modules/@react-native-masked-view/masked-view`)" + - "RNFlashList (from `../../../node_modules/@shopify/flash-list`)" + - RNFS (from `../../../node_modules/react-native-fs`) + - RNGestureHandler (from `../../../node_modules/react-native-gesture-handler`) + - RNReanimated (from `../../../node_modules/react-native-reanimated`) + - RNScreens (from `../../../node_modules/react-native-screens`) + - RNSVG (from `../../../node_modules/react-native-svg`) + - Yoga (from `../../../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: trunk: @@ -448,9 +494,9 @@ SPEC REPOS: EXTERNAL SOURCES: boost: - :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" + :podspec: "../../../node_modules/react-native/third-party-podspecs/boost.podspec" DoubleConversion: - :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" + :podspec: "../../../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" EXApplication: :path: "../../../node_modules/expo-application/ios" EXConstants: @@ -470,151 +516,151 @@ EXTERNAL SOURCES: EXSplashScreen: :path: "../../../node_modules/expo-splash-screen/ios" FBLazyVector: - :path: "../node_modules/react-native/Libraries/FBLazyVector" + :path: "../../../node_modules/react-native/Libraries/FBLazyVector" FBReactNativeSpec: - :path: "../node_modules/react-native/React/FBReactNativeSpec" + :path: "../../../node_modules/react-native/React/FBReactNativeSpec" glog: - :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" + :podspec: "../../../node_modules/react-native/third-party-podspecs/glog.podspec" hermes-engine: - :podspec: "../node_modules/react-native/sdks/hermes/hermes-engine.podspec" + :podspec: "../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" lottie-react-native: - :path: "../node_modules/lottie-react-native" + :path: "../../../node_modules/lottie-react-native" RCT-Folly: - :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" + :podspec: "../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTRequired: - :path: "../node_modules/react-native/Libraries/RCTRequired" + :path: "../../../node_modules/react-native/Libraries/RCTRequired" RCTTypeSafety: - :path: "../node_modules/react-native/Libraries/TypeSafety" + :path: "../../../node_modules/react-native/Libraries/TypeSafety" React: - :path: "../node_modules/react-native/" - React-bridging: - :path: "../node_modules/react-native/ReactCommon" + :path: "../../../node_modules/react-native/" React-callinvoker: - :path: "../node_modules/react-native/ReactCommon/callinvoker" + :path: "../../../node_modules/react-native/ReactCommon/callinvoker" React-Codegen: :path: build/generated/ios React-Core: - :path: "../node_modules/react-native/" + :path: "../../../node_modules/react-native/" React-CoreModules: - :path: "../node_modules/react-native/React/CoreModules" + :path: "../../../node_modules/react-native/React/CoreModules" React-cxxreact: - :path: "../node_modules/react-native/ReactCommon/cxxreact" + :path: "../../../node_modules/react-native/ReactCommon/cxxreact" React-hermes: - :path: "../node_modules/react-native/ReactCommon/hermes" + :path: "../../../node_modules/react-native/ReactCommon/hermes" React-jsi: - :path: "../node_modules/react-native/ReactCommon/jsi" + :path: "../../../node_modules/react-native/ReactCommon/jsi" React-jsiexecutor: - :path: "../node_modules/react-native/ReactCommon/jsiexecutor" + :path: "../../../node_modules/react-native/ReactCommon/jsiexecutor" React-jsinspector: - :path: "../node_modules/react-native/ReactCommon/jsinspector" + :path: "../../../node_modules/react-native/ReactCommon/jsinspector" React-logger: - :path: "../node_modules/react-native/ReactCommon/logger" + :path: "../../../node_modules/react-native/ReactCommon/logger" react-native-document-picker: - :path: "../node_modules/react-native-document-picker" + :path: "../../../node_modules/react-native-document-picker" react-native-safe-area-context: - :path: "../node_modules/react-native-safe-area-context" + :path: "../../../node_modules/react-native-safe-area-context" React-perflogger: - :path: "../node_modules/react-native/ReactCommon/reactperflogger" + :path: "../../../node_modules/react-native/ReactCommon/reactperflogger" React-RCTActionSheet: - :path: "../node_modules/react-native/Libraries/ActionSheetIOS" + :path: "../../../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: - :path: "../node_modules/react-native/Libraries/NativeAnimation" + :path: "../../../node_modules/react-native/Libraries/NativeAnimation" + React-RCTAppDelegate: + :path: "../../../node_modules/react-native/Libraries/AppDelegate" React-RCTBlob: - :path: "../node_modules/react-native/Libraries/Blob" + :path: "../../../node_modules/react-native/Libraries/Blob" React-RCTImage: - :path: "../node_modules/react-native/Libraries/Image" + :path: "../../../node_modules/react-native/Libraries/Image" React-RCTLinking: - :path: "../node_modules/react-native/Libraries/LinkingIOS" + :path: "../../../node_modules/react-native/Libraries/LinkingIOS" React-RCTNetwork: - :path: "../node_modules/react-native/Libraries/Network" + :path: "../../../node_modules/react-native/Libraries/Network" React-RCTSettings: - :path: "../node_modules/react-native/Libraries/Settings" + :path: "../../../node_modules/react-native/Libraries/Settings" React-RCTText: - :path: "../node_modules/react-native/Libraries/Text" + :path: "../../../node_modules/react-native/Libraries/Text" React-RCTVibration: - :path: "../node_modules/react-native/Libraries/Vibration" + :path: "../../../node_modules/react-native/Libraries/Vibration" React-runtimeexecutor: - :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" + :path: "../../../node_modules/react-native/ReactCommon/runtimeexecutor" ReactCommon: - :path: "../node_modules/react-native/ReactCommon" + :path: "../../../node_modules/react-native/ReactCommon" RNCAsyncStorage: - :path: "../node_modules/@react-native-async-storage/async-storage" + :path: "../../../node_modules/@react-native-async-storage/async-storage" RNCMaskedView: - :path: "../node_modules/@react-native-masked-view/masked-view" + :path: "../../../node_modules/@react-native-masked-view/masked-view" RNFlashList: - :path: "../node_modules/@shopify/flash-list" + :path: "../../../node_modules/@shopify/flash-list" RNFS: - :path: "../node_modules/react-native-fs" + :path: "../../../node_modules/react-native-fs" RNGestureHandler: - :path: "../node_modules/react-native-gesture-handler" + :path: "../../../node_modules/react-native-gesture-handler" RNReanimated: - :path: "../node_modules/react-native-reanimated" + :path: "../../../node_modules/react-native-reanimated" RNScreens: - :path: "../node_modules/react-native-screens" + :path: "../../../node_modules/react-native-screens" RNSVG: - :path: "../node_modules/react-native-svg" + :path: "../../../node_modules/react-native-svg" Yoga: - :path: "../node_modules/react-native/ReactCommon/yoga" + :path: "../../../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: a7c83b31436843459a1961bfd74b96033dc77234 + boost: 57d2868c099736d80fcd648bf211b4431e51a558 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 - EXApplication: 034b1c40a8e9fe1bff76a1e511ee90dff64ad834 - EXConstants: 3c86653c422dd77e40d10cbbabb3025003977415 - EXFileSystem: 60602b6eefa6873f97172c684b7537c9760b50d6 - EXFont: 319606bfe48c33b5b5063fb0994afdc496befe80 - EXMediaLibrary: b1c4f78878e45f6a359aff3a059e1660c41b73ab - Expo: b9fa98bf260992312ee3c424400819fb9beadafe - ExpoKeepAwake: 69b59d0a8d2b24de9f82759c39b3821fec030318 - ExpoModulesCore: 65ae09e2b2d3dd8ece30a5acc83c569968125ab0 - EXSplashScreen: 3e989924f61a8dd07ee4ea584c6ba14be9b51949 - FBLazyVector: affa4ba1bfdaac110a789192f4d452b053a86624 - FBReactNativeSpec: fe8b5f1429cfe83a8d72dc8ed61dc7704cac8745 + EXApplication: d8f53a7eee90a870a75656280e8d4b85726ea903 + EXConstants: f348da07e21b23d2b085e270d7b74f282df1a7d9 + EXFileSystem: 844e86ca9b5375486ecc4ef06d3838d5597d895d + EXFont: 6ea3800df746be7233208d80fe379b8ed74f4272 + EXMediaLibrary: 792fe9b828b5bfa2c5a8b629730f175af2938285 + Expo: 04ba1ddde0be07aff4306ae636a1804810679145 + ExpoKeepAwake: 69f5f627670d62318410392d03e0b5db0f85759a + ExpoModulesCore: 1667335d4f4c9b7801990930e6f0eea42c916a21 + EXSplashScreen: cd7fb052dff5ba8311d5c2455ecbebffe1b7a8ca + FBLazyVector: 60195509584153283780abdac5569feffb8f08cc + FBReactNativeSpec: c5a5c4f1b95ae42a17cd22c8c89c482a7b327fe3 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b - hermes-engine: 7fe5fc6ef707b7fdcb161b63898ec500e285653d + hermes-engine: 38bfe887e456b33b697187570a08de33969f5db7 libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 lottie-ios: 8f97d3271e155c2d688875c29cd3c74908aef5f8 lottie-react-native: b702fab740cdb952a8e2354713d3beda63ff97b0 - RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda - RCTRequired: 21229f84411088e5d8538f21212de49e46cc83e2 - RCTTypeSafety: 62eed57a32924b09edaaf170a548d1fc96223086 - React: f0254ccddeeef1defe66c6b1bb9133a4f040792b - React-bridging: e46911666b7ec19538a620a221d6396cd293d687 - React-callinvoker: 66b62e2c34546546b2f21ab0b7670346410a2b53 - React-Codegen: b6999435966df3bdf82afa3f319ba0d6f9a8532a - React-Core: dabbc9d1fe0a11d884e6ee1599789cf8eb1058a5 - React-CoreModules: 5b6b7668f156f73a56420df9ec68ca2ec8f2e818 - React-cxxreact: c7ca2baee46db22a30fce9e639277add3c3f6ad1 - React-hermes: c93e1d759ad5560dfea54d233013d7d2c725c286 - React-jsi: a565dcb49130ed20877a9bb1105ffeecbb93d02d - React-jsiexecutor: 31564fa6912459921568e8b0e49024285a4d584b - React-jsinspector: badd81696361249893a80477983e697aab3c1a34 - React-logger: fdda34dd285bdb0232e059b19d9606fa0ec3bb9c + RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 + RCTRequired: bec48f07daf7bcdc2655a0cde84e07d24d2a9e2a + RCTTypeSafety: 171394eebacf71e1cfad79dbfae7ee8fc16ca80a + React: d7433ccb6a8c36e4cbed59a73c0700fc83c3e98a + React-callinvoker: 15f165009bd22ae829b2b600e50bcc98076ce4b8 + React-Codegen: b5910000eaf1e0c2f47d29be6f82f5f1264420d7 + React-Core: b6f2f78d580a90b83fd7b0d1c6911c799f6eac82 + React-CoreModules: e0cbc1a4f4f3f60e23c476fef7ab37be363ea8c1 + React-cxxreact: c87f3f124b2117d00d410b35f16c2257e25e50fa + React-hermes: c64ca6bdf16a7069773103c9bedaf30ec90ab38f + React-jsi: 39729361645568e238081b3b3180fbad803f25a4 + React-jsiexecutor: 515b703d23ffadeac7687bc2d12fb08b90f0aaa1 + React-jsinspector: 9f7c9137605e72ca0343db4cea88006cb94856dd + React-logger: 957e5dc96d9dbffc6e0f15e0ee4d2b42829ff207 react-native-document-picker: 958e2bc82e128be69055be261aeac8d872c8d34c react-native-safe-area-context: 39c2d8be3328df5d437ac1700f4f3a4f75716acc - React-perflogger: e68d3795cf5d247a0379735cbac7309adf2fb931 - React-RCTActionSheet: 05452c3b281edb27850253db13ecd4c5a65bc247 - React-RCTAnimation: 578eebac706428e68466118e84aeacf3a282b4da - React-RCTBlob: f47a0aa61e7d1fb1a0e13da832b0da934939d71a - React-RCTImage: 60f54b66eed65d86b6dffaf4733d09161d44929d - React-RCTLinking: 91073205aeec4b29450ca79b709277319368ac9e - React-RCTNetwork: ca91f2c9465a7e335c8a5fae731fd7f10572213b - React-RCTSettings: 1a9a5d01337d55c18168c1abe0f4a589167d134a - React-RCTText: c591e8bd9347a294d8416357ca12d779afec01d5 - React-RCTVibration: 8e5c8c5d17af641f306d7380d8d0fe9b3c142c48 - React-runtimeexecutor: 7401c4a40f8728fd89df4a56104541b760876117 - ReactCommon: c9246996e73bf75a2c6c3ff15f1e16707cdc2da9 + React-perflogger: af8a3d31546077f42d729b949925cc4549f14def + React-RCTActionSheet: 57cc5adfefbaaf0aae2cf7e10bccd746f2903673 + React-RCTAnimation: 11c61e94da700c4dc915cf134513764d87fc5e2b + React-RCTAppDelegate: c3980adeaadcfd6cb495532e928b36ac6db3c14a + React-RCTBlob: ccc5049d742b41971141415ca86b83b201495695 + React-RCTImage: 7a9226b0944f1e76e8e01e35a9245c2477cdbabb + React-RCTLinking: bbe8cc582046a9c04f79c235b73c93700263e8b4 + React-RCTNetwork: fc2ca322159dc54e06508d4f5c3e934da63dc013 + React-RCTSettings: f1e9db2cdf946426d3f2b210e4ff4ce0f0d842ef + React-RCTText: 1c41dd57e5d742b1396b4eeb251851ce7ff0fca1 + React-RCTVibration: 5199a180d04873366a83855de55ac33ce60fe4d5 + React-runtimeexecutor: 7bf0dafc7b727d93c8cb94eb00a9d3753c446c3e + ReactCommon: 6f65ea5b7d84deb9e386f670dd11ce499ded7b40 RNCAsyncStorage: 8616bd5a58af409453ea4e1b246521bb76578d60 RNCMaskedView: bc0170f389056201c82a55e242e5d90070e18e5a - RNFlashList: 8ec7f7454721145fe84566bb9e88bcf58981c9fe + RNFlashList: 399bf6a0db68f594ad2c86aaff3ea39564f39f8a RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 RNGestureHandler: 071d7a9ad81e8b83fe7663b303d132406a7d8f39 - RNReanimated: 6668b0587bebd4b15dd849b99e5a9c70fc12ed95 - RNScreens: ea4cd3a853063cda19a4e3c28d2e52180c80f4eb - RNSVG: c1e76b81c76cdcd34b4e1188852892dc280eb902 - Yoga: eca980a5771bf114c41a754098cd85e6e0d90ed7 + RNReanimated: addc4900bf47882118d0a1b21747fa6705fa8cff + RNScreens: 218801c16a2782546d30bd2026bb625c0302d70f + RNSVG: 07dbd870b0dcdecc99b3a202fa37c8ca163caec2 + Yoga: 5ed1699acbba8863755998a4245daa200ff3817b -PODFILE CHECKSUM: 4065c8b949a453403939de6e852185dbd374d972 +PODFILE CHECKSUM: 17065850599b1e955efad7a619cf825c012744d7 COCOAPODS: 1.11.3 diff --git a/apps/mobile/ios/Spacedrive.xcodeproj/project.pbxproj b/apps/mobile/ios/Spacedrive.xcodeproj/project.pbxproj index cfcd470b9..8d11b30da 100644 --- a/apps/mobile/ios/Spacedrive.xcodeproj/project.pbxproj +++ b/apps/mobile/ios/Spacedrive.xcodeproj/project.pbxproj @@ -250,7 +250,7 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Spacedrive/Pods-Spacedrive-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( @@ -589,7 +589,7 @@ LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + REACT_NATIVE_PATH = "${PODS_ROOT}/../../../../node_modules/react-native"; SDKROOT = iphoneos; }; name = Debug; @@ -642,7 +642,7 @@ ); LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; MTL_ENABLE_DEBUG_INFO = NO; - REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; + REACT_NATIVE_PATH = "${PODS_ROOT}/../../../../node_modules/react-native"; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; diff --git a/apps/mobile/ios/Spacedrive/AppDelegate.h b/apps/mobile/ios/Spacedrive/AppDelegate.h index f7d297204..eaba2fa40 100644 --- a/apps/mobile/ios/Spacedrive/AppDelegate.h +++ b/apps/mobile/ios/Spacedrive/AppDelegate.h @@ -1,9 +1,7 @@ -#import -#import +#import #import - #import -@interface AppDelegate : EXAppDelegateWrapper +@interface AppDelegate : EXAppDelegateWrapper -@end +@end \ No newline at end of file diff --git a/apps/mobile/ios/Spacedrive/AppDelegate.mm b/apps/mobile/ios/Spacedrive/AppDelegate.mm index a6e13e11a..a327ae802 100644 --- a/apps/mobile/ios/Spacedrive/AppDelegate.mm +++ b/apps/mobile/ios/Spacedrive/AppDelegate.mm @@ -1,89 +1,19 @@ #import "AppDelegate.h" -#import #import -#import #import -#import - -#import - -#if RCT_NEW_ARCH_ENABLED -#import -#import -#import -#import -#import -#import - -#import - -static NSString *const kRNConcurrentRoot = @"concurrentRoot"; - -@interface AppDelegate () { - RCTTurboModuleManager *_turboModuleManager; - RCTSurfacePresenterBridgeAdapter *_bridgeAdapter; - std::shared_ptr _reactNativeConfig; - facebook::react::ContextContainer::Shared _contextContainer; -} -@end -#endif @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - RCTAppSetupPrepareApp(application); + self.moduleName = @"main"; - RCTBridge *bridge = [self.reactDelegate createBridgeWithDelegate:self launchOptions:launchOptions]; + // You can add your custom initial props in the dictionary below. + // They will be passed down to the ViewController used by React Native. + self.initialProps = @{}; -#if RCT_NEW_ARCH_ENABLED - _contextContainer = std::make_shared(); - _reactNativeConfig = std::make_shared(); - _contextContainer->insert("ReactNativeConfig", _reactNativeConfig); - _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer]; - bridge.surfacePresenter = _bridgeAdapter.surfacePresenter; -#endif - - NSDictionary *initProps = [self prepareInitialProps]; - UIView *rootView = [self.reactDelegate createRootViewWithBridge:bridge moduleName:@"main" initialProperties:initProps]; - - rootView.backgroundColor = [UIColor whiteColor]; - self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [self.reactDelegate createRootViewController]; - rootViewController.view = rootView; - self.window.rootViewController = rootViewController; - [self.window makeKeyAndVisible]; - - [super application:application didFinishLaunchingWithOptions:launchOptions]; - - return YES; -} - -- (NSArray> *)extraModulesForBridge:(RCTBridge *)bridge -{ - // If you'd like to export some custom RCTBridgeModules, add them here! - return @[]; -} - -/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. -/// -/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html -/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). -/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`. -- (BOOL)concurrentRootEnabled -{ - // Switch this bool to turn on and off the concurrent root - return true; -} - -- (NSDictionary *)prepareInitialProps -{ - NSMutableDictionary *initProps = [NSMutableDictionary new]; -#if RCT_NEW_ARCH_ENABLED - initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]); -#endif - return initProps; + return [super application:application didFinishLaunchingWithOptions:launchOptions]; } - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge @@ -95,6 +25,16 @@ static NSString *const kRNConcurrentRoot = @"concurrentRoot"; #endif } +/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. +/// +/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html +/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). +/// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`. +- (BOOL)concurrentRootEnabled +{ + return true; +} + // Linking API - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options]; @@ -124,43 +64,4 @@ static NSString *const kRNConcurrentRoot = @"concurrentRoot"; return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; } -#if RCT_NEW_ARCH_ENABLED - -#pragma mark - RCTCxxBridgeDelegate - -- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge -{ - _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge - delegate:self - jsInvoker:bridge.jsCallInvoker]; - return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); -} - -#pragma mark RCTTurboModuleManagerDelegate - -- (Class)getModuleClassFromName:(const char *)name -{ - return RCTCoreModulesClassProvider(name); -} - -- (std::shared_ptr)getTurboModule:(const std::string &)name - jsInvoker:(std::shared_ptr)jsInvoker -{ - return nullptr; -} - -- (std::shared_ptr)getTurboModule:(const std::string &)name - initParams: - (const facebook::react::ObjCTurboModule::InitParams &)params -{ - return nullptr; -} - -- (id)getModuleInstanceFromClass:(Class)moduleClass -{ - return RCTAppSetupDefaultModuleFromClass(moduleClass); -} - -#endif - -@end +@end \ No newline at end of file diff --git a/apps/mobile/ios/Spacedrive/Supporting/Expo.plist b/apps/mobile/ios/Spacedrive/Supporting/Expo.plist index 883eed2cd..e5af010dd 100644 --- a/apps/mobile/ios/Spacedrive/Supporting/Expo.plist +++ b/apps/mobile/ios/Spacedrive/Supporting/Expo.plist @@ -9,7 +9,7 @@ EXUpdatesLaunchWaitMs 0 EXUpdatesSDKVersion - 46.0.0 + 48.0.0 EXUpdatesURL https://exp.host/@utkudev/spacedrive diff --git a/apps/mobile/ios/Spacedrive/main.m b/apps/mobile/ios/Spacedrive/main.m index 25181b6cc..44e059c6d 100644 --- a/apps/mobile/ios/Spacedrive/main.m +++ b/apps/mobile/ios/Spacedrive/main.m @@ -6,5 +6,4 @@ int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } -} - +} \ No newline at end of file diff --git a/apps/mobile/ios/build-rust.sh b/apps/mobile/ios/build-rust.sh index 31021c885..be81cd494 100755 --- a/apps/mobile/ios/build-rust.sh +++ b/apps/mobile/ios/build-rust.sh @@ -2,6 +2,8 @@ set -e +export PROTOC=/opt/homebrew/bin/protoc + TARGET_DIRECTORY=../../../target CARGO_FLAGS= diff --git a/apps/mobile/metro.config.js b/apps/mobile/metro.config.js index 7320fd4fb..31ff9af2b 100644 --- a/apps/mobile/metro.config.js +++ b/apps/mobile/metro.config.js @@ -12,6 +12,7 @@ const projectRoot = __dirname; const workspaceRoot = path.resolve(projectRoot, '../..'); const metroConfig = makeMetroConfig({ + ...expoDefaultConfig, projectRoot, watchFolders: [workspaceRoot], resolver: { @@ -29,6 +30,7 @@ const metroConfig = makeMetroConfig({ ] }, transformer: { + ...expoDefaultConfig.transformer, // Metro default is "uglify-es" but terser should be faster and has better defaults. minifierPath: 'metro-minify-terser', minifierConfig: { diff --git a/apps/mobile/package.json b/apps/mobile/package.json index db612c3fa..150ee03b3 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -11,62 +11,62 @@ "xcode": "open ios/spacedrive.xcworkspace", "android-studio": "open -a '/Applications/Android Studio.app' ./android", "lint": "eslint src", - "postinstall": "node scripts/postinstall.js", "typecheck": "tsc -b", "eas-build-pre-install": "npm i -g pnpm@7.18.2" }, "dependencies": { "@gorhom/bottom-sheet": "^4.4.5", + "@hookform/resolvers": "^2.9.11", "@react-native-async-storage/async-storage": "~1.17.11", "@react-native-masked-view/masked-view": "0.2.8", - "@react-navigation/bottom-tabs": "^6.5.4", - "@react-navigation/drawer": "^6.5.8", - "@react-navigation/native": "^6.1.3", - "@react-navigation/stack": "^6.3.12", + "@react-navigation/bottom-tabs": "^6.5.7", + "@react-navigation/drawer": "^6.6.2", + "@react-navigation/native": "^6.1.6", + "@react-navigation/stack": "^6.3.16", "@rspc/client": "^0.0.0-main-7c0a67c1", "@rspc/react": "^0.0.0-main-7c0a67c1", "@sd/assets": "workspace:*", "@sd/client": "workspace:*", - "@shopify/flash-list": "1.4.1", - "@tanstack/react-query": "^4.24.4", + "@shopify/flash-list": "1.4.0", + "@tanstack/react-query": "^4.26.1", "byte-size": "^8.1.0", "class-variance-authority": "^0.4.0", "dayjs": "^1.11.5", - "expo": "^47.0.13", - "expo-linking": "~3.3.0", - "expo-media-library": "~15.0.0", - "expo-splash-screen": "~0.17.5", - "expo-status-bar": "~1.4.2", + "expo": "^48.0.6", + "expo-linking": "~4.0.1", + "expo-media-library": "~15.2.2", + "expo-splash-screen": "~0.18.1", + "expo-status-bar": "~1.4.4", "intl": "^1.2.5", "lottie-react-native": "5.1.4", - "moti": "^0.22.0", + "moti": "^0.24.2", "phosphor-react-native": "^1.1.2", - "react": "18.1.0", - "react-hook-form": "^7.43.0", - "react-native": "0.70.5", + "react": "18.2.0", + "react-hook-form": "^7.43.5", + "react-native": "0.71.3", "react-native-document-picker": "^8.1.1", "react-native-fs": "^2.20.0", "react-native-gesture-handler": "~2.9.0", "react-native-popup-menu": "^0.16.1", "react-native-reanimated": "~2.14.4", "react-native-safe-area-context": "4.5.0", - "react-native-screens": "~3.19.0", - "react-native-svg": "13.8.0", + "react-native-screens": "~3.20.0", + "react-native-svg": "13.4.0", "react-native-wheel-color-picker": "^1.2.0", - "twrnc": "^3.5.0", + "twrnc": "^3.6.0", "use-count-up": "^3.0.1", "use-debounce": "^9.0.2", - "valtio": "^1.8.0" + "valtio": "^1.10.3", + "zod": "^3.21.4" }, "devDependencies": { "@rnx-kit/metro-config": "^1.3.5", "@sd/config": "workspace:*", - "@types/react": "~18.0.26", - "@types/react-native": "~0.70.8", + "@types/react": "~18.0.27", "babel-plugin-module-resolver": "^5.0.0", "eslint-plugin-react-native": "^4.0.0", - "metro-minify-terser": "^0.74.1", + "metro-minify-terser": "0.76.0", "react-native-svg-transformer": "^1.0.0", - "typescript": "^4.9.4" + "typescript": "^4.9.5" } } diff --git a/apps/mobile/scripts/postinstall.js b/apps/mobile/scripts/postinstall.js index c79431e6f..cca9a10cc 100644 --- a/apps/mobile/scripts/postinstall.js +++ b/apps/mobile/scripts/postinstall.js @@ -2,6 +2,7 @@ let fs = require('fs-extra'); let path = require('path'); +// Not used atm, keeping it here in case we need it in the future async function copyReactNativeCodegen() { const paths = [ ['../../../node_modules/react-native-codegen', '../node_modules/react-native-codegen'], diff --git a/apps/mobile/src/components/animation/layout.tsx b/apps/mobile/src/components/animation/layout.tsx index 03ad295eb..011739d6b 100644 --- a/apps/mobile/src/components/animation/layout.tsx +++ b/apps/mobile/src/components/animation/layout.tsx @@ -1,32 +1,49 @@ import { MotiView, useDynamicAnimation } from 'moti'; import { PropsWithChildren, ReactNode } from 'react'; -import { StyleSheet, View } from 'react-native'; +import { StyleSheet, View, ViewProps } from 'react-native'; import { useDerivedValue, useSharedValue } from 'react-native-reanimated'; import Layout from '~/constants/Layout'; import { tw } from '~/lib/tailwind'; -// Anything wrapped with FadeIn will fade in on mount. -export const FadeInAnimation = ({ children, delay }: PropsWithChildren<{ delay?: number }>) => ( - - {children} - -); +type MotiViewProps = PropsWithChildren; -export const FadeInUpAnimation = ({ children, delay }: PropsWithChildren<{ delay?: number }>) => ( +// Anything wrapped with FadeIn will fade in on mount. +export const FadeInAnimation = ({ + children, + delay, + ...props +}: MotiViewProps & { delay?: number }) => ( {children} ); -export const LogoAnimation = ({ children }: PropsWithChildren) => ( +export const FadeInUpAnimation = ({ + children, + delay, + ...props +}: MotiViewProps & { delay?: number }) => ( + {children} + +); + +export const LogoAnimation = ({ children, ...props }: MotiViewProps) => ( + {children} diff --git a/apps/mobile/src/components/animation/lottie.tsx b/apps/mobile/src/components/animation/lottie.tsx index a599cf322..e2e7ffb7c 100644 --- a/apps/mobile/src/components/animation/lottie.tsx +++ b/apps/mobile/src/components/animation/lottie.tsx @@ -1,19 +1,14 @@ -import AnimatedLottieView from 'lottie-react-native'; -import { StyleProp, View, ViewStyle } from 'react-native'; +import AnimatedLottieView, { AnimatedLottieViewProps } from 'lottie-react-native'; -type Props = { - style?: StyleProp; -}; +type AnimationProps = Omit; -export const PulseAnimation = ({ style }: Props) => { +export const PulseAnimation = ({ style }: AnimationProps) => { return ( - - - + ); }; diff --git a/apps/mobile/src/components/drawer/DrawerLibraryManager.tsx b/apps/mobile/src/components/drawer/DrawerLibraryManager.tsx index 66bea4093..94df55e5d 100644 --- a/apps/mobile/src/components/drawer/DrawerLibraryManager.tsx +++ b/apps/mobile/src/components/drawer/DrawerLibraryManager.tsx @@ -9,7 +9,7 @@ import { tw, twStyle } from '~/lib/tailwind'; import { currentLibraryStore } from '~/utils/nav'; import { AnimatedHeight } from '../animation/layout'; import CreateLibraryDialog from '../dialog/CreateLibraryDialog'; -import Divider from '../primitive/Divider'; +import { Divider } from '../primitive/Divider'; const DrawerLibraryManager = () => { const [dropdownClosed, setDropdownClosed] = useState(true); @@ -51,7 +51,7 @@ const DrawerLibraryManager = () => { {/* Libraries */} {libraries.data?.map((library) => { - console.log('library', library); + // console.log('library', library); return ( (currentLibraryStore.id = library.uuid)}> { const { item } = data; - // temp fix (will handle this on mobile-inspector branch) - const objectData = data ? (isObject(data) ? data.item : data.item.object) : null; - const isVid = ObjectKind[objectData?.kind || 0] === 'Video'; - const gridItemSize = Layout.window.width / getExplorerStore().gridNumColumns; return ( @@ -25,15 +21,7 @@ const FileItem = ({ data }: FileItemProps) => { height: gridItemSize })} > - - {item.extension && isVid && ( - - {item.extension} - - )} + {item?.name} diff --git a/apps/mobile/src/components/explorer/FileRow.tsx b/apps/mobile/src/components/explorer/FileRow.tsx index 7bb32e821..a42d92a52 100644 --- a/apps/mobile/src/components/explorer/FileRow.tsx +++ b/apps/mobile/src/components/explorer/FileRow.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Text, View } from 'react-native'; -import { ExplorerItem, ObjectKind, isObject } from '@sd/client'; +import { ExplorerItem } from '@sd/client'; import { tw, twStyle } from '~/lib/tailwind'; import { getExplorerStore } from '~/stores/explorerStore'; import FileThumb from './FileThumb'; @@ -12,21 +12,13 @@ type FileRowProps = { const FileRow = ({ data }: FileRowProps) => { const { item } = data; - // temp fix (will handle this on mobile-inspector branch) - const objectData = data ? (isObject(data) ? data.item : data.item.object) : null; - const isVid = ObjectKind[objectData?.kind || 0] === 'Video'; - return ( - + {item?.name} diff --git a/apps/mobile/src/components/explorer/FileThumb.tsx b/apps/mobile/src/components/explorer/FileThumb.tsx index 10fca052c..7dae1a7bd 100644 --- a/apps/mobile/src/components/explorer/FileThumb.tsx +++ b/apps/mobile/src/components/explorer/FileThumb.tsx @@ -1,8 +1,8 @@ +import * as icons from '@sd/assets/icons'; import { PropsWithChildren } from 'react'; import { Image, View } from 'react-native'; import { DocumentDirectoryPath } from 'react-native-fs'; -import { ExplorerItem, isObject, isPath } from '@sd/client'; -// import icons from '../../assets/icons/file'; +import { ExplorerItem, ObjectKind, isObject, isPath } from '@sd/client'; import { tw } from '../../lib/tailwind'; import FolderIcon from '../icons/FolderIcon'; @@ -13,112 +13,82 @@ type FileThumbProps = { * default: `1` */ size?: number; - kind?: string; }; export const getThumbnailUrlById = (casId: string) => `${DocumentDirectoryPath}/thumbnails/${encodeURIComponent(casId)}.webp`; +type KindType = keyof typeof icons | 'Unknown'; + +function getExplorerItemData(data: ExplorerItem) { + const objectData = data ? (isObject(data) ? data.item : data.item.object) : null; + + return { + casId: (isObject(data) ? data.item.file_paths[0]?.cas_id : data.item.cas_id) || null, + isDir: isPath(data) && data.item.is_dir, + kind: ObjectKind[objectData?.kind || 0] as KindType, + hasThumbnail: data.has_thumbnail, + extension: data.item.extension + }; +} + const FileThumbWrapper = ({ children, size = 1 }: PropsWithChildren<{ size: number }>) => ( {children} ); -export default function FileThumb({ data, size = 1, kind }: FileThumbProps) { - // const Icon = useMemo(() => { - // const Icon = icons[data.extension]; - // return Icon; - // }, [data.extension]); +export default function FileThumb({ data, size = 1 }: FileThumbProps) { + const { casId, isDir, kind, hasThumbnail, extension } = getExplorerItemData(data); - if (isPath(data) && data.item.is_dir) + if (isPath(data) && data.item.is_dir) { return ( ); + } - const casId = isObject(data) ? data.item.file_paths[0]?.cas_id : data.item.cas_id; - if (!casId) return null; - - // Icon - let icon = undefined; - if (kind === 'Archive') icon = require('@sd/assets/images/Archive.png'); - else if (kind === 'Video') icon = require('@sd/assets/images/Video.png'); - else if (kind === 'Document' && data.item.extension === 'pdf') - icon = require('@sd/assets/images/Document_pdf.png'); - else if (kind === 'Executable') icon = require('@sd/assets/images/Executable.png'); - - if (icon) { + if (hasThumbnail && casId) { + // TODO: Handle Image checkers bg? return ( - + ); } - const url = getThumbnailUrlById(casId); + // Default icon + let icon = icons['Document']; - if (data.has_thumbnail && url) { - return ( - - - - ); + if (isDir) { + icon = icons['Folder']; + } else if ( + kind && + extension && + icons[`${kind}_${extension.toLowerCase()}` as keyof typeof icons] + ) { + // e.g. Document_pdf + icon = icons[`${kind}_${extension.toLowerCase()}` as keyof typeof icons]; + } else if (kind !== 'Unknown' && kind && icons[kind]) { + icon = icons[kind]; } + // TODO: Handle video thumbnails + + // // 10 percent of the size + // const videoBarsHeight = Math.floor(size / 10); + + // // calculate 16:9 ratio for height from size + // const videoHeight = Math.floor((size * 9) / 16) + videoBarsHeight * 2; + return ( - + ); - - // Default file icon - // return ( - // - // - // - // - // - // - // - // - // {/* File Icon & Extension */} - // - // {Icon && ( - // }> - // - // - // )} - // - // {data.extension} - // - // - // - // - // ); } diff --git a/apps/mobile/src/components/form/Input.tsx b/apps/mobile/src/components/form/Input.tsx index 7f6512873..151f3b2e3 100644 --- a/apps/mobile/src/components/form/Input.tsx +++ b/apps/mobile/src/components/form/Input.tsx @@ -1,15 +1,17 @@ import { VariantProps, cva } from 'class-variance-authority'; -import { FC } from 'react'; -import { TextInputProps as RNTextInputProps, TextInput } from 'react-native'; +import { Eye, EyeSlash } from 'phosphor-react-native'; +import { useState } from 'react'; +import { Pressable, TextInputProps as RNTextInputProps, TextInput, View } from 'react-native'; import { tw, twStyle } from '~/lib/tailwind'; const input = cva(['rounded-md border text-sm leading-tight shadow-sm'], { variants: { variant: { - default: 'border-app-line bg-app text-ink' + default: 'border-app-line bg-app-input text-ink' }, size: { - default: ['py-2', 'px-3'] + default: ['py-2', 'px-3'], + md: ['py-2.5', 'px-3.5'] } }, defaultVariants: { @@ -20,13 +22,51 @@ const input = cva(['rounded-md border text-sm leading-tight shadow-sm'], { type InputProps = VariantProps & RNTextInputProps; -export const Input: FC = ({ variant, ...props }) => { +export const Input = ({ variant, size, ...props }: InputProps) => { const { style, ...otherProps } = props; return ( ); }; + +// Same as above but configured with password props & show/hide password button + +type PasswordInputProps = InputProps & { + isNewPassword?: boolean; +}; + +export const PasswordInput = ({ variant, size, ...props }: PasswordInputProps) => { + const { style, isNewPassword = false, ...otherProps } = props; + + const [showPassword, setShowPassword] = useState(false); + + const Icon = showPassword ? EyeSlash : Eye; + + return ( + + + setShowPassword((v) => !v)} + > + + + + ); +}; diff --git a/apps/mobile/src/components/icons/FolderIcon.tsx b/apps/mobile/src/components/icons/FolderIcon.tsx index 3c898e88e..77cc3236b 100644 --- a/apps/mobile/src/components/icons/FolderIcon.tsx +++ b/apps/mobile/src/components/icons/FolderIcon.tsx @@ -1,3 +1,4 @@ +import { Folder } from '@sd/assets/icons'; import FolderWhite from '@sd/assets/svgs/folder-white.svg'; import { Image } from 'react-native'; @@ -17,7 +18,7 @@ const FolderIcon: React.FC = ({ size = 24, isWhite }) => { return isWhite ? ( ) : ( - + ); }; diff --git a/apps/mobile/src/components/key/PasswordMeter.tsx b/apps/mobile/src/components/key/PasswordMeter.tsx new file mode 100644 index 000000000..aa656f160 --- /dev/null +++ b/apps/mobile/src/components/key/PasswordMeter.tsx @@ -0,0 +1,51 @@ +import { Text, View, ViewStyle } from 'react-native'; +import { getPasswordStrength } from '@sd/client'; +import { tw, twStyle } from '~/lib/tailwind'; + +// NOTE: Lazy load this component. + +type PasswordMeterProps = { + password: string; + containerStyle?: ViewStyle; +}; + +const PasswordMeter = (props: PasswordMeterProps) => { + const { score, scoreText } = getPasswordStrength(props.password); + + return ( + + + Password strength + + {scoreText} + + + + + + + ); +}; + +export default PasswordMeter; diff --git a/apps/mobile/src/components/layout/Card.tsx b/apps/mobile/src/components/layout/Card.tsx index abc9b617b..1bdb764e2 100644 --- a/apps/mobile/src/components/layout/Card.tsx +++ b/apps/mobile/src/components/layout/Card.tsx @@ -11,7 +11,7 @@ const Card = ({ children, ...props }: CardProps) => { return ( {children} diff --git a/apps/mobile/src/components/layout/Dialog.tsx b/apps/mobile/src/components/layout/Dialog.tsx index cfab38e66..487c1685d 100644 --- a/apps/mobile/src/components/layout/Dialog.tsx +++ b/apps/mobile/src/components/layout/Dialog.tsx @@ -95,8 +95,7 @@ const Dialog = (props: DialogProps) => { {props.loading && } */} - - TODO diff --git a/apps/mobile/src/components/modal/inspector/FileInfoModal.tsx b/apps/mobile/src/components/modal/inspector/FileInfoModal.tsx index 9283d44fd..73d1e43bb 100644 --- a/apps/mobile/src/components/modal/inspector/FileInfoModal.tsx +++ b/apps/mobile/src/components/modal/inspector/FileInfoModal.tsx @@ -14,7 +14,7 @@ import { ExplorerItem, formatBytes, isObject, useLibraryQuery } from '@sd/client import FileThumb from '~/components/explorer/FileThumb'; import InfoTagPills from '~/components/explorer/sections/InfoTagPills'; import { Modal, ModalRef, ModalScrollView } from '~/components/layout/Modal'; -import Divider from '~/components/primitive/Divider'; +import { Divider } from '~/components/primitive/Divider'; import useForwardedRef from '~/hooks/useForwardedRef'; import { tw } from '~/lib/tailwind'; diff --git a/apps/mobile/src/components/modal/tag/CreateTagModal.tsx b/apps/mobile/src/components/modal/tag/CreateTagModal.tsx index f3bd34659..cea85ad79 100644 --- a/apps/mobile/src/components/modal/tag/CreateTagModal.tsx +++ b/apps/mobile/src/components/modal/tag/CreateTagModal.tsx @@ -78,7 +78,6 @@ const CreateTagModal = forwardRef((_, ref) => { )} + )} + + {obStore.passwordSetToken ? ( + + ) : ( + + )} + + + + + ); +}; + +export default MasterPasswordScreen; diff --git a/apps/mobile/src/screens/onboarding/NewLibrary.tsx b/apps/mobile/src/screens/onboarding/NewLibrary.tsx new file mode 100644 index 000000000..bd1a96445 --- /dev/null +++ b/apps/mobile/src/screens/onboarding/NewLibrary.tsx @@ -0,0 +1,77 @@ +import { Database } from '@sd/assets/icons'; +import { Controller } from 'react-hook-form'; +import { Alert, Image, Text, View } from 'react-native'; +import { getOnboardingStore, useOnboardingStore } from '@sd/client'; +import { Input } from '~/components/form/Input'; +import { Button } from '~/components/primitive/Button'; +import { useZodForm, z } from '~/hooks/useZodForm'; +import { tw } from '~/lib/tailwind'; +import { OnboardingStackScreenProps } from '~/navigation/OnboardingNavigator'; +import { OnboardingContainer, OnboardingDescription, OnboardingTitle } from './GetStarted'; + +const schema = z.object({ + name: z.string().min(1, { message: 'Library name is required' }) +}); + +const NewLibraryScreen = ({ navigation }: OnboardingStackScreenProps<'NewLibrary'>) => { + const obStore = useOnboardingStore(); + + const form = useZodForm({ + schema, + defaultValues: { + name: obStore.newLibraryName + } + }); + + const handleNewLibrary = form.handleSubmit(async (data) => { + getOnboardingStore().newLibraryName = data.name; + navigation.navigate('MasterPassword'); + }); + + const handleImport = () => { + Alert.alert('TODO'); + }; + + return ( + + + Create a Library + + + Libraries are a secure, on-device database. Your files remain where they are, the Library + catalogs them and stores all Spacedrive related data. + + ( + + )} + /> + + + {form.formState.errors.name && ( + + {form.formState.errors.name.message} + + )} + + + OR + + + + ); +}; + +export default NewLibraryScreen; diff --git a/apps/mobile/src/screens/onboarding/Onboarding.tsx b/apps/mobile/src/screens/onboarding/Onboarding.tsx deleted file mode 100644 index e8e9eee51..000000000 --- a/apps/mobile/src/screens/onboarding/Onboarding.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { AppLogo } from '@sd/assets/images'; -import { Image, Text, View } from 'react-native'; -import { FadeInUpAnimation, LogoAnimation } from '~/components/animation/layout'; -import { AnimatedButton } from '~/components/primitive/Button'; -import { tw } from '~/lib/tailwind'; -import { OnboardingStackScreenProps } from '~/navigation/OnboardingNavigator'; - -const OnboardingScreen = ({ navigation }: OnboardingStackScreenProps<'Onboarding'>) => { - return ( - - {/* Logo */} - - - - - - {/* Text */} - - - - A file explorer from the future. - - - - - Combine your drives and clouds into one database that you can organize and explore from - any device. - - - - {/* Get Started Button */} - - navigation.navigate('CreateLibrary')}> - Get Started - - - - ); -}; - -export default OnboardingScreen; diff --git a/apps/mobile/src/screens/onboarding/Privacy.tsx b/apps/mobile/src/screens/onboarding/Privacy.tsx new file mode 100644 index 000000000..972d781d5 --- /dev/null +++ b/apps/mobile/src/screens/onboarding/Privacy.tsx @@ -0,0 +1,82 @@ +import React, { useState } from 'react'; +import { Pressable, Text, View, ViewStyle } from 'react-native'; +import { getOnboardingStore } from '@sd/client'; +import { Button } from '~/components/primitive/Button'; +import { tw, twStyle } from '~/lib/tailwind'; +import { OnboardingStackScreenProps } from '~/navigation/OnboardingNavigator'; +import { OnboardingContainer, OnboardingDescription, OnboardingTitle } from './GetStarted'; + +type RadioButtonProps = { + title: string; + description: string; + isSelected: boolean; + style?: ViewStyle; +}; + +// Make this a component? +const RadioButton = ({ title, description, isSelected, style }: RadioButtonProps) => { + return ( + + + {isSelected && } + + + {title} + {description} + + + ); +}; + +const PrivacyScreen = ({ navigation }: OnboardingStackScreenProps<'Privacy'>) => { + const [shareTelemetry, setShareTelemetry] = useState<'share-telemetry' | 'no-share-telemetry'>( + 'share-telemetry' + ); + + const onPress = () => { + getOnboardingStore().shareTelemetry = shareTelemetry === 'share-telemetry'; + navigation.navigate('CreatingLibrary'); + }; + + return ( + + Your Privacy + + Spacedrive is built for privacy, that's why we're open source and local first. So we'll make + it very clear what data is shared with us. + + + setShareTelemetry('share-telemetry')}> + + + setShareTelemetry('no-share-telemetry')}> + + + + + + ); +}; + +export default PrivacyScreen; diff --git a/apps/mobile/src/screens/settings/Settings.tsx b/apps/mobile/src/screens/settings/Settings.tsx index 313821c32..6fc0800de 100644 --- a/apps/mobile/src/screens/settings/Settings.tsx +++ b/apps/mobile/src/screens/settings/Settings.tsx @@ -109,7 +109,7 @@ function renderSectionHeader({ section }: { section: { title: string } }) { return ( @@ -129,14 +129,15 @@ export default function SettingsScreen({ navigation }: SettingsStackScreenProps< navigation.navigate(item.navigateTo)} + onPress={() => navigation.navigate(item.navigateTo as any)} /> )} renderSectionHeader={renderSectionHeader} ListFooterComponent={ - Spacedrive - v0.1.0 + Spacedrive + {/* TODO: Get this automatically (expo-device have this?) */} + v0.1.0 } showsVerticalScrollIndicator={false} diff --git a/apps/mobile/src/screens/settings/client/GeneralSettings.tsx b/apps/mobile/src/screens/settings/client/GeneralSettings.tsx index c38437d42..f62861c86 100644 --- a/apps/mobile/src/screens/settings/client/GeneralSettings.tsx +++ b/apps/mobile/src/screens/settings/client/GeneralSettings.tsx @@ -1,9 +1,9 @@ -import React from 'react'; import { Text, View } from 'react-native'; import { useBridgeQuery } from '@sd/client'; import { Input } from '~/components/form/Input'; import Card from '~/components/layout/Card'; -import Divider from '~/components/primitive/Divider'; +import { Divider } from '~/components/primitive/Divider'; +import { SettingsInputTitle } from '~/components/settings/SettingsContainer'; import { tw } from '~/lib/tailwind'; import { SettingsStackScreenProps } from '~/navigation/SettingsNavigator'; @@ -14,7 +14,7 @@ const GeneralSettingsScreen = ({ navigation }: SettingsStackScreenProps<'General return ( - + {/* Card Header */} Connected Node @@ -32,9 +32,9 @@ const GeneralSettingsScreen = ({ navigation }: SettingsStackScreenProps<'General {/* Divider */} {/* Node Name and Port */} - Node Name + Node Name - Node Port + Node Port diff --git a/apps/mobile/src/screens/settings/client/LibrarySettings.tsx b/apps/mobile/src/screens/settings/client/LibrarySettings.tsx index 2deb8017d..d82c346ec 100644 --- a/apps/mobile/src/screens/settings/client/LibrarySettings.tsx +++ b/apps/mobile/src/screens/settings/client/LibrarySettings.tsx @@ -31,13 +31,13 @@ function LibraryItem({ - navigation.replace('LibraryGeneralSettings')}> + navigation.replace('LibraryGeneralSettings')}> + } diff --git a/apps/mobile/src/screens/settings/library/EditLocationSettings.tsx b/apps/mobile/src/screens/settings/library/EditLocationSettings.tsx new file mode 100644 index 000000000..9ecbb131f --- /dev/null +++ b/apps/mobile/src/screens/settings/library/EditLocationSettings.tsx @@ -0,0 +1,218 @@ +import { useQueryClient } from '@tanstack/react-query'; +import { Archive, ArrowsClockwise, Trash } from 'phosphor-react-native'; +import React from 'react'; +import { Controller } from 'react-hook-form'; +import { Alert, ScrollView, Text, View } from 'react-native'; +import { useLibraryMutation, useLibraryQuery } from '@sd/client'; +import { Input } from '~/components/form/Input'; +import { Switch } from '~/components/form/Switch'; +import DeleteLocationModal from '~/components/modal/confirm-modals/DeleteLocationModal'; +import { AnimatedButton, Button, FakeButton } from '~/components/primitive/Button'; +import { Divider } from '~/components/primitive/Divider'; +import { + SettingsContainer, + SettingsInputInfo, + SettingsInputTitle +} from '~/components/settings/SettingsContainer'; +import { SettingsItem } from '~/components/settings/SettingsItem'; +import { useZodForm, z } from '~/hooks/useZodForm'; +import { tw } from '~/lib/tailwind'; +import { SettingsStackScreenProps } from '~/navigation/SettingsNavigator'; + +const schema = z.object({ + displayName: z.string(), + localPath: z.string(), + indexer_rules_ids: z.array(z.string()), + generatePreviewMedia: z.boolean(), + syncPreviewMedia: z.boolean(), + hidden: z.boolean() +}); + +const EditLocationSettingsScreen = ({ + route, + navigation +}: SettingsStackScreenProps<'EditLocationSettings'>) => { + const { id } = route.params; + + const queryClient = useQueryClient(); + + const form = useZodForm({ schema }); + + const updateLocation = useLibraryMutation('locations.update', { + onError: (e) => console.log({ e }), + onSuccess: () => { + form.reset(form.getValues()); + queryClient.invalidateQueries(['locations.list']); + // TODO: Show toast & navigate back & reset input focus! + } + }); + + const onSubmit = form.handleSubmit((data) => + updateLocation.mutateAsync({ + id: Number(id), + name: data.displayName, + sync_preview_media: data.syncPreviewMedia, + generate_preview_media: data.generatePreviewMedia, + hidden: data.hidden, + indexer_rules_ids: [] + }) + ); + + navigation.setOptions({ + headerRight: () => ( + + {form.formState.isDirty && ( + form.reset()} + disabled={!form.formState.isDirty} + > + Reset + + )} + + Save + + + ) + }); + + useLibraryQuery(['locations.getById', id], { + onSuccess: (data) => { + if (data && !form.formState.isDirty) + form.reset({ + displayName: data.name, + localPath: data.path, + indexer_rules_ids: data.indexer_rules.map((i) => i.indexer_rule.id.toString()), + generatePreviewMedia: data.generate_preview_media, + syncPreviewMedia: data.sync_preview_media, + hidden: data.hidden + }); + } + }); + + const fullRescan = useLibraryMutation('locations.fullRescan'); + + return ( + + {/* Inputs */} + + Display Name + ( + + )} + /> + + The name of this Location, this is what will be displayed in the sidebar. Will not rename + the actual folder on disk. + + + Local Path + ( + + )} + /> + + The path to this Location, this is where the files will be stored on disk. + + + + {/* Switches */} + + + ( + + )} + /> + } + /> + ( + + )} + /> + } + /> + ( + + )} + /> + } + /> + + + {/* Indexer Rules */} + TODO: Indexer Rules + {/* Buttons */} + + + fullRescan.mutate(id)}> + + + } + /> + + + Alert.alert('Archiving locations is coming soon...')} + > + + + } + /> + + + + + + } + /> + } + /> + + + + ); +}; + +export default EditLocationSettingsScreen; diff --git a/apps/mobile/src/screens/settings/library/LibraryGeneralSettings.tsx b/apps/mobile/src/screens/settings/library/LibraryGeneralSettings.tsx index a4cb55c8a..a67dca83d 100644 --- a/apps/mobile/src/screens/settings/library/LibraryGeneralSettings.tsx +++ b/apps/mobile/src/screens/settings/library/LibraryGeneralSettings.tsx @@ -1,23 +1,29 @@ import { Trash } from 'phosphor-react-native'; import React from 'react'; -import { Controller, useForm } from 'react-hook-form'; -import { Alert, Text, View } from 'react-native'; +import { Controller } from 'react-hook-form'; +import { Alert, View } from 'react-native'; import { useBridgeMutation, useLibraryContext } from '@sd/client'; import { Input } from '~/components/form/Input'; import { Switch } from '~/components/form/Switch'; -import { Button } from '~/components/primitive/Button'; -import { SettingsContainer } from '~/components/settings/SettingsContainer'; +import DeleteLibraryModal from '~/components/modal/confirm-modals/DeleteLibraryModal'; +import { AnimatedButton } from '~/components/primitive/Button'; +import { Divider } from '~/components/primitive/Divider'; +import { SettingsContainer, SettingsInputTitle } from '~/components/settings/SettingsContainer'; import { SettingsItem } from '~/components/settings/SettingsItem'; import { useAutoForm } from '~/hooks/useAutoForm'; +import { useZodForm, z } from '~/hooks/useZodForm'; import { tw } from '~/lib/tailwind'; import { SettingsStackScreenProps } from '~/navigation/SettingsNavigator'; +const schema = z.object({ name: z.string(), description: z.string() }); + const LibraryGeneralSettingsScreen = ({ navigation }: SettingsStackScreenProps<'LibraryGeneralSettings'>) => { const { library } = useLibraryContext(); - const form = useForm({ + const form = useZodForm({ + schema, defaultValues: { name: library.config.name, description: library.config.description } }); @@ -25,15 +31,14 @@ const LibraryGeneralSettingsScreen = ({ useAutoForm(form, (value) => { editLibrary({ description: value.description, name: value.name, id: library.uuid }); - console.log('Updated', value); + // console.log('Updated', value); // TODO: Show toast }); return ( - - {/* This looks bad... */} - - Name + + + Name {/* Description */} - Description + Description - {/* Encrypt */} - - - } /> - - - {/* Export */} - Alert.alert('TODO')} /> - - {/* Delete Library */} - {/* TODO: Open delete library dialog here, but do handle library switching and what happens if there is no library set ? */} - - Alert.alert('TODO')}> - - - } - /> - + + + {/* Encrypt */} + + } /> + + {/* Export */} + Alert.alert('TODO')} /> + {/* Delete Library */} + + + + + } + /> + } + /> + + ); }; diff --git a/apps/mobile/src/screens/settings/library/LocationSettings.tsx b/apps/mobile/src/screens/settings/library/LocationSettings.tsx index 2025097a3..80377ada6 100644 --- a/apps/mobile/src/screens/settings/library/LocationSettings.tsx +++ b/apps/mobile/src/screens/settings/library/LocationSettings.tsx @@ -1,4 +1,4 @@ -import { CaretRight, Repeat, Trash } from 'phosphor-react-native'; +import { CaretRight, Pen, Repeat, Trash } from 'phosphor-react-native'; import { Animated, FlatList, Pressable, Text, View } from 'react-native'; import { Swipeable } from 'react-native-gesture-handler'; import { @@ -14,7 +14,13 @@ import DeleteLocationModal from '~/components/modal/confirm-modals/DeleteLocatio import { tw, twStyle } from '~/lib/tailwind'; import { SettingsStackScreenProps } from '~/navigation/SettingsNavigator'; -function LocationItem({ location, index }: { location: Location & { node: Node }; index: number }) { +type LocationItemProps = { + location: Location & { node: Node }; + index: number; + navigation: SettingsStackScreenProps<'LocationSettings'>['navigation']; +}; + +function LocationItem({ location, index, navigation }: LocationItemProps) { const fullRescan = useLibraryMutation('locations.fullRescan', { onMutate: () => { // TODO: Show Toast @@ -23,7 +29,11 @@ function LocationItem({ location, index }: { location: Location & { node: Node } const onlineLocations = useOnlineLocations(); - const renderRightActions = (progress: Animated.AnimatedInterpolation) => { + const renderRightActions = ( + progress: Animated.AnimatedInterpolation, + _: any, + swipeable: Swipeable + ) => { const translate = progress.interpolate({ inputRange: [0, 1], outputRange: [100, 0], @@ -32,8 +42,20 @@ function LocationItem({ location, index }: { location: Location & { node: Node } return ( + { + navigation.navigate('EditLocationSettings', { id: location.id }); + swipeable.close(); + }} + > + + {/* Full Re-scan IS too much here */} fullRescan.mutate(location.id)} > @@ -106,7 +128,9 @@ const LocationSettingsScreen = ({ navigation }: SettingsStackScreenProps<'Locati item.id.toString()} - renderItem={({ item, index }) => } + renderItem={({ item, index }) => ( + + )} /> ); diff --git a/apps/mobile/src/screens/settings/library/TagsSettings.tsx b/apps/mobile/src/screens/settings/library/TagsSettings.tsx index bc243ef70..c836cea57 100644 --- a/apps/mobile/src/screens/settings/library/TagsSettings.tsx +++ b/apps/mobile/src/screens/settings/library/TagsSettings.tsx @@ -29,13 +29,13 @@ function TagItem({ tag, index }: { tag: Tag; index: number }) { style={[tw`flex flex-row items-center`, { transform: [{ translateX: translate }] }]} > swipeable.close()} /> - updateTagModalRef.current?.present()}> + updateTagModalRef.current?.present()}> + } diff --git a/apps/mobile/tailwind.config.js b/apps/mobile/tailwind.config.js index ad795fedd..a5a9dd329 100644 --- a/apps/mobile/tailwind.config.js +++ b/apps/mobile/tailwind.config.js @@ -36,6 +36,8 @@ module.exports = { button: 'hsla(230, 15%, 23%, 1)', // menu menu: 'hsla(230, 25%, 5%, 1)', + // input + input: 'hsla(230, 15%, 20%, 1)', 50: 'hsla(230, 15%, 5%, 1)', 100: 'hsla(230, 15%, 10%, 1)', 150: 'hsla(230, 15%, 15%, 1)', diff --git a/core/src/lib.rs b/core/src/lib.rs index ab4c98faf..480a648a6 100644 --- a/core/src/lib.rs +++ b/core/src/lib.rs @@ -112,8 +112,8 @@ impl Node { ); #[cfg(not(target_os = "android"))] let subscriber = subscriber.with(tracing_subscriber::fmt::layer().with_filter(CONSOLE_LOG_FILTER)); - #[cfg(target_os = "android")] - let subscriber = subscriber.with(tracing_android::layer("com.spacedrive.app").unwrap()); // TODO: This is not working + // #[cfg(target_os = "android")] + // let subscriber = subscriber.with(tracing_android::layer("com.spacedrive.app").unwrap()); // TODO: This is not working subscriber // .with( // Layer::default() diff --git a/docs/developers/prerequisites/environment-setup.md b/docs/developers/prerequisites/environment-setup.md index ade22b054..9f12c9ff1 100644 --- a/docs/developers/prerequisites/environment-setup.md +++ b/docs/developers/prerequisites/environment-setup.md @@ -59,7 +59,7 @@ To run mobile app 1. Install [Android Studio](https://developer.android.com/studio) for Android and [Xcode](https://apps.apple.com/au/app/xcode/id497799835) for IOS development 2. `./.github/scripts/setup-system.sh mobile` _The should setup most of the dependencies for the mobile app to build._ -3. You must also ensure you have [NDK 24.0.8215888 and CMake](https://developer.android.com/studio/projects/install-ndk#default-version) in Android Studio +3. You must also ensure you have [NDK 23.1.7779620 and CMake](https://developer.android.com/studio/projects/install-ndk#default-version) in Android Studio 4. `pnpm mobile android` - runs on Android Emulator 5. `pnpm mobile ios` - runs on iOS Emulator @@ -68,4 +68,4 @@ To run mobile app If you are having issues ensure you are using the following versions of Rust and Node: - Rust version: **1.67.0** -- Node version: **17** +- Node version: **18** diff --git a/interface/app/$libraryId/KeyManager/Mounter.tsx b/interface/app/$libraryId/KeyManager/Mounter.tsx index ba928a0a2..216ca2b44 100644 --- a/interface/app/$libraryId/KeyManager/Mounter.tsx +++ b/interface/app/$libraryId/KeyManager/Mounter.tsx @@ -1,14 +1,9 @@ import { Eye, EyeSlash, Info } from 'phosphor-react'; import { useEffect, useRef, useState } from 'react'; -import { - Algorithm, - HASHING_ALGOS, - HashingAlgoSlug, - generatePassword, - useLibraryMutation -} from '@sd/client'; +import { Algorithm, HASHING_ALGOS, HashingAlgoSlug, useLibraryMutation } from '@sd/client'; import { Button, CategoryHeading, Input, Select, SelectOption, Slider, Switch, tw } from '@sd/ui'; import { Tooltip } from '@sd/ui'; +import { generatePassword } from '~/util'; const KeyHeading = tw(CategoryHeading)`mb-1`; diff --git a/interface/app/$libraryId/settings/library/general.tsx b/interface/app/$libraryId/settings/library/general.tsx index cd7314928..3a31d16e0 100644 --- a/interface/app/$libraryId/settings/library/general.tsx +++ b/interface/app/$libraryId/settings/library/general.tsx @@ -1,9 +1,10 @@ import { useForm } from 'react-hook-form'; import { useBridgeMutation, useLibraryContext } from '@sd/client'; -import { Button, Input, Switch } from '@sd/ui'; +import { Button, Input, Switch, dialogManager } from '@sd/ui'; import { useDebouncedFormWatch } from '~/hooks/useDebouncedForm'; import { Heading } from '../Layout'; import Setting from '../Setting'; +import DeleteLibraryDialog from '../node/libraries/DeleteDialog'; export const Component = () => { const { library } = useLibraryContext(); @@ -64,7 +65,16 @@ export const Component = () => { description="This is permanent, your files will not be deleted, only the Spacedrive library." >

-
diff --git a/interface/app/$libraryId/settings/library/keys/MasterPasswordDialog.tsx b/interface/app/$libraryId/settings/library/keys/MasterPasswordDialog.tsx index a722a4275..b8620c731 100644 --- a/interface/app/$libraryId/settings/library/keys/MasterPasswordDialog.tsx +++ b/interface/app/$libraryId/settings/library/keys/MasterPasswordDialog.tsx @@ -4,22 +4,14 @@ import { Algorithm, HASHING_ALGOS, HashingAlgoSlug, - generatePassword, hashingAlgoSlugSchema, useLibraryMutation } from '@sd/client'; -import { - Button, - Dialog, - Input, - PasswordMeter, - Select, - SelectOption, - UseDialogProps, - useDialog -} from '@sd/ui'; +import { Button, Dialog, Input, Select, SelectOption, UseDialogProps, useDialog } from '@sd/ui'; import { useZodForm, z } from '@sd/ui/src/forms'; import { showAlertDialog } from '~/components/AlertDialog'; +import { PasswordMeter } from '~/components/PasswordMeter'; +import { generatePassword } from '~/util'; const schema = z.object({ masterPassword: z.string(), diff --git a/interface/app/$libraryId/settings/node/libraries/CreateDialog.tsx b/interface/app/$libraryId/settings/node/libraries/CreateDialog.tsx index c1cf8d552..b51565dc7 100644 --- a/interface/app/$libraryId/settings/node/libraries/CreateDialog.tsx +++ b/interface/app/$libraryId/settings/node/libraries/CreateDialog.tsx @@ -5,7 +5,6 @@ import { Algorithm, HASHING_ALGOS, HashingAlgoSlug, - generatePassword, hashingAlgoSlugSchema, useBridgeMutation, usePlausibleEvent @@ -14,7 +13,6 @@ import { Button, CheckBox, Dialog, - PasswordMeter, Select, SelectOption, Tooltip, @@ -22,6 +20,8 @@ import { useDialog } from '@sd/ui'; import { forms } from '@sd/ui'; +import { PasswordMeter } from '~/components/PasswordMeter'; +import { generatePassword } from '~/util'; import { usePlatform } from '~/util/Platform'; const { Input, z, useZodForm } = forms; diff --git a/interface/app/onboarding/creating-library.tsx b/interface/app/onboarding/creating-library.tsx index aa4d2cbdc..cd82759a6 100644 --- a/interface/app/onboarding/creating-library.tsx +++ b/interface/app/onboarding/creating-library.tsx @@ -1,9 +1,7 @@ -/* eslint-disable react-hooks/exhaustive-deps */ import { useQueryClient } from '@tanstack/react-query'; import { useEffect, useRef, useState } from 'react'; import { useNavigate } from 'react-router'; import { - Algorithm, HASHING_ALGOS, resetOnboardingStore, telemetryStore, @@ -59,7 +57,7 @@ export default function OnboardingCreatingLibrary() { type: 'TokenizedPassword', value: obStore.passwordSetToken || '' }, - algorithm: obStore.algorithm as Algorithm, + algorithm: obStore.algorithm, hashing_algorithm: HASHING_ALGOS[obStore.hashingAlgorithm] }); @@ -84,6 +82,7 @@ export default function OnboardingCreatingLibrary() { clearTimeout(timer); clearTimeout(timer2); }; + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); return ( diff --git a/interface/app/onboarding/master-password.tsx b/interface/app/onboarding/master-password.tsx index 6cf6449dc..efbd3921e 100644 --- a/interface/app/onboarding/master-password.tsx +++ b/interface/app/onboarding/master-password.tsx @@ -1,8 +1,9 @@ import { useState } from 'react'; import { useNavigate } from 'react-router'; import { getOnboardingStore, useBridgeMutation, useOnboardingStore } from '@sd/client'; -import { Button, Card, PasswordMeter } from '@sd/ui'; +import { Button, Card } from '@sd/ui'; import { Form, PasswordInput, useZodForm, z } from '@sd/ui/src/forms'; +import { PasswordMeter } from '~/components/PasswordMeter'; import { OnboardingContainer, OnboardingDescription, OnboardingTitle } from './Layout'; import { useUnlockOnboardingScreen } from './Progress'; @@ -118,7 +119,9 @@ export default function OnboardingNewLibrary() { disabled={form.formState.isSubmitting} variant="outline" size="sm" - onClick={() => { + onClick={(event: any) => { + // Without this, form is submitted before token gets removed + event.preventDefault(); getOnboardingStore().passwordSetToken = null; form.reset(); }} diff --git a/interface/components/PasswordMeter.tsx b/interface/components/PasswordMeter.tsx new file mode 100644 index 000000000..f7ba676f9 --- /dev/null +++ b/interface/components/PasswordMeter.tsx @@ -0,0 +1,45 @@ +import clsx from 'clsx'; +import { getPasswordStrength } from '@sd/client'; + +export interface PasswordMeterProps { + password: string; +} + +export const PasswordMeter = (props: PasswordMeterProps) => { + const { score, scoreText } = getPasswordStrength(props.password); + + return ( +
+

Password strength

+ + {scoreText} + +
+
+
+
+
+
+ ); +}; diff --git a/interface/package.json b/interface/package.json index 649bf6ddb..6e8879a45 100644 --- a/interface/package.json +++ b/interface/package.json @@ -19,6 +19,7 @@ "@fontsource/inter": "^4.5.13", "@headlessui/react": "^1.7.3", "@hookform/resolvers": "^2.9.10", + "crypto-random-string": "^5.0.0", "@radix-ui/react-progress": "^1.0.1", "@radix-ui/react-slider": "^1.1.0", "@radix-ui/react-toast": "^1.1.2", @@ -35,9 +36,6 @@ "@tanstack/react-query-devtools": "^4.22.0", "@tanstack/react-virtual": "3.0.0-beta.18", "@vitejs/plugin-react": "^2.1.0", - "@zxcvbn-ts/core": "^2.1.0", - "@zxcvbn-ts/language-common": "^2.0.1", - "@zxcvbn-ts/language-en": "^2.1.0", "autoprefixer": "^10.4.12", "byte-size": "^8.1.0", "class-variance-authority": "^0.4.0", @@ -48,7 +46,7 @@ "react-colorful": "^5.6.1", "react-dom": "^18.2.0", "react-error-boundary": "^3.1.4", - "react-hook-form": "^7.36.1", + "react-hook-form": "^7.43.5", "react-json-view": "^1.21.3", "react-loading-skeleton": "^3.1.0", "react-qr-code": "^2.0.11", diff --git a/interface/util/index.tsx b/interface/util/index.tsx new file mode 100644 index 000000000..cf4eb11fb --- /dev/null +++ b/interface/util/index.tsx @@ -0,0 +1,5 @@ +import cryptoRandomString from 'crypto-random-string'; + +// NOTE: `crypto` module is not available in RN so this can't be in client +export const generatePassword = (length: number) => + cryptoRandomString({ length, type: 'ascii-printable' }); diff --git a/package.json b/package.json index 129f49527..4ff07ecdc 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "codegen": "cargo test -p sd-core api::tests::test_and_export_rspc_bindings -- --exact", "typecheck": "turbo run typecheck", "lint": "turbo run lint", - "lint:fix": "turbo run lint -- lint:fix", + "lint:fix": "turbo run lint -- --fix", "clean": "rimraf node_modules/ **/node_modules/ target/ **/.build/ **/.next/ **/dist/**" }, "pnpm": { diff --git a/packages/client/package.json b/packages/client/package.json index d257018e5..dc255f288 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -18,7 +18,9 @@ "@rspc/react": "^0.0.0-main-7c0a67c1", "@sd/config": "workspace:*", "@tanstack/react-query": "^4.12.0", - "crypto-random-string": "^5.0.0", + "@zxcvbn-ts/core": "^2.1.0", + "@zxcvbn-ts/language-common": "^2.0.1", + "@zxcvbn-ts/language-en": "^2.1.0", "plausible-tracker": "^0.3.8", "valtio": "^1.7.4" }, diff --git a/packages/client/src/index.ts b/packages/client/src/index.ts index 1f1b0fc64..a15e3fb0f 100644 --- a/packages/client/src/index.ts +++ b/packages/client/src/index.ts @@ -11,3 +11,4 @@ export * from './stores'; export * from './rspc'; export * from './core'; export * from './utils'; +export * from './lib'; diff --git a/packages/client/src/lib/index.ts b/packages/client/src/lib/index.ts new file mode 100644 index 000000000..35dc0c351 --- /dev/null +++ b/packages/client/src/lib/index.ts @@ -0,0 +1 @@ +export * from './passwordStrength'; diff --git a/packages/client/src/lib/passwordStrength.ts b/packages/client/src/lib/passwordStrength.ts new file mode 100644 index 000000000..85ca53f49 --- /dev/null +++ b/packages/client/src/lib/passwordStrength.ts @@ -0,0 +1,20 @@ +import { zxcvbn, zxcvbnOptions } from '@zxcvbn-ts/core'; +import zxcvbnCommonPackage from '@zxcvbn-ts/language-common'; +import zxcvbnEnPackage from '@zxcvbn-ts/language-en'; + +const options = { + dictionary: { + ...zxcvbnCommonPackage.dictionary, + ...zxcvbnEnPackage.dictionary + }, + graps: zxcvbnCommonPackage.adjacencyGraphs, + translations: zxcvbnEnPackage.translations +}; + +const ratings = ['Poor', 'Weak', 'Good', 'Strong', 'Perfect']; + +export function getPasswordStrength(password: string): { scoreText: string; score: number } { + zxcvbnOptions.setOptions(options); + const result = zxcvbn(password); + return { scoreText: ratings[result.score]!, score: result.score }; +} diff --git a/packages/client/src/stores/onboardingStore.ts b/packages/client/src/stores/onboardingStore.ts index eca025f4c..e594e512f 100644 --- a/packages/client/src/stores/onboardingStore.ts +++ b/packages/client/src/stores/onboardingStore.ts @@ -1,4 +1,5 @@ import { useSnapshot } from 'valtio'; +import { Algorithm } from '../core'; import { HashingAlgoSlug } from '../utils'; import { valtioPersist } from './util'; @@ -15,7 +16,7 @@ const onboardingStoreDefaults = { unlockedScreens: ['start'], lastActiveScreen: null as string | null, shouldEncryptLibrary: false, - algorithm: 'XChaCha20Poly1305', + algorithm: 'XChaCha20Poly1305' as Algorithm, hashingAlgorithm: 'Argon2id-s' as HashingAlgoSlug, passwordSetToken: null as string | null, shareTelemetry: true, diff --git a/packages/client/src/stores/telemetryState.tsx b/packages/client/src/stores/telemetryState.tsx index c337f9302..602b650a7 100644 --- a/packages/client/src/stores/telemetryState.tsx +++ b/packages/client/src/stores/telemetryState.tsx @@ -1,5 +1,5 @@ import { useSnapshot } from 'valtio'; -import { valtioPersist } from '.'; +import { valtioPersist } from './util'; export const telemetryStore = valtioPersist('sd-telemetryStore', { shareTelemetry: false // false by default, so functions cannot accidentally send data if the user has not decided diff --git a/packages/client/src/utils/keys.ts b/packages/client/src/utils/keys.ts index a680f9019..644032727 100644 --- a/packages/client/src/utils/keys.ts +++ b/packages/client/src/utils/keys.ts @@ -1,10 +1,6 @@ -import cryptoRandomString from 'crypto-random-string'; import { z } from 'zod'; import { HashingAlgorithm } from '../core'; -export const generatePassword = (length: number) => - cryptoRandomString({ length, type: 'ascii-printable' }); - export const hashingAlgoSlugSchema = z.union([ z.literal("Argon2id-s"), z.literal("Argon2id-h"), diff --git a/packages/ui/src/PasswordMeter.tsx b/packages/ui/src/PasswordMeter.tsx deleted file mode 100644 index 20393f691..000000000 --- a/packages/ui/src/PasswordMeter.tsx +++ /dev/null @@ -1,61 +0,0 @@ -import { zxcvbn, zxcvbnOptions } from '@zxcvbn-ts/core'; -import zxcvbnCommonPackage from '@zxcvbn-ts/language-common'; -import zxcvbnEnPackage from '@zxcvbn-ts/language-en'; -import clsx from 'clsx'; - -const options = { - dictionary: { - ...zxcvbnCommonPackage.dictionary, - ...zxcvbnEnPackage.dictionary - }, - graps: zxcvbnCommonPackage.adjacencyGraphs, - translations: zxcvbnEnPackage.translations -}; -zxcvbnOptions.setOptions(options); - -const ratings = ['Poor', 'Weak', 'Good', 'Strong', 'Perfect']; - -export interface PasswordMeterProps { - password: string; -} - -export const PasswordMeter = (props: PasswordMeterProps) => { - const zx = zxcvbn(props.password); - - const widthCalcStyle = { - width: `${zx.score !== 0 ? zx.score * 25 : 12.5}%` - }; - - return ( -
-

Password strength

- - {ratings[zx.score]} - -
-
-
-
-
-
- ); -}; diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts index 0f3188969..953bde36f 100644 --- a/packages/ui/src/index.ts +++ b/packages/ui/src/index.ts @@ -18,7 +18,6 @@ export * from './utils'; export * from './Tooltip'; export * from './Slider'; export * from './Divider'; -export * from './PasswordMeter'; export * from './Shortcut'; export * from './ProgressBar'; export * from './Folder'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 382ef84da..7ae53aa8d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -119,7 +119,7 @@ importers: react-burger-menu: ^3.0.8 react-dom: ^18.2.0 react-helmet: ^6.1.0 - react-hook-form: ^7.36.1 + react-hook-form: ^7.43.5 react-tsparticles: ^2.3.3 rollup-plugin-visualizer: ^5.8.2 sass: ^1.55.0 @@ -152,7 +152,7 @@ importers: react-burger-menu: 3.0.9_biqbaboplfbrettd7655fr4n2y react-dom: 18.2.0_react@18.2.0 react-helmet: 6.1.0_react@18.2.0 - react-hook-form: 7.42.1_react@18.2.0 + react-hook-form: 7.43.5_react@18.2.0 react-tsparticles: 2.8.0_react@18.2.0 sirv: 2.0.2 ts-node: 10.9.1_awa2wsr5thmg3i7jqycphctjfq @@ -186,107 +186,109 @@ importers: apps/mobile: specifiers: '@gorhom/bottom-sheet': ^4.4.5 + '@hookform/resolvers': ^2.9.11 '@react-native-async-storage/async-storage': ~1.17.11 '@react-native-masked-view/masked-view': 0.2.8 - '@react-navigation/bottom-tabs': ^6.5.4 - '@react-navigation/drawer': ^6.5.8 - '@react-navigation/native': ^6.1.3 - '@react-navigation/stack': ^6.3.12 + '@react-navigation/bottom-tabs': ^6.5.7 + '@react-navigation/drawer': ^6.6.2 + '@react-navigation/native': ^6.1.6 + '@react-navigation/stack': ^6.3.16 '@rnx-kit/metro-config': ^1.3.5 '@rspc/client': ^0.0.0-main-7c0a67c1 '@rspc/react': ^0.0.0-main-7c0a67c1 '@sd/assets': workspace:* '@sd/client': workspace:* '@sd/config': workspace:* - '@shopify/flash-list': 1.4.1 - '@tanstack/react-query': ^4.24.4 - '@types/react': ~18.0.26 - '@types/react-native': ~0.70.8 + '@shopify/flash-list': 1.4.0 + '@tanstack/react-query': ^4.26.1 + '@types/react': ~18.0.27 babel-plugin-module-resolver: ^5.0.0 byte-size: ^8.1.0 class-variance-authority: ^0.4.0 dayjs: ^1.11.5 eslint-plugin-react-native: ^4.0.0 - expo: ^47.0.13 - expo-linking: ~3.3.0 - expo-media-library: ~15.0.0 - expo-splash-screen: ~0.17.5 - expo-status-bar: ~1.4.2 + expo: ^48.0.6 + expo-linking: ~4.0.1 + expo-media-library: ~15.2.2 + expo-splash-screen: ~0.18.1 + expo-status-bar: ~1.4.4 intl: ^1.2.5 lottie-react-native: 5.1.4 - metro-minify-terser: ^0.74.1 - moti: ^0.22.0 + metro-minify-terser: 0.76.0 + moti: ^0.24.2 phosphor-react-native: ^1.1.2 - react: 18.1.0 - react-hook-form: ^7.43.0 - react-native: 0.70.5 + react: 18.2.0 + react-hook-form: ^7.43.5 + react-native: 0.71.3 react-native-document-picker: ^8.1.1 react-native-fs: ^2.20.0 react-native-gesture-handler: ~2.9.0 react-native-popup-menu: ^0.16.1 react-native-reanimated: ~2.14.4 react-native-safe-area-context: 4.5.0 - react-native-screens: ~3.19.0 - react-native-svg: 13.8.0 + react-native-screens: ~3.20.0 + react-native-svg: 13.4.0 react-native-svg-transformer: ^1.0.0 react-native-wheel-color-picker: ^1.2.0 - twrnc: ^3.5.0 - typescript: ^4.9.4 + twrnc: ^3.6.0 + typescript: ^4.9.5 use-count-up: ^3.0.1 use-debounce: ^9.0.2 - valtio: ^1.8.0 + valtio: ^1.10.3 + zod: ^3.21.4 dependencies: - '@gorhom/bottom-sheet': 4.4.5_w366bumyfs4uyicayprrehskae - '@react-native-async-storage/async-storage': 1.17.11_react-native@0.70.5 - '@react-native-masked-view/masked-view': 0.2.8_tj3nonr5gneraukzjkxpsiy7yu - '@react-navigation/bottom-tabs': 6.5.4_tzhjy2gc5kvqqitykreeetpfsq - '@react-navigation/drawer': 6.5.8_5pbm2y6oxn4wiaxvhnj4nykkku - '@react-navigation/native': 6.1.3_tj3nonr5gneraukzjkxpsiy7yu - '@react-navigation/stack': 6.3.12_tvuqzzu4d6qsmbauwbo7nuei7e + '@gorhom/bottom-sheet': 4.4.5_roruo4vjpd27jjmcsfgplose2a + '@hookform/resolvers': 2.9.11_react-hook-form@7.43.5 + '@react-native-async-storage/async-storage': 1.17.11_react-native@0.71.3 + '@react-native-masked-view/masked-view': 0.2.8_yqouayos4dnow7nnkhah4yzuzq + '@react-navigation/bottom-tabs': 6.5.7_lzeolizq5fdjozeb3mtrlbatoi + '@react-navigation/drawer': 6.6.2_7vhdhx5mqw5r775ehb5p4uprq4 + '@react-navigation/native': 6.1.6_yqouayos4dnow7nnkhah4yzuzq + '@react-navigation/stack': 6.3.16_pf4j4f7edywtcmcmtmj6rq4iri '@rspc/client': 0.0.0-main-7c0a67c1 - '@rspc/react': 0.0.0-main-7c0a67c1_6niuqkvdadibsmemv5phcmgdcq + '@rspc/react': 0.0.0-main-7c0a67c1_xytdzyysqpeqv6tutfmk3i4niq '@sd/assets': link:../../packages/assets '@sd/client': link:../../packages/client - '@shopify/flash-list': 1.4.1_tj3nonr5gneraukzjkxpsiy7yu - '@tanstack/react-query': 4.24.4_tj3nonr5gneraukzjkxpsiy7yu + '@shopify/flash-list': 1.4.0_yqouayos4dnow7nnkhah4yzuzq + '@tanstack/react-query': 4.26.1_yqouayos4dnow7nnkhah4yzuzq byte-size: 8.1.0 - class-variance-authority: 0.4.0_typescript@4.9.4 + class-variance-authority: 0.4.0_typescript@4.9.5 dayjs: 1.11.7 - expo: 47.0.13 - expo-linking: 3.3.0_expo@47.0.13 - expo-media-library: 15.0.0_expo@47.0.13 - expo-splash-screen: 0.17.5_expo@47.0.13 - expo-status-bar: 1.4.2 + expo: 48.0.6 + expo-linking: 4.0.1_expo@48.0.6 + expo-media-library: 15.2.2_expo@48.0.6 + expo-splash-screen: 0.18.1_expo@48.0.6 + expo-status-bar: 1.4.4 intl: 1.2.5 - lottie-react-native: 5.1.4_tj3nonr5gneraukzjkxpsiy7yu - moti: 0.22.0_wwrhtnmkhk6ixblrbdwhxojxqi - phosphor-react-native: 1.1.2_tdhmirddlb52bzkqlwgrsfpe6m - react: 18.1.0 - react-hook-form: 7.43.0_react@18.1.0 - react-native: 0.70.5_react@18.1.0 - react-native-document-picker: 8.1.3_tj3nonr5gneraukzjkxpsiy7yu - react-native-fs: 2.20.0_react-native@0.70.5 - react-native-gesture-handler: 2.9.0_tj3nonr5gneraukzjkxpsiy7yu + lottie-react-native: 5.1.4_yqouayos4dnow7nnkhah4yzuzq + moti: 0.24.2_j2lje2xtngrkm2tptyce2pxl5m + phosphor-react-native: 1.1.2_nspe6j2x24lhqdltgpf6gwh4ma + react: 18.2.0 + react-hook-form: 7.43.5_react@18.2.0 + react-native: 0.71.3_react@18.2.0 + react-native-document-picker: 8.1.3_yqouayos4dnow7nnkhah4yzuzq + react-native-fs: 2.20.0_react-native@0.71.3 + react-native-gesture-handler: 2.9.0_yqouayos4dnow7nnkhah4yzuzq react-native-popup-menu: 0.16.1 - react-native-reanimated: 2.14.4_tj3nonr5gneraukzjkxpsiy7yu - react-native-safe-area-context: 4.5.0_tj3nonr5gneraukzjkxpsiy7yu - react-native-screens: 3.19.0_tj3nonr5gneraukzjkxpsiy7yu - react-native-svg: 13.8.0_tj3nonr5gneraukzjkxpsiy7yu + react-native-reanimated: 2.14.4_yqouayos4dnow7nnkhah4yzuzq + react-native-safe-area-context: 4.5.0_yqouayos4dnow7nnkhah4yzuzq + react-native-screens: 3.20.0_yqouayos4dnow7nnkhah4yzuzq + react-native-svg: 13.4.0_yqouayos4dnow7nnkhah4yzuzq react-native-wheel-color-picker: 1.2.0 - twrnc: 3.6.0_react-native@0.70.5 - use-count-up: 3.0.1_react@18.1.0 - use-debounce: 9.0.3_react@18.1.0 - valtio: 1.9.0_react@18.1.0 + twrnc: 3.6.0_react-native@0.71.3 + use-count-up: 3.0.1_react@18.2.0 + use-debounce: 9.0.3_react@18.2.0 + valtio: 1.10.3_react@18.2.0 + zod: 3.21.4 devDependencies: - '@rnx-kit/metro-config': 1.3.5_tj3nonr5gneraukzjkxpsiy7yu + '@rnx-kit/metro-config': 1.3.5_yqouayos4dnow7nnkhah4yzuzq '@sd/config': link:../../packages/config '@types/react': 18.0.27 - '@types/react-native': 0.70.9 babel-plugin-module-resolver: 5.0.0 eslint-plugin-react-native: 4.0.0 - metro-minify-terser: 0.74.1 - react-native-svg-transformer: 1.0.0_kqpsw65h73u7hvgblav6crprhi - typescript: 4.9.4 + metro-minify-terser: 0.76.0 + react-native-svg-transformer: 1.0.0_csdbj5z546ts5ngzc62z27kx4u + typescript: 4.9.5 apps/server: specifiers: {} @@ -399,13 +401,11 @@ importers: '@types/react-dom': ^18.0.6 '@types/react-router-dom': ^5.3.3 '@vitejs/plugin-react': ^2.1.0 - '@zxcvbn-ts/core': ^2.1.0 - '@zxcvbn-ts/language-common': ^2.0.1 - '@zxcvbn-ts/language-en': ^2.1.0 autoprefixer: ^10.4.12 byte-size: ^8.1.0 class-variance-authority: ^0.4.0 clsx: ^1.2.1 + crypto-random-string: ^5.0.0 dayjs: ^1.11.5 phosphor-react: ^1.4.1 prettier: ^2.7.1 @@ -413,7 +413,7 @@ importers: react-colorful: ^5.6.1 react-dom: ^18.2.0 react-error-boundary: ^3.1.4 - react-hook-form: ^7.36.1 + react-hook-form: ^7.43.5 react-json-view: ^1.21.3 react-loading-skeleton: ^3.1.0 react-qr-code: ^2.0.11 @@ -430,7 +430,7 @@ importers: dependencies: '@fontsource/inter': 4.5.15 '@headlessui/react': 1.7.7_biqbaboplfbrettd7655fr4n2y - '@hookform/resolvers': 2.9.10_react-hook-form@7.43.0 + '@hookform/resolvers': 2.9.11_react-hook-form@7.43.5 '@radix-ui/react-progress': 1.0.1_biqbaboplfbrettd7655fr4n2y '@radix-ui/react-slider': 1.1.0_biqbaboplfbrettd7655fr4n2y '@radix-ui/react-toast': 1.1.2_biqbaboplfbrettd7655fr4n2y @@ -447,20 +447,18 @@ importers: '@tanstack/react-query-devtools': 4.22.0_pkeil6ml7pq7xvil3imldjs2sa '@tanstack/react-virtual': 3.0.0-beta.18_react@18.2.0 '@vitejs/plugin-react': 2.2.0_vite@4.1.4 - '@zxcvbn-ts/core': 2.1.0 - '@zxcvbn-ts/language-common': 2.0.1 - '@zxcvbn-ts/language-en': 2.1.0 autoprefixer: 10.4.13 byte-size: 8.1.0 class-variance-authority: 0.4.0_typescript@4.9.4 clsx: 1.2.1 + crypto-random-string: 5.0.0 dayjs: 1.11.7 phosphor-react: 1.4.1_react@18.2.0 react: 18.2.0 react-colorful: 5.6.1_biqbaboplfbrettd7655fr4n2y react-dom: 18.2.0_react@18.2.0 react-error-boundary: 3.1.4_react@18.2.0 - react-hook-form: 7.43.0_react@18.2.0 + react-hook-form: 7.43.5_react@18.2.0 react-json-view: 1.21.3_5ndqzdd6t4rivxsukjv3i3ak2q react-loading-skeleton: 3.1.0_react@18.2.0 react-qr-code: 2.0.11_react@18.2.0 @@ -497,7 +495,9 @@ importers: '@sd/config': workspace:* '@tanstack/react-query': ^4.12.0 '@types/react': ^18.0.21 - crypto-random-string: ^5.0.0 + '@zxcvbn-ts/core': ^2.1.0 + '@zxcvbn-ts/language-common': ^2.0.1 + '@zxcvbn-ts/language-en': ^2.1.0 plausible-tracker: ^0.3.8 scripts: '*' tsconfig: '*' @@ -508,7 +508,9 @@ importers: '@rspc/react': 0.0.0-main-7c0a67c1_tqsbl3x6ixew47ctvte2nz2yki '@sd/config': link:../config '@tanstack/react-query': 4.22.0 - crypto-random-string: 5.0.0 + '@zxcvbn-ts/core': 2.1.0 + '@zxcvbn-ts/language-common': 2.0.1 + '@zxcvbn-ts/language-en': 2.1.0 plausible-tracker: 0.3.8 valtio: 1.9.0 devDependencies: @@ -672,7 +674,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.18.6 - '@babel/generator': 7.20.7 + '@babel/generator': 7.20.14 '@babel/helper-module-transforms': 7.20.11 '@babel/helpers': 7.20.7 '@babel/parser': 7.20.7 @@ -736,6 +738,28 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core/7.21.0: + resolution: {integrity: sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.0 + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.21.1 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helpers': 7.21.0 + '@babel/parser': 7.21.2 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + /@babel/generator/7.17.7: resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} engines: {node: '>=6.9.0'} @@ -762,6 +786,15 @@ packages: '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 + /@babel/generator/7.21.1: + resolution: {integrity: sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.17 + jsesc: 2.5.2 + /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} @@ -815,6 +848,19 @@ packages: lru-cache: 5.1.1 semver: 6.3.0 + /@babel/helper-compilation-targets/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.20.10 + '@babel/core': 7.21.0 + '@babel/helper-validator-option': 7.18.6 + browserslist: 4.21.4 + lru-cache: 5.1.1 + semver: 6.3.0 + /@babel/helper-create-class-features-plugin/7.20.12: resolution: {integrity: sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==} engines: {node: '>=6.9.0'} @@ -851,6 +897,78 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-create-class-features-plugin/7.20.12_@babel+core@7.21.0: + resolution: {integrity: sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-member-expression-to-functions': 7.20.7 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + + /@babel/helper-create-class-features-plugin/7.21.0: + resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.20.12: + resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.20.12 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + + /@babel/helper-create-class-features-plugin/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-Q8wNiMIdwsv5la5SPxNYzzkPnjgC0Sy0i7jLkVOCdllu/xcVNkr3TeZzbHBJrj+XXRqzX5uCyCoV9eu6xUG7KQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-member-expression-to-functions': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/helper-split-export-declaration': 7.18.6 + transitivePeerDependencies: + - supports-color + /@babel/helper-create-regexp-features-plugin/7.20.5: resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} engines: {node: '>=6.9.0'} @@ -871,6 +989,16 @@ packages: '@babel/helper-annotate-as-pure': 7.18.6 regexpu-core: 5.2.2 + /@babel/helper-create-regexp-features-plugin/7.20.5_@babel+core@7.21.0: + resolution: {integrity: sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + regexpu-core: 5.2.2 + /@babel/helper-define-polyfill-provider/0.1.5_@babel+core@7.20.12: resolution: {integrity: sha512-nXuzCSwlJ/WKr8qxzW816gwyT6VZgiJG17zR40fou70yfAcqjoNyTLl/DQ+FExw5Hx5KNqshmN8Ldl/r2N7cTg==} peerDependencies: @@ -919,6 +1047,21 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-define-polyfill-provider/0.3.3_@babel+core@7.21.0: + resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} + peerDependencies: + '@babel/core': ^7.4.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.1 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + /@babel/helper-environment-visitor/7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} @@ -936,6 +1079,13 @@ packages: '@babel/template': 7.20.7 '@babel/types': 7.20.7 + /@babel/helper-function-name/7.21.0: + resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/types': 7.21.2 + /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} @@ -948,6 +1098,12 @@ packages: dependencies: '@babel/types': 7.20.7 + /@babel/helper-member-expression-to-functions/7.21.0: + resolution: {integrity: sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.21.2 + /@babel/helper-module-imports/7.18.6: resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} engines: {node: '>=6.9.0'} @@ -969,11 +1125,26 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-module-transforms/7.21.2: + resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-simple-access': 7.20.2 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/helper-validator-identifier': 7.19.1 + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + transitivePeerDependencies: + - supports-color + /@babel/helper-optimise-call-expression/7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 /@babel/helper-plugin-utils/7.10.4: resolution: {integrity: sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==} @@ -1011,6 +1182,20 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.21.0: + resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-wrap-function': 7.20.5 + '@babel/types': 7.20.7 + transitivePeerDependencies: + - supports-color + /@babel/helper-replace-supers/7.20.7: resolution: {integrity: sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==} engines: {node: '>=6.9.0'} @@ -1034,7 +1219,7 @@ packages: resolution: {integrity: sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.20.7 + '@babel/types': 7.21.2 /@babel/helper-split-export-declaration/7.18.6: resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} @@ -1054,11 +1239,15 @@ packages: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option/7.21.0: + resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} + engines: {node: '>=6.9.0'} + /@babel/helper-wrap-function/7.20.5: resolution: {integrity: sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-function-name': 7.19.0 + '@babel/helper-function-name': 7.21.0 '@babel/template': 7.20.7 '@babel/traverse': 7.20.12 '@babel/types': 7.20.7 @@ -1075,6 +1264,16 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers/7.21.0: + resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + transitivePeerDependencies: + - supports-color + /@babel/highlight/7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} @@ -1106,6 +1305,13 @@ packages: dependencies: '@babel/types': 7.20.7 + /@babel/parser/7.21.2: + resolution: {integrity: sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.21.2 + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -1176,6 +1382,20 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-proposal-async-generator-functions/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.21.0 + transitivePeerDependencies: + - supports-color + /@babel/plugin-proposal-class-properties/7.18.6: resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} @@ -1200,6 +1420,18 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-proposal-class-properties/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + transitivePeerDependencies: + - supports-color + /@babel/plugin-proposal-class-static-block/7.20.7: resolution: {integrity: sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==} engines: {node: '>=6.9.0'} @@ -1289,6 +1521,16 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-export-default-from': 7.18.6_@babel+core@7.20.12 + /@babel/plugin-proposal-export-default-from/7.18.10_@babel+core@7.21.0: + resolution: {integrity: sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-export-default-from': 7.18.6_@babel+core@7.21.0 + /@babel/plugin-proposal-export-namespace-from/7.18.9: resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} engines: {node: '>=6.9.0'} @@ -1372,6 +1614,16 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.20.12 + /@babel/plugin-proposal-nullish-coalescing-operator/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 + /@babel/plugin-proposal-numeric-separator/7.18.6: resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} engines: {node: '>=6.9.0'} @@ -1430,6 +1682,19 @@ packages: '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 + /@babel/plugin-proposal-object-rest-spread/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.20.10 + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.21.0 + /@babel/plugin-proposal-optional-catch-binding/7.18.6: resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} @@ -1450,6 +1715,16 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.20.12 + /@babel/plugin-proposal-optional-catch-binding/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.21.0 + /@babel/plugin-proposal-optional-chaining/7.20.7: resolution: {integrity: sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==} engines: {node: '>=6.9.0'} @@ -1472,6 +1747,17 @@ packages: '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.20.12 + /@babel/plugin-proposal-optional-chaining/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 + /@babel/plugin-proposal-private-methods/7.18.6: resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} engines: {node: '>=6.9.0'} @@ -1563,6 +1849,14 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.21.0: + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-class-properties/7.12.13: resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -1578,6 +1872,15 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-syntax-class-properties/7.12.13_@babel+core@7.21.0: + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-syntax-class-static-block/7.14.5: resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -1633,6 +1936,14 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-dynamic-import/7.8.3_@babel+core@7.21.0: + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-export-default-from/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==} engines: {node: '>=6.9.0'} @@ -1642,6 +1953,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-export-default-from/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-export-namespace-from/7.8.3: resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: @@ -1668,6 +1988,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-flow/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-import-assertions/7.20.0: resolution: {integrity: sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==} engines: {node: '>=6.9.0'} @@ -1730,6 +2059,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-jsx/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-logical-assignment-operators/7.10.4: resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: @@ -1763,6 +2101,14 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-nullish-coalescing-operator/7.8.3_@babel+core@7.21.0: + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-numeric-separator/7.10.4: resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: @@ -1805,6 +2151,14 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-object-rest-spread/7.8.3_@babel+core@7.21.0: + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-optional-catch-binding/7.8.3: resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: @@ -1821,6 +2175,14 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-optional-catch-binding/7.8.3_@babel+core@7.21.0: + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-optional-chaining/7.8.3: resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -1837,6 +2199,14 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-optional-chaining/7.8.3_@babel+core@7.21.0: + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-private-property-in-object/7.14.5: resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} @@ -1892,6 +2262,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-syntax-typescript/7.20.0_@babel+core@7.21.0: + resolution: {integrity: sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-arrow-functions/7.20.7: resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} engines: {node: '>=6.9.0'} @@ -1910,6 +2289,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-arrow-functions/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-async-to-generator/7.20.7: resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} engines: {node: '>=6.9.0'} @@ -1936,6 +2324,19 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-async-to-generator/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-remap-async-to-generator': 7.18.9_@babel+core@7.21.0 + transitivePeerDependencies: + - supports-color + /@babel/plugin-transform-block-scoped-functions/7.18.6: resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} engines: {node: '>=6.9.0'} @@ -1953,6 +2354,16 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-block-scoped-functions/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-block-scoping/7.20.11: resolution: {integrity: sha512-tA4N427a7fjf1P0/2I4ScsHGc5jcHPbb30xMbaTke2gxDuWpUfXDuX1FEymJwKk4tuGUvGcejAR6HdZVqmmPyw==} @@ -1972,6 +2383,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-block-scoping/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-classes/7.20.7: resolution: {integrity: sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==} engines: {node: '>=6.9.0'} @@ -2010,6 +2430,25 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-classes/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-optimise-call-expression': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + '@babel/helper-split-export-declaration': 7.18.6 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + /@babel/plugin-transform-computed-properties/7.20.7: resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} engines: {node: '>=6.9.0'} @@ -2030,6 +2469,16 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/template': 7.20.7 + /@babel/plugin-transform-computed-properties/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/template': 7.20.7 + /@babel/plugin-transform-destructuring/7.20.7: resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} engines: {node: '>=6.9.0'} @@ -2048,6 +2497,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-destructuring/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-dotall-regex/7.18.6: resolution: {integrity: sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==} engines: {node: '>=6.9.0'} @@ -2107,6 +2565,7 @@ packages: '@babel/core': 7.20.12 '@babel/helper-builder-binary-assignment-operator-visitor': 7.18.9 '@babel/helper-plugin-utils': 7.20.2 + dev: true /@babel/plugin-transform-flow-strip-types/7.19.0_@babel+core@7.20.12: resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} @@ -2118,6 +2577,26 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.20.12 + /@babel/plugin-transform-flow-strip-types/7.19.0_@babel+core@7.21.0: + resolution: {integrity: sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.21.0 + + /@babel/plugin-transform-flow-strip-types/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.21.0 + /@babel/plugin-transform-for-of/7.18.8: resolution: {integrity: sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==} engines: {node: '>=6.9.0'} @@ -2135,6 +2614,16 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-for-of/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-function-name/7.18.9: resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} @@ -2158,6 +2647,17 @@ packages: '@babel/helper-function-name': 7.19.0 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-function-name/7.18.9_@babel+core@7.21.0: + resolution: {integrity: sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-compilation-targets': 7.20.7_@babel+core@7.21.0 + '@babel/helper-function-name': 7.19.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-literals/7.18.9: resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} engines: {node: '>=6.9.0'} @@ -2176,6 +2676,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-literals/7.18.9_@babel+core@7.21.0: + resolution: {integrity: sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-member-expression-literals/7.18.6: resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} engines: {node: '>=6.9.0'} @@ -2193,6 +2702,16 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-member-expression-literals/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-modules-amd/7.20.11: resolution: {integrity: sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==} @@ -2245,6 +2764,19 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-modules-commonjs/7.21.2_@babel+core@7.21.0: + resolution: {integrity: sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-module-transforms': 7.21.2 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-simple-access': 7.20.2 + transitivePeerDependencies: + - supports-color + /@babel/plugin-transform-modules-systemjs/7.20.11: resolution: {integrity: sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==} engines: {node: '>=6.9.0'} @@ -2319,6 +2851,16 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-named-capturing-groups-regex/7.20.5_@babel+core@7.21.0: + resolution: {integrity: sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-new-target/7.18.6: resolution: {integrity: sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==} engines: {node: '>=6.9.0'} @@ -2370,6 +2912,19 @@ packages: '@babel/helper-replace-supers': 7.20.7 transitivePeerDependencies: - supports-color + dev: true + + /@babel/plugin-transform-object-super/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-replace-supers': 7.20.7 + transitivePeerDependencies: + - supports-color /@babel/plugin-transform-parameters/7.20.7: resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} @@ -2399,6 +2954,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-parameters/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-property-literals/7.18.6: resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} engines: {node: '>=6.9.0'} @@ -2416,6 +2980,16 @@ packages: dependencies: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + dev: true + + /@babel/plugin-transform-property-literals/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} @@ -2426,6 +3000,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-react-display-name/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-react-jsx-development/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} engines: {node: '>=6.9.0'} @@ -2444,6 +3027,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-react-jsx-self/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.20.12: resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} engines: {node: '>=6.9.0'} @@ -2453,6 +3045,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-react-jsx-source/7.19.6_@babel+core@7.21.0: + resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-react-jsx/7.20.7: resolution: {integrity: sha512-Tfq7qqD+tRj3EoDhY00nn2uP2hsRxgYGi5mLQ5TimKav0a9Lrpd4deE+fcLXU8zFYRjlKPHZhpCvfEA6qnBxqQ==} engines: {node: '>=6.9.0'} @@ -2479,6 +3080,19 @@ packages: '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 '@babel/types': 7.20.7 + /@babel/plugin-transform-react-jsx/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-annotate-as-pure': 7.18.6 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 + '@babel/types': 7.21.2 + /@babel/plugin-transform-react-pure-annotations/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==} engines: {node: '>=6.9.0'} @@ -2546,6 +3160,22 @@ packages: transitivePeerDependencies: - supports-color + /@babel/plugin-transform-runtime/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-ReY6pxwSzEU0b3r2/T/VhqMKg/AkceBT19X0UptA3/tYi5Pe2eXgEUH+NNMC5nok6c6XQz5tyVTUpuezRfSMSg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-module-imports': 7.18.6 + '@babel/helper-plugin-utils': 7.20.2 + babel-plugin-polyfill-corejs2: 0.3.3_@babel+core@7.21.0 + babel-plugin-polyfill-corejs3: 0.6.0_@babel+core@7.21.0 + babel-plugin-polyfill-regenerator: 0.4.1_@babel+core@7.21.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + /@babel/plugin-transform-shorthand-properties/7.18.6: resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} engines: {node: '>=6.9.0'} @@ -2564,6 +3194,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-shorthand-properties/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-spread/7.20.7: resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} engines: {node: '>=6.9.0'} @@ -2584,6 +3223,16 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + /@babel/plugin-transform-spread/7.20.7_@babel+core@7.21.0: + resolution: {integrity: sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-skip-transparent-expression-wrappers': 7.20.0 + /@babel/plugin-transform-sticky-regex/7.18.6: resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} engines: {node: '>=6.9.0'} @@ -2602,6 +3251,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-sticky-regex/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-template-literals/7.18.9: resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} engines: {node: '>=6.9.0'} @@ -2620,6 +3278,15 @@ packages: '@babel/core': 7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-template-literals/7.18.9_@babel+core@7.21.0: + resolution: {integrity: sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-typeof-symbol/7.18.9: resolution: {integrity: sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==} engines: {node: '>=6.9.0'} @@ -2639,19 +3306,6 @@ packages: '@babel/helper-plugin-utils': 7.20.2 dev: true - /@babel/plugin-transform-typescript/7.20.13: - resolution: {integrity: sha512-O7I/THxarGcDZxkgWKMUrk7NK1/WbHAg3Xx86gqS6x9MTrNL6AwIluuZ96ms4xeDe6AVx6rjHbWHP7x26EPQBA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/helper-create-class-features-plugin': 7.20.12 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/plugin-transform-typescript/7.20.13_@babel+core@7.20.12: resolution: {integrity: sha512-O7I/THxarGcDZxkgWKMUrk7NK1/WbHAg3Xx86gqS6x9MTrNL6AwIluuZ96ms4xeDe6AVx6rjHbWHP7x26EPQBA==} engines: {node: '>=6.9.0'} @@ -2659,22 +3313,35 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-typescript/7.20.7_@babel+core@7.20.12: - resolution: {integrity: sha512-m3wVKEvf6SoszD8pu4NZz3PvfKRCMgk6D6d0Qi9hNnlM5M6CFS92EgF4EiHVLKbU0r/r7ty1hg7NPZwE7WRbYw==} + /@babel/plugin-transform-typescript/7.21.0: + resolution: {integrity: sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 - '@babel/helper-create-class-features-plugin': 7.20.12_@babel+core@7.20.12 + '@babel/helper-create-class-features-plugin': 7.21.0 '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.20.12 + '@babel/plugin-syntax-typescript': 7.20.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/plugin-transform-typescript/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-xo///XTPp3mDzTtrqXoBlK9eiAYW3wv9JXglcn/u1bi60RW11dEUxIgA8cbnDhutS1zacjMRmAwxE0gMklLnZg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-create-class-features-plugin': 7.21.0_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/plugin-syntax-typescript': 7.20.0_@babel+core@7.21.0 transitivePeerDependencies: - supports-color @@ -2717,6 +3384,16 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.20.12 '@babel/helper-plugin-utils': 7.20.2 + /@babel/plugin-transform-unicode-regex/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-create-regexp-features-plugin': 7.20.5_@babel+core@7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + /@babel/preset-env/7.20.2: resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} engines: {node: '>=6.9.0'} @@ -2898,6 +3575,18 @@ packages: '@babel/helper-plugin-utils': 7.20.2 '@babel/helper-validator-option': 7.18.6 '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.20.12 + dev: true + + /@babel/preset-flow/7.18.6_@babel+core@7.21.0: + resolution: {integrity: sha512-E7BDhL64W6OUqpuyHnSroLnqyRTcG6ZdOBl1OKI/QK/HJfplqK/S3sq1Cckx7oTodJ5yOXyfw7rEADJ6UjoQDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.18.6 + '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.21.0 /@babel/preset-modules/0.1.5: resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} @@ -2939,19 +3628,6 @@ packages: '@babel/plugin-transform-react-pure-annotations': 7.18.6_@babel+core@7.20.12 dev: true - /@babel/preset-typescript/7.18.6: - resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/helper-plugin-utils': 7.20.2 - '@babel/helper-validator-option': 7.18.6 - '@babel/plugin-transform-typescript': 7.20.13 - transitivePeerDependencies: - - supports-color - dev: false - /@babel/preset-typescript/7.18.6_@babel+core@7.20.12: resolution: {integrity: sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==} engines: {node: '>=6.9.0'} @@ -2964,6 +3640,33 @@ packages: '@babel/plugin-transform-typescript': 7.20.13_@babel+core@7.20.12 transitivePeerDependencies: - supports-color + dev: true + + /@babel/preset-typescript/7.21.0: + resolution: {integrity: sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-transform-typescript': 7.21.0 + transitivePeerDependencies: + - supports-color + dev: false + + /@babel/preset-typescript/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-myc9mpoVA5m1rF8K8DgLEatOYFDpwC+RkMkjZ0Du6uI62YvDe8uxIEYVs/VCdSJ097nlALiU/yBC7//3nI+hNg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-plugin-utils': 7.20.2 + '@babel/helper-validator-option': 7.21.0 + '@babel/plugin-transform-typescript': 7.21.0_@babel+core@7.21.0 + transitivePeerDependencies: + - supports-color /@babel/register/7.18.9_@babel+core@7.20.12: resolution: {integrity: sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw==} @@ -2977,6 +3680,20 @@ packages: make-dir: 2.1.0 pirates: 4.0.5 source-map-support: 0.5.21 + dev: true + + /@babel/register/7.21.0_@babel+core@7.21.0: + resolution: {integrity: sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.5 + source-map-support: 0.5.21 /@babel/runtime/7.20.7: resolution: {integrity: sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==} @@ -2984,6 +3701,12 @@ packages: dependencies: regenerator-runtime: 0.13.11 + /@babel/runtime/7.21.0: + resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.13.11 + /@babel/runtime/7.5.5: resolution: {integrity: sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==} dependencies: @@ -3057,6 +3780,23 @@ packages: - supports-color dev: true + /@babel/traverse/7.21.2: + resolution: {integrity: sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.18.6 + '@babel/generator': 7.21.1 + '@babel/helper-environment-visitor': 7.18.9 + '@babel/helper-function-name': 7.21.0 + '@babel/helper-hoist-variables': 7.18.6 + '@babel/helper-split-export-declaration': 7.18.6 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + /@babel/types/7.17.0: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} engines: {node: '>=6.9.0'} @@ -3073,6 +3813,14 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 + /@babel/types/7.21.2: + resolution: {integrity: sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.19.4 + '@babel/helper-validator-identifier': 7.19.1 + to-fast-properties: 2.0.0 + /@base2/pretty-print-object/1.0.1: resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} dev: true @@ -3673,22 +4421,22 @@ packages: safe-json-stringify: 1.2.0 dev: false - /@expo/cli/0.4.11_icwh4t4f22ilvzajfiepq6z62e: - resolution: {integrity: sha512-L9Ci9RBh0aPFEDF1AjDYPk54OgeUJIKzxF3lRgITm+lQpI3IEKjAc9LaYeQeO1mlZMUQmPkHArF8iyz1eOeVoQ==} + /@expo/cli/0.6.2_6weo4dzsrefthwodkc5gdxxcii: + resolution: {integrity: sha512-uhmrXNemXTbCTKP/ycyJHOU/KLGdFwVCrWNBzz1VkwnmL8yJV5F3C18a83ybFFnUNfkGHeH5LtID7CSNbbTWKg==} hasBin: true dependencies: '@babel/runtime': 7.20.7 '@expo/code-signing-certificates': 0.0.5 - '@expo/config': 7.0.3 - '@expo/config-plugins': 5.0.4 - '@expo/dev-server': 0.1.124 + '@expo/config': 8.0.2 + '@expo/config-plugins': 6.0.1 + '@expo/dev-server': 0.2.3 '@expo/devcert': 1.1.0 '@expo/json-file': 8.2.37 - '@expo/metro-config': 0.5.2 + '@expo/metro-config': 0.7.1 '@expo/osascript': 2.0.33 - '@expo/package-manager': 0.0.57 - '@expo/plist': 0.0.18 - '@expo/prebuild-config': 5.0.7_icwh4t4f22ilvzajfiepq6z62e + '@expo/package-manager': 1.0.1 + '@expo/plist': 0.0.20 + '@expo/prebuild-config': 6.0.0_6weo4dzsrefthwodkc5gdxxcii '@expo/rudder-sdk-node': 1.1.1 '@expo/spawn-async': 1.5.0 '@expo/xcpretty': 4.2.2 @@ -3736,7 +4484,6 @@ packages: terminal-link: 2.1.1 text-table: 0.2.0 url-join: 4.0.0 - uuid: 3.4.0 wrap-ansi: 7.0.0 transitivePeerDependencies: - bluebird @@ -3752,12 +4499,12 @@ packages: nullthrows: 1.1.1 dev: false - /@expo/config-plugins/5.0.4: - resolution: {integrity: sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==} + /@expo/config-plugins/6.0.1: + resolution: {integrity: sha512-6mqZutxeibXFeqFfoZApFUEH2n1RxGXYMHCdJrDj4eXDBBFZ3aJ0XBoroZcHHHvfRieEsf54vNyJoWp7JZGj8g==} dependencies: - '@expo/config-types': 47.0.0 - '@expo/json-file': 8.2.36 - '@expo/plist': 0.0.18 + '@expo/config-types': 48.0.0 + '@expo/json-file': 8.2.37 + '@expo/plist': 0.0.20 '@expo/sdk-runtime-versions': 1.0.0 '@react-native/normalize-color': 2.1.0 chalk: 4.1.2 @@ -3774,17 +4521,17 @@ packages: - supports-color dev: false - /@expo/config-types/47.0.0: - resolution: {integrity: sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==} + /@expo/config-types/48.0.0: + resolution: {integrity: sha512-DwyV4jTy/+cLzXGAo1xftS6mVlSiLIWZjl9DjTCLPFVgNYQxnh7htPilRv4rBhiNs7KaznWqKU70+4zQoKVT9A==} dev: false - /@expo/config/7.0.3: - resolution: {integrity: sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==} + /@expo/config/8.0.2: + resolution: {integrity: sha512-WubrzTNNdAXy1FU8TdyQ7D9YtDj2tN3fWXDq+C8In+nB7Qc08zwH9cVdaGZ+rBVmjFZBh5ACfObKq/m9cm4QQA==} dependencies: '@babel/code-frame': 7.10.4 - '@expo/config-plugins': 5.0.4 - '@expo/config-types': 47.0.0 - '@expo/json-file': 8.2.36 + '@expo/config-plugins': 6.0.1 + '@expo/config-types': 48.0.0 + '@expo/json-file': 8.2.37 getenv: 1.0.0 glob: 7.1.6 require-from-string: 2.0.2 @@ -3811,11 +4558,11 @@ packages: xml-js: 1.6.11 dev: false - /@expo/dev-server/0.1.124: - resolution: {integrity: sha512-iHczVcf+rgWupCY/3b3ePIizNtzsy1O/w8jdKv3bKvoOfXiVIVOo4KGiVDpAJOahKiMOsRlbKeemB8OLNKzdSA==} + /@expo/dev-server/0.2.3: + resolution: {integrity: sha512-9+6QGRdymj3dmTp1vUpROvWJ+Ezz6Qp9xHafAcaRHzw322pUCOiRKxTYqDqYYZ/72shrHPGQ2CiIXTnV1vM2tA==} dependencies: '@expo/bunyan': 4.0.0 - '@expo/metro-config': 0.5.2 + '@expo/metro-config': 0.7.1 '@expo/osascript': 2.0.33 '@expo/spawn-async': 1.5.0 body-parser: 1.20.1 @@ -3850,7 +4597,7 @@ packages: rimraf: 2.7.1 sudo-prompt: 8.2.5 tmp: 0.0.33 - tslib: 2.4.1 + tslib: 2.5.0 transitivePeerDependencies: - supports-color dev: false @@ -3873,14 +4620,6 @@ packages: - encoding dev: false - /@expo/json-file/8.2.36: - resolution: {integrity: sha512-tOZfTiIFA5KmMpdW9KF7bc6CFiGjb0xnbieJhTGlHrLL+ps2G0OkqmuZ3pFEXBOMnJYUVpnSy++52LFxvpa5ZQ==} - dependencies: - '@babel/code-frame': 7.10.4 - json5: 1.0.2 - write-file-atomic: 2.4.3 - dev: false - /@expo/json-file/8.2.37: resolution: {integrity: sha512-YaH6rVg11JoTS2P6LsW7ybS2CULjf40AbnAHw2F1eDPuheprNjARZMnyHFPkKv7GuxCy+B9GPcbOKgc4cgA80Q==} dependencies: @@ -3889,11 +4628,10 @@ packages: write-file-atomic: 2.4.3 dev: false - /@expo/metro-config/0.5.2: - resolution: {integrity: sha512-W1qsZPA5BXuRBkNLydKBYQ1+ubObhOK0gk2Fpc+XnhW+UUIHC9sDR5pZRYGNSnDDc3rG8y7c32UzSW9nlK+mog==} + /@expo/metro-config/0.7.1: + resolution: {integrity: sha512-vGWU62Zp5pRGw5IEHDNdqvsy62/hu/Na7bswePYVjoaItOjJY7+qilFeF0AAK+3V8qAM8fpltH3ByylKfWaA7A==} dependencies: - '@expo/config': 7.0.3 - '@expo/json-file': 8.2.36 + '@expo/config': 8.0.2 chalk: 4.1.2 debug: 4.3.4 find-yarn-workspace-root: 2.0.0 @@ -3912,39 +4650,40 @@ packages: exec-async: 2.2.0 dev: false - /@expo/package-manager/0.0.57: - resolution: {integrity: sha512-Y4RpSL9EqaPF+Vd2GrK6r7Xx7Dv0Xdq3AGAD9C0KwV21WqP/scj/dpjxFY+ABwmdhNsFzYXb8fmDyh4tiKenPQ==} + /@expo/package-manager/1.0.1: + resolution: {integrity: sha512-ue6NIIsNafa2bK7zUl7Y61YNtkPsg7sJcTOyQo/87Yqf6Q+2bOrvdw1xjviaFrMsTZcpOPVf+ZIEYtE0lw0k6A==} dependencies: - '@expo/json-file': 8.2.36 + '@expo/json-file': 8.2.37 '@expo/spawn-async': 1.5.0 ansi-regex: 5.0.1 chalk: 4.1.2 find-up: 5.0.0 find-yarn-workspace-root: 2.0.0 + js-yaml: 3.14.1 + micromatch: 4.0.5 npm-package-arg: 7.0.0 - rimraf: 3.0.2 split: 1.0.1 sudo-prompt: 9.1.1 dev: false - /@expo/plist/0.0.18: - resolution: {integrity: sha512-+48gRqUiz65R21CZ/IXa7RNBXgAI/uPSdvJqoN9x1hfL44DNbUoWHgHiEXTx7XelcATpDwNTz6sHLfy0iNqf+w==} + /@expo/plist/0.0.20: + resolution: {integrity: sha512-UXQ4LXCfTZ580LDHGJ5q62jSTwJFFJ1GqBu8duQMThiHKWbMJ+gajJh6rsB6EJ3aLUr9wcauxneL5LVRFxwBEA==} dependencies: '@xmldom/xmldom': 0.7.9 base64-js: 1.5.1 xmlbuilder: 14.0.0 dev: false - /@expo/prebuild-config/5.0.7: - resolution: {integrity: sha512-D+TBpJUHe4+oTGFPb4o0rrw/h1xxc6wF+abJnbDHUkhnaeiHkE2O3ByS7FdiZ2FT36t0OKqeSKG/xFwWT3m1Ew==} + /@expo/prebuild-config/6.0.0: + resolution: {integrity: sha512-UW0QKAoRelsalVMhAG1tmegwS+2tbefvUi6/0QiKPlMLg8GFDQ5ZnzsSmuljD0SzT5yGg8oSpKYhnrXJ6pRmIQ==} peerDependencies: expo-modules-autolinking: '>=0.8.1' dependencies: - '@expo/config': 7.0.3 - '@expo/config-plugins': 5.0.4 - '@expo/config-types': 47.0.0 + '@expo/config': 8.0.2 + '@expo/config-plugins': 6.0.1 + '@expo/config-types': 48.0.0 '@expo/image-utils': 0.3.22 - '@expo/json-file': 8.2.36 + '@expo/json-file': 8.2.37 debug: 4.3.4 fs-extra: 9.1.0 resolve-from: 5.0.0 @@ -3955,18 +4694,18 @@ packages: - supports-color dev: false - /@expo/prebuild-config/5.0.7_icwh4t4f22ilvzajfiepq6z62e: - resolution: {integrity: sha512-D+TBpJUHe4+oTGFPb4o0rrw/h1xxc6wF+abJnbDHUkhnaeiHkE2O3ByS7FdiZ2FT36t0OKqeSKG/xFwWT3m1Ew==} + /@expo/prebuild-config/6.0.0_6weo4dzsrefthwodkc5gdxxcii: + resolution: {integrity: sha512-UW0QKAoRelsalVMhAG1tmegwS+2tbefvUi6/0QiKPlMLg8GFDQ5ZnzsSmuljD0SzT5yGg8oSpKYhnrXJ6pRmIQ==} peerDependencies: expo-modules-autolinking: '>=0.8.1' dependencies: - '@expo/config': 7.0.3 - '@expo/config-plugins': 5.0.4 - '@expo/config-types': 47.0.0 + '@expo/config': 8.0.2 + '@expo/config-plugins': 6.0.1 + '@expo/config-types': 48.0.0 '@expo/image-utils': 0.3.22 - '@expo/json-file': 8.2.36 + '@expo/json-file': 8.2.37 debug: 4.3.4 - expo-modules-autolinking: 1.0.2 + expo-modules-autolinking: 1.1.2 fs-extra: 9.1.0 resolve-from: 5.0.0 semver: 7.3.2 @@ -4047,7 +4786,7 @@ packages: /@gar/promisify/1.1.3: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} - /@gorhom/bottom-sheet/4.4.5_w366bumyfs4uyicayprrehskae: + /@gorhom/bottom-sheet/4.4.5_roruo4vjpd27jjmcsfgplose2a: resolution: {integrity: sha512-Z5Z20wshLUB8lIdtMKoJaRnjd64wBR/q8EeVPThrg+skrcBwBPHfUwZJ2srB0rEszA/01ejSJy/ixyd7Ra7vUA==} peerDependencies: react: '*' @@ -4055,23 +4794,23 @@ packages: react-native-gesture-handler: '>=1.10.1' react-native-reanimated: '>=2.2.0' dependencies: - '@gorhom/portal': 1.0.14_tj3nonr5gneraukzjkxpsiy7yu + '@gorhom/portal': 1.0.14_yqouayos4dnow7nnkhah4yzuzq invariant: 2.2.4 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 - react-native-gesture-handler: 2.9.0_tj3nonr5gneraukzjkxpsiy7yu - react-native-reanimated: 2.14.4_tj3nonr5gneraukzjkxpsiy7yu + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 + react-native-gesture-handler: 2.9.0_yqouayos4dnow7nnkhah4yzuzq + react-native-reanimated: 2.14.4_yqouayos4dnow7nnkhah4yzuzq dev: false - /@gorhom/portal/1.0.14_tj3nonr5gneraukzjkxpsiy7yu: + /@gorhom/portal/1.0.14_yqouayos4dnow7nnkhah4yzuzq: resolution: {integrity: sha512-MXyL4xvCjmgaORr/rtryDNFy3kU4qUbKlwtQqqsygd0xX3mhKjOLn6mQK8wfu0RkoE0pBE0nAasRoHua+/QZ7A==} peerDependencies: react: '*' react-native: '*' dependencies: nanoid: 3.3.4 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 dev: false /@graphql-typed-document-node/core/3.1.1_graphql@15.8.0: @@ -4111,12 +4850,12 @@ packages: tailwindcss: 3.2.4_postcss@8.4.21 dev: false - /@hookform/resolvers/2.9.10_react-hook-form@7.43.0: - resolution: {integrity: sha512-JIL1DgJIlH9yuxcNGtyhsWX/PgNltz+5Gr6+8SX9fhXc/hPbEIk6wPI82nhgvp3uUb6ZfAM5mqg/x7KR7NAb+A==} + /@hookform/resolvers/2.9.11_react-hook-form@7.43.5: + resolution: {integrity: sha512-bA3aZ79UgcHj7tFV7RlgThzwSSHZgvfbt2wprldRkYBcMopdMvHyO17Wwp/twcJasNFischFfS7oz8Katz8DdQ==} peerDependencies: react-hook-form: ^7.0.0 dependencies: - react-hook-form: 7.43.0_react@18.2.0 + react-hook-form: 7.43.5_react@18.2.0 dev: false /@humanwhocodes/config-array/0.11.8: @@ -4163,17 +4902,37 @@ packages: engines: {node: '>=8'} dev: true - /@jest/create-cache-key-function/29.3.1: - resolution: {integrity: sha512-4i+E+E40gK13K78ffD/8cy4lSSqeWwyXeTZoq16tndiCP12hC8uQsPJdIu5C6Kf22fD8UbBk71so7s/6VwpUOQ==} + /@jest/create-cache-key-function/29.5.0: + resolution: {integrity: sha512-LIDZyZgnZss7uikvBKBB/USWwG+GO8+GnwRWT+YkCGDGsqLQlhm9BC3z6+7+eMs1kUlvXQIWEzBR8Q2Pnvx6lg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 29.3.1 + '@jest/types': 29.5.0 - /@jest/schemas/29.0.0: - resolution: {integrity: sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==} + /@jest/environment/29.5.0: + resolution: {integrity: sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@sinclair/typebox': 0.24.51 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.15.1 + jest-mock: 29.5.0 + + /@jest/fake-timers/29.5.0: + resolution: {integrity: sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@sinonjs/fake-timers': 10.0.2 + '@types/node': 18.15.1 + jest-message-util: 29.5.0 + jest-mock: 29.5.0 + jest-util: 29.5.0 + + /@jest/schemas/29.4.3: + resolution: {integrity: sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.25.24 /@jest/transform/26.6.2: resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} @@ -4214,19 +4973,19 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.18 + '@types/node': 18.15.1 '@types/yargs': 16.0.5 chalk: 4.1.2 - /@jest/types/29.3.1: - resolution: {integrity: sha512-d0S0jmmTpjnhCmNpApgX3jrUZgZ22ivKJRvL2lli5hpCRoNnp1f85r2/wpKfXuYu8E7Jjh1hGfhPyup1NM5AmA==} + /@jest/types/29.5.0: + resolution: {integrity: sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/schemas': 29.0.0 + '@jest/schemas': 29.4.3 '@types/istanbul-lib-coverage': 2.0.4 '@types/istanbul-reports': 3.0.1 - '@types/node': 18.11.18 - '@types/yargs': 17.0.20 + '@types/node': 18.15.1 + '@types/yargs': 17.0.22 chalk: 4.1.2 /@jridgewell/gen-mapping/0.1.1: @@ -4318,7 +5077,7 @@ packages: '@motionone/easing': 10.15.1 '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.4.1 + tslib: 2.5.0 dev: false /@motionone/dom/10.12.0: @@ -4329,14 +5088,14 @@ packages: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 hey-listen: 1.0.8 - tslib: 2.4.1 + tslib: 2.5.0 dev: false /@motionone/easing/10.15.1: resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} dependencies: '@motionone/utils': 10.15.1 - tslib: 2.4.1 + tslib: 2.5.0 dev: false /@motionone/generators/10.15.1: @@ -4344,7 +5103,7 @@ packages: dependencies: '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 - tslib: 2.4.1 + tslib: 2.5.0 dev: false /@motionone/types/10.15.1: @@ -4356,7 +5115,7 @@ packages: dependencies: '@motionone/types': 10.15.1 hey-listen: 1.0.8 - tslib: 2.4.1 + tslib: 2.5.0 dev: false /@mrmlnc/readdir-enhanced/2.2.1: @@ -5214,49 +5973,50 @@ packages: '@babel/runtime': 7.20.7 dev: false - /@react-native-async-storage/async-storage/1.17.11_react-native@0.70.5: + /@react-native-async-storage/async-storage/1.17.11_react-native@0.71.3: resolution: {integrity: sha512-bzs45n5HNcDq6mxXnSsOHysZWn1SbbebNxldBXCQs8dSvF8Aor9KCdpm+TpnnGweK3R6diqsT8lFhX77VX0NFw==} peerDependencies: react-native: ^0.0.0-0 || 0.60 - 0.71 || 1000.0.0 dependencies: merge-options: 3.0.4 - react-native: 0.70.5_react@18.1.0 + react-native: 0.71.3_react@18.2.0 dev: false - /@react-native-community/cli-clean/9.2.1: - resolution: {integrity: sha512-dyNWFrqRe31UEvNO+OFWmQ4hmqA07bR9Ief/6NnGwx67IO9q83D5PEAf/o96ML6jhSbDwCmpPKhPwwBbsyM3mQ==} + /@react-native-community/cli-clean/10.1.1: + resolution: {integrity: sha512-iNsrjzjIRv9yb5y309SWJ8NDHdwYtnCpmxZouQDyOljUdC9MwdZ4ChbtA4rwQyAwgOVfS9F/j56ML3Cslmvrxg==} dependencies: - '@react-native-community/cli-tools': 9.2.1 + '@react-native-community/cli-tools': 10.1.1 chalk: 4.1.2 execa: 1.0.0 prompts: 2.4.2 transitivePeerDependencies: - encoding - /@react-native-community/cli-config/9.2.1: - resolution: {integrity: sha512-gHJlBBXUgDN9vrr3aWkRqnYrPXZLztBDQoY97Mm5Yo6MidsEpYo2JIP6FH4N/N2p1TdjxJL4EFtdd/mBpiR2MQ==} + /@react-native-community/cli-config/10.1.1: + resolution: {integrity: sha512-p4mHrjC+s/ayiNVG6T35GdEGdP6TuyBUg5plVGRJfTl8WT6LBfLYLk+fz/iETrEZ/YkhQIsQcEUQC47MqLNHog==} dependencies: - '@react-native-community/cli-tools': 9.2.1 + '@react-native-community/cli-tools': 10.1.1 + chalk: 4.1.2 cosmiconfig: 5.2.1 deepmerge: 3.3.0 glob: 7.2.3 - joi: 17.7.0 + joi: 17.8.3 transitivePeerDependencies: - encoding - /@react-native-community/cli-debugger-ui/9.0.0: - resolution: {integrity: sha512-7hH05ZwU9Tp0yS6xJW0bqcZPVt0YCK7gwj7gnRu1jDNN2kughf6Lg0Ys29rAvtZ7VO1PK5c1O+zs7yFnylQDUA==} + /@react-native-community/cli-debugger-ui/10.0.0: + resolution: {integrity: sha512-8UKLcvpSNxnUTRy8CkCl27GGLqZunQ9ncGYhSrWyKrU9SWBJJGeZwi2k2KaoJi5FvF2+cD0t8z8cU6lsq2ZZmA==} dependencies: serve-static: 1.15.0 transitivePeerDependencies: - supports-color - /@react-native-community/cli-doctor/9.3.0: - resolution: {integrity: sha512-/fiuG2eDGC2/OrXMOWI5ifq4X1gdYTQhvW2m0TT5Lk1LuFiZsbTCp1lR+XILKekuTvmYNjEGdVpeDpdIWlXdEA==} + /@react-native-community/cli-doctor/10.2.0: + resolution: {integrity: sha512-yLxJazUmNSPslHxeeev0gLvsK0nQan8BmGWbtqPz2WwbIbD89vbytC7G96OxiQXr46iWEWAwEJiTTdgA7jlA5Q==} dependencies: - '@react-native-community/cli-config': 9.2.1 - '@react-native-community/cli-platform-ios': 9.3.0 - '@react-native-community/cli-tools': 9.2.1 + '@react-native-community/cli-config': 10.1.1 + '@react-native-community/cli-platform-ios': 10.2.0 + '@react-native-community/cli-tools': 10.1.1 chalk: 4.1.2 command-exists: 1.2.9 envinfo: 7.8.1 @@ -5273,47 +6033,43 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-hermes/9.3.1: - resolution: {integrity: sha512-Mq4PK8m5YqIdaVq5IdRfp4qK09aVO+aiCtd6vjzjNUgk1+1X5cgUqV6L65h4N+TFJYJHcp2AnB+ik1FAYXvYPQ==} + /@react-native-community/cli-hermes/10.2.0: + resolution: {integrity: sha512-urfmvNeR8IiO/Sd92UU3xPO+/qI2lwCWQnxOkWaU/i2EITFekE47MD6MZrfVulRVYRi5cuaFqKZO/ccOdOB/vQ==} dependencies: - '@react-native-community/cli-platform-android': 9.3.1 - '@react-native-community/cli-tools': 9.2.1 + '@react-native-community/cli-platform-android': 10.2.0 + '@react-native-community/cli-tools': 10.1.1 chalk: 4.1.2 hermes-profile-transformer: 0.0.6 ip: 1.1.8 transitivePeerDependencies: - encoding - /@react-native-community/cli-platform-android/9.2.1: - resolution: {integrity: sha512-VamCZ8nido3Q3Orhj6pBIx48itORNPLJ7iTfy3nucD1qISEDih3DOzCaQCtmqdEBgUkNkNl0O+cKgq5A3th3Zg==} + /@react-native-community/cli-platform-android/10.1.3: + resolution: {integrity: sha512-8YZEpBL6yd9l4CIoFcLOgrV8x2GDujdqrdWrNsNERDAbsiFwqAQvfjyyb57GAZVuEPEJCoqUlGlMCwOh3XQb9A==} dependencies: - '@react-native-community/cli-tools': 9.2.1 + '@react-native-community/cli-tools': 10.1.1 chalk: 4.1.2 execa: 1.0.0 - fs-extra: 8.1.0 glob: 7.2.3 logkitty: 0.7.1 - slash: 3.0.0 transitivePeerDependencies: - encoding - /@react-native-community/cli-platform-android/9.3.1: - resolution: {integrity: sha512-m0bQ6Twewl7OEZoVf79I2GZmsDqh+Gh0bxfxWgwxobsKDxLx8/RNItAo1lVtTCgzuCR75cX4EEO8idIF9jYhew==} + /@react-native-community/cli-platform-android/10.2.0: + resolution: {integrity: sha512-CBenYwGxwFdObZTn1lgxWtMGA5ms2G/ALQhkS+XTAD7KHDrCxFF9yT/fnAjFZKM6vX/1TqGI1RflruXih3kAhw==} dependencies: - '@react-native-community/cli-tools': 9.2.1 + '@react-native-community/cli-tools': 10.1.1 chalk: 4.1.2 execa: 1.0.0 - fs-extra: 8.1.0 glob: 7.2.3 logkitty: 0.7.1 - slash: 3.0.0 transitivePeerDependencies: - encoding - /@react-native-community/cli-platform-ios/9.2.1: - resolution: {integrity: sha512-dEgvkI6CFgPk3vs8IOR0toKVUjIFwe4AsXFvWWJL5qhrIzW9E5Owi0zPkSvzXsMlfYMbVX0COfVIK539ZxguSg==} + /@react-native-community/cli-platform-ios/10.1.1: + resolution: {integrity: sha512-EB9/L8j1LqrqyfJtLRixU+d8FIP6Pr83rEgUgXgya/u8wk3h/bvX70w+Ff2skwjdPLr5dLUQ/n5KFX4r3bsNmA==} dependencies: - '@react-native-community/cli-tools': 9.2.1 + '@react-native-community/cli-tools': 10.1.1 chalk: 4.1.2 execa: 1.0.0 glob: 7.2.3 @@ -5321,29 +6077,31 @@ packages: transitivePeerDependencies: - encoding - /@react-native-community/cli-platform-ios/9.3.0: - resolution: {integrity: sha512-nihTX53BhF2Q8p4B67oG3RGe1XwggoGBrMb6vXdcu2aN0WeXJOXdBLgR900DAA1O8g7oy1Sudu6we+JsVTKnjw==} + /@react-native-community/cli-platform-ios/10.2.0: + resolution: {integrity: sha512-hIPK3iL/mL+0ChXmQ9uqqzNOKA48H+TAzg+hrxQLll/6dNMxDeK9/wZpktcsh8w+CyhqzKqVernGcQs7tPeKGw==} dependencies: - '@react-native-community/cli-tools': 9.2.1 + '@react-native-community/cli-tools': 10.1.1 chalk: 4.1.2 execa: 1.0.0 + fast-xml-parser: 4.1.3 glob: 7.2.3 ora: 5.4.1 transitivePeerDependencies: - encoding - /@react-native-community/cli-plugin-metro/9.2.1: - resolution: {integrity: sha512-byBGBH6jDfUvcHGFA45W/sDwMlliv7flJ8Ns9foCh3VsIeYYPoDjjK7SawE9cPqRdMAD4SY7EVwqJnOtRbwLiQ==} + /@react-native-community/cli-plugin-metro/10.2.0: + resolution: {integrity: sha512-9eiJrKYuauEDkQLCrjJUh7tS9T0oaMQqVUSSSuyDG6du7HQcfaR4mSf21wK75jvhKiwcQLpsFmMdctAb+0v+Cg==} dependencies: - '@react-native-community/cli-server-api': 9.2.1 - '@react-native-community/cli-tools': 9.2.1 + '@react-native-community/cli-server-api': 10.1.1 + '@react-native-community/cli-tools': 10.1.1 chalk: 4.1.2 - metro: 0.72.3 - metro-config: 0.72.3 - metro-core: 0.72.3 - metro-react-native-babel-transformer: 0.72.3 - metro-resolver: 0.72.3 - metro-runtime: 0.72.3 + execa: 1.0.0 + metro: 0.73.8 + metro-config: 0.73.8 + metro-core: 0.73.8 + metro-react-native-babel-transformer: 0.73.8 + metro-resolver: 0.73.8 + metro-runtime: 0.73.8 readline: 1.3.0 transitivePeerDependencies: - bufferutil @@ -5351,11 +6109,11 @@ packages: - supports-color - utf-8-validate - /@react-native-community/cli-server-api/9.2.1: - resolution: {integrity: sha512-EI+9MUxEbWBQhWw2PkhejXfkcRqPl+58+whlXJvKHiiUd7oVbewFs0uLW0yZffUutt4FGx6Uh88JWEgwOzAdkw==} + /@react-native-community/cli-server-api/10.1.1: + resolution: {integrity: sha512-NZDo/wh4zlm8as31UEBno2bui8+ufzsZV+KN7QjEJWEM0levzBtxaD+4je0OpfhRIIkhaRm2gl/vVf7OYAzg4g==} dependencies: - '@react-native-community/cli-debugger-ui': 9.0.0 - '@react-native-community/cli-tools': 9.2.1 + '@react-native-community/cli-debugger-ui': 10.0.0 + '@react-native-community/cli-tools': 10.1.1 compression: 1.7.4 connect: 3.7.0 errorhandler: 1.5.1 @@ -5369,40 +6127,40 @@ packages: - supports-color - utf-8-validate - /@react-native-community/cli-tools/9.2.1: - resolution: {integrity: sha512-bHmL/wrKmBphz25eMtoJQgwwmeCylbPxqFJnFSbkqJPXQz3ManQ6q/gVVMqFyz7D3v+riaus/VXz3sEDa97uiQ==} + /@react-native-community/cli-tools/10.1.1: + resolution: {integrity: sha512-+FlwOnZBV+ailEzXjcD8afY2ogFEBeHOw/8+XXzMgPaquU2Zly9B+8W089tnnohO3yfiQiZqkQlElP423MY74g==} dependencies: appdirsjs: 1.2.7 chalk: 4.1.2 find-up: 5.0.0 mime: 2.6.0 - node-fetch: 2.6.8 + node-fetch: 2.6.9 open: 6.4.0 ora: 5.4.1 semver: 6.3.0 - shell-quote: 1.7.4 + shell-quote: 1.8.0 transitivePeerDependencies: - encoding - /@react-native-community/cli-types/9.1.0: - resolution: {integrity: sha512-KDybF9XHvafLEILsbiKwz5Iobd+gxRaPyn4zSaAerBxedug4er5VUWa8Szy+2GeYKZzMh/gsb1o9lCToUwdT/g==} + /@react-native-community/cli-types/10.0.0: + resolution: {integrity: sha512-31oUM6/rFBZQfSmDQsT1DX/5fjqfxg7sf2u8kTPJK7rXVya5SRpAMaCXsPAG0omsmJxXt+J9HxUi3Ic+5Ux5Iw==} dependencies: - joi: 17.7.0 + joi: 17.8.3 - /@react-native-community/cli/9.2.1: - resolution: {integrity: sha512-feMYS5WXXKF4TSWnCXozHxtWq36smyhGaENXlkiRESfYZ1mnCUlPfOanNCAvNvBqdyh9d4o0HxhYKX1g9l6DCQ==} + /@react-native-community/cli/10.1.3: + resolution: {integrity: sha512-kzh6bYLGN1q1q0IiczKSP1LTrovFeVzppYRTKohPI9VdyZwp7b5JOgaQMB/Ijtwm3MxBDrZgV9AveH/eUmUcKQ==} engines: {node: '>=14'} hasBin: true dependencies: - '@react-native-community/cli-clean': 9.2.1 - '@react-native-community/cli-config': 9.2.1 - '@react-native-community/cli-debugger-ui': 9.0.0 - '@react-native-community/cli-doctor': 9.3.0 - '@react-native-community/cli-hermes': 9.3.1 - '@react-native-community/cli-plugin-metro': 9.2.1 - '@react-native-community/cli-server-api': 9.2.1 - '@react-native-community/cli-tools': 9.2.1 - '@react-native-community/cli-types': 9.1.0 + '@react-native-community/cli-clean': 10.1.1 + '@react-native-community/cli-config': 10.1.1 + '@react-native-community/cli-debugger-ui': 10.0.0 + '@react-native-community/cli-doctor': 10.2.0 + '@react-native-community/cli-hermes': 10.2.0 + '@react-native-community/cli-plugin-metro': 10.2.0 + '@react-native-community/cli-server-api': 10.1.1 + '@react-native-community/cli-tools': 10.1.1 + '@react-native-community/cli-types': 10.0.0 chalk: 4.1.2 commander: 9.5.0 execa: 1.0.0 @@ -5417,31 +6175,27 @@ packages: - supports-color - utf-8-validate - /@react-native-masked-view/masked-view/0.2.8_tj3nonr5gneraukzjkxpsiy7yu: + /@react-native-masked-view/masked-view/0.2.8_yqouayos4dnow7nnkhah4yzuzq: resolution: {integrity: sha512-+1holBPDF1yi/y0uc1WB6lA5tSNHhM7PpTMapT3ypvSnKQ9+C6sy/zfjxNxRA/llBQ1Ci6f94EaK56UCKs5lTA==} peerDependencies: react: '>=16' react-native: '>=0.57' dependencies: - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 dev: false /@react-native/assets/1.0.0: resolution: {integrity: sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ==} - /@react-native/normalize-color/2.0.0: - resolution: {integrity: sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw==} - /@react-native/normalize-color/2.1.0: resolution: {integrity: sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA==} - dev: false /@react-native/polyfills/2.0.0: resolution: {integrity: sha512-K0aGNn1TjalKj+65D7ycc1//H9roAQ51GJVk5ZJQFb2teECGmzd86bYDC0aYdbRf7gtovescq4Zt6FR0tgXiHQ==} - /@react-navigation/bottom-tabs/6.5.4_tzhjy2gc5kvqqitykreeetpfsq: - resolution: {integrity: sha512-C2Tf+SsO9zc+p/MKUkILso8Dw4KTIscXPi7YhdepyZbM8ZYMGfnZKzffGjLFlLhQXtsFQQuHMelD8sIStTkgyQ==} + /@react-navigation/bottom-tabs/6.5.7_lzeolizq5fdjozeb3mtrlbatoi: + resolution: {integrity: sha512-9oZYyRu2z7+1pr2dX5V54rHFPmlj4ztwQxFe85zwpnGcPtGIsXj7VCIdlHnjRHJBBFCszvJGQpYY6/G2+DfD+A==} peerDependencies: '@react-navigation/native': ^6.0.0 react: '*' @@ -5449,32 +6203,32 @@ packages: react-native-safe-area-context: '>= 3.0.0' react-native-screens: '>= 3.0.0' dependencies: - '@react-navigation/elements': 1.3.14_tyo4vetelyebz5cucognw6udfm - '@react-navigation/native': 6.1.3_tj3nonr5gneraukzjkxpsiy7yu + '@react-navigation/elements': 1.3.17_3q57rrzrqjmhzcnf6o45kky2ma + '@react-navigation/native': 6.1.6_yqouayos4dnow7nnkhah4yzuzq color: 4.2.3 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 - react-native-safe-area-context: 4.5.0_tj3nonr5gneraukzjkxpsiy7yu - react-native-screens: 3.19.0_tj3nonr5gneraukzjkxpsiy7yu + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 + react-native-safe-area-context: 4.5.0_yqouayos4dnow7nnkhah4yzuzq + react-native-screens: 3.20.0_yqouayos4dnow7nnkhah4yzuzq warn-once: 0.1.1 dev: false - /@react-navigation/core/6.4.6_react@18.1.0: - resolution: {integrity: sha512-6zaAgUT5k4vhJlddUk2l52RZyMkMelHdrRv1cL57ALi2RZzERdgmbiMKhJerxFLn9S8E3PUe8vwxHzjHOZKG4w==} + /@react-navigation/core/6.4.8_react@18.2.0: + resolution: {integrity: sha512-klZ9Mcf/P2j+5cHMoGyIeurEzyBM2Uq9+NoSFrF6sdV5iCWHLFhrCXuhbBiQ5wVLCKf4lavlkd/DDs47PXs9RQ==} peerDependencies: react: '*' dependencies: - '@react-navigation/routers': 6.1.6 + '@react-navigation/routers': 6.1.8 escape-string-regexp: 4.0.0 nanoid: 3.3.4 query-string: 7.1.3 - react: 18.1.0 + react: 18.2.0 react-is: 16.13.1 use-latest-callback: 0.1.5 dev: false - /@react-navigation/drawer/6.5.8_5pbm2y6oxn4wiaxvhnj4nykkku: - resolution: {integrity: sha512-24okwc1gVJex+NMwau1QfxIRUDfFvdbnwFS/N0bCUXDVu8bqsMeYA00C3xwCpvdRmANbBH4rFRniNbJLAvD4Jg==} + /@react-navigation/drawer/6.6.2_7vhdhx5mqw5r775ehb5p4uprq4: + resolution: {integrity: sha512-6qt4guBdz7bkdo/8BLSCcFNdQdSPYyNn05D9cD+VCY3mGThSiD8bRiP9ju+64im7LsSU+bNWXaP8RxA/FtTVQg==} peerDependencies: '@react-navigation/native': ^6.0.0 react: '*' @@ -5484,54 +6238,54 @@ packages: react-native-safe-area-context: '>= 3.0.0' react-native-screens: '>= 3.0.0' dependencies: - '@react-navigation/elements': 1.3.14_tyo4vetelyebz5cucognw6udfm - '@react-navigation/native': 6.1.3_tj3nonr5gneraukzjkxpsiy7yu + '@react-navigation/elements': 1.3.17_3q57rrzrqjmhzcnf6o45kky2ma + '@react-navigation/native': 6.1.6_yqouayos4dnow7nnkhah4yzuzq color: 4.2.3 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 - react-native-gesture-handler: 2.9.0_tj3nonr5gneraukzjkxpsiy7yu - react-native-reanimated: 2.14.4_tj3nonr5gneraukzjkxpsiy7yu - react-native-safe-area-context: 4.5.0_tj3nonr5gneraukzjkxpsiy7yu - react-native-screens: 3.19.0_tj3nonr5gneraukzjkxpsiy7yu + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 + react-native-gesture-handler: 2.9.0_yqouayos4dnow7nnkhah4yzuzq + react-native-reanimated: 2.14.4_yqouayos4dnow7nnkhah4yzuzq + react-native-safe-area-context: 4.5.0_yqouayos4dnow7nnkhah4yzuzq + react-native-screens: 3.20.0_yqouayos4dnow7nnkhah4yzuzq warn-once: 0.1.1 dev: false - /@react-navigation/elements/1.3.14_tyo4vetelyebz5cucognw6udfm: - resolution: {integrity: sha512-RBbPhYq+KNFPAkWPaHB9gypq0jTGp/0fkMwRLToJ8jkLtWG4LV+JoQ/erFQnVARkR3Q807n0VnES15EYP4ITMQ==} + /@react-navigation/elements/1.3.17_3q57rrzrqjmhzcnf6o45kky2ma: + resolution: {integrity: sha512-sui8AzHm6TxeEvWT/NEXlz3egYvCUog4tlXA4Xlb2Vxvy3purVXDq/XsM56lJl344U5Aj/jDzkVanOTMWyk4UA==} peerDependencies: '@react-navigation/native': ^6.0.0 react: '*' react-native: '*' react-native-safe-area-context: '>= 3.0.0' dependencies: - '@react-navigation/native': 6.1.3_tj3nonr5gneraukzjkxpsiy7yu - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 - react-native-safe-area-context: 4.5.0_tj3nonr5gneraukzjkxpsiy7yu + '@react-navigation/native': 6.1.6_yqouayos4dnow7nnkhah4yzuzq + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 + react-native-safe-area-context: 4.5.0_yqouayos4dnow7nnkhah4yzuzq dev: false - /@react-navigation/native/6.1.3_tj3nonr5gneraukzjkxpsiy7yu: - resolution: {integrity: sha512-DB5FyG6aqGfcjjVozljF5NEkjWaSymIbQHfWwsjL0YrvC1gfc7E53QXDOjxZ/wfbCo8qZs8RIC/LAgclP2YK/w==} + /@react-navigation/native/6.1.6_yqouayos4dnow7nnkhah4yzuzq: + resolution: {integrity: sha512-14PmSy4JR8HHEk04QkxQ0ZLuqtiQfb4BV9kkMXD2/jI4TZ+yc43OnO6fQ2o9wm+Bq8pY3DxyerC2AjNUz+oH7Q==} peerDependencies: react: '*' react-native: '*' dependencies: - '@react-navigation/core': 6.4.6_react@18.1.0 + '@react-navigation/core': 6.4.8_react@18.2.0 escape-string-regexp: 4.0.0 fast-deep-equal: 3.1.3 nanoid: 3.3.4 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 dev: false - /@react-navigation/routers/6.1.6: - resolution: {integrity: sha512-Z5DeCW3pUvMafbU9Cjy1qJYC2Bvl8iy3+PfsB0DsAwQ6zZ3WAXW5FTMX4Gb9H+Jg6qHWGbMFFwlYpS3UJ3tlVQ==} + /@react-navigation/routers/6.1.8: + resolution: {integrity: sha512-CEge+ZLhb1HBrSvv4RwOol7EKLW1QoqVIQlE9TN5MpxS/+VoQvP+cLbuz0Op53/iJfYhtXRFd1ZAd3RTRqto9w==} dependencies: nanoid: 3.3.4 dev: false - /@react-navigation/stack/6.3.12_tvuqzzu4d6qsmbauwbo7nuei7e: - resolution: {integrity: sha512-sDclO/EflZUbfxZZlz5fk3A0wfegeCOEKGznP9n53s+JrDJL2Dc24Gufg56ENLNRX3CiE1KzsaM4SQLJYf/zsA==} + /@react-navigation/stack/6.3.16_pf4j4f7edywtcmcmtmj6rq4iri: + resolution: {integrity: sha512-KTOn9cNuZ6p154Htbl2DiR95Wl+c7niLPRiGs7gjOkyVDGiaGQF9ODNQTYBDE1OxZGHe/EyYc6T2CbmiItLWDg==} peerDependencies: '@react-navigation/native': ^6.0.0 react: '*' @@ -5540,14 +6294,14 @@ packages: react-native-safe-area-context: '>= 3.0.0' react-native-screens: '>= 3.0.0' dependencies: - '@react-navigation/elements': 1.3.14_tyo4vetelyebz5cucognw6udfm - '@react-navigation/native': 6.1.3_tj3nonr5gneraukzjkxpsiy7yu + '@react-navigation/elements': 1.3.17_3q57rrzrqjmhzcnf6o45kky2ma + '@react-navigation/native': 6.1.6_yqouayos4dnow7nnkhah4yzuzq color: 4.2.3 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 - react-native-gesture-handler: 2.9.0_tj3nonr5gneraukzjkxpsiy7yu - react-native-safe-area-context: 4.5.0_tj3nonr5gneraukzjkxpsiy7yu - react-native-screens: 3.19.0_tj3nonr5gneraukzjkxpsiy7yu + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 + react-native-gesture-handler: 2.9.0_yqouayos4dnow7nnkhah4yzuzq + react-native-safe-area-context: 4.5.0_yqouayos4dnow7nnkhah4yzuzq + react-native-screens: 3.20.0_yqouayos4dnow7nnkhah4yzuzq warn-once: 0.1.1 dev: false @@ -5688,7 +6442,7 @@ packages: chalk: 4.1.2 dev: true - /@rnx-kit/metro-config/1.3.5_tj3nonr5gneraukzjkxpsiy7yu: + /@rnx-kit/metro-config/1.3.5_yqouayos4dnow7nnkhah4yzuzq: resolution: {integrity: sha512-8KI7sIaj1ExpH2Et37CXwy+ajdqRqXloGbHYSE4RYvda+PSJ/guU9+moY5NXaRujJtwOFA8qk3/nDvx2suMDeA==} peerDependencies: metro-config: '>=0.58.0' @@ -5700,8 +6454,8 @@ packages: '@rnx-kit/console': 1.0.11 '@rnx-kit/tools-node': 1.3.1 '@rnx-kit/tools-workspaces': 0.1.3 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 transitivePeerDependencies: - '@babel/core' - '@babel/plugin-transform-typescript' @@ -5755,17 +6509,6 @@ packages: /@rspc/client/0.0.0-main-7c0a67c1: resolution: {integrity: sha512-PpFkqhp8KlfdFSa8f/Ff5nOg8jhHNq12q8p0ZLYU/1K68JVPQRIk432zpXg48QT/MQbMrogx/PF5E7refhEtvw==} - /@rspc/react/0.0.0-main-7c0a67c1_6niuqkvdadibsmemv5phcmgdcq: - resolution: {integrity: sha512-SpsYJ+k/wXUCBDwVuu0WYOVRnrYzQaXyjHGIy/bSVphtYkMhJuZ3UlP2/YxMX4hj4wlDpsTZECzvez5D1vX+pw==} - peerDependencies: - '@tanstack/react-query': ^4.8.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@rspc/client': 0.0.0-main-7c0a67c1 - '@tanstack/react-query': 4.24.4_tj3nonr5gneraukzjkxpsiy7yu - react: 18.1.0 - dev: false - /@rspc/react/0.0.0-main-7c0a67c1_ews3p2w6ewwkufep3giz5zum7m: resolution: {integrity: sha512-SpsYJ+k/wXUCBDwVuu0WYOVRnrYzQaXyjHGIy/bSVphtYkMhJuZ3UlP2/YxMX4hj4wlDpsTZECzvez5D1vX+pw==} peerDependencies: @@ -5787,6 +6530,17 @@ packages: '@tanstack/react-query': 4.22.0 dev: false + /@rspc/react/0.0.0-main-7c0a67c1_xytdzyysqpeqv6tutfmk3i4niq: + resolution: {integrity: sha512-SpsYJ+k/wXUCBDwVuu0WYOVRnrYzQaXyjHGIy/bSVphtYkMhJuZ3UlP2/YxMX4hj4wlDpsTZECzvez5D1vX+pw==} + peerDependencies: + '@tanstack/react-query': ^4.8.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + '@rspc/client': 0.0.0-main-7c0a67c1 + '@tanstack/react-query': 4.26.1_yqouayos4dnow7nnkhah4yzuzq + react: 18.2.0 + dev: false + /@rspc/tauri/0.0.0-main-7c0a67c1_@tauri-apps+api@1.2.0: resolution: {integrity: sha512-GnTAGcVV1FWp4Cs5n3wK0x/etrOTGbUHHq1M2sqLiG2Nfq2ej8bI5e5HTVhDgXD+PCGN38zYV3u8rEYlxNAMpA==} peerDependencies: @@ -5845,16 +6599,16 @@ packages: tslib: 1.14.1 dev: false - /@shopify/flash-list/1.4.1_tj3nonr5gneraukzjkxpsiy7yu: - resolution: {integrity: sha512-yM5dlhqolO/R8FKomqCrSYz0Cc82vJDikxhbu1CXXGp3rPvo/ceP9jJyKueW96SXHsn/87fcSq2BjztWjlp74Q==} + /@shopify/flash-list/1.4.0_yqouayos4dnow7nnkhah4yzuzq: + resolution: {integrity: sha512-PvPOyk353LuETFnNA038+QaJsAFlCQ2TYC7DHP3YnYqTX72g2BM6qLoLsPaptXKuoXX+dinOo0MbEm7HDjTy1g==} peerDependencies: '@babel/runtime': '*' react: '*' react-native: '*' dependencies: - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 - recyclerlistview: 4.2.0_tj3nonr5gneraukzjkxpsiy7yu + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 + recyclerlistview: 4.2.0_yqouayos4dnow7nnkhah4yzuzq tslib: 2.4.0 dev: false @@ -5869,14 +6623,24 @@ packages: /@sideway/pinpoint/2.0.0: resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - /@sinclair/typebox/0.24.51: - resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==} + /@sinclair/typebox/0.25.24: + resolution: {integrity: sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==} /@sindresorhus/is/0.14.0: resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} dev: true + /@sinonjs/commons/2.0.0: + resolution: {integrity: sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==} + dependencies: + type-detect: 4.0.8 + + /@sinonjs/fake-timers/10.0.2: + resolution: {integrity: sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==} + dependencies: + '@sinonjs/commons': 2.0.0 + /@splinetool/react-spline/2.2.5_3ok4u2chf7465ntwlp4i32bwcu: resolution: {integrity: sha512-eAD6+GteOT9S7Z3OdsT/6o6WNYk5NLx48zmHXathdNVdfW/P3npTxEGzEhiM+aMsf2+HbRZx0pX0WHt59HDjlg==} peerDependencies: @@ -6918,7 +7682,7 @@ packages: optional: true dependencies: '@babel/core': 7.20.12 - '@babel/generator': 7.20.7 + '@babel/generator': 7.20.14 '@babel/parser': 7.20.7 '@babel/plugin-transform-react-jsx': 7.20.7_@babel+core@7.20.12 '@babel/preset-env': 7.20.2_@babel+core@7.20.12 @@ -7088,7 +7852,7 @@ packages: /@storybook/mdx1-csf/0.0.1_@babel+core@7.20.12: resolution: {integrity: sha512-4biZIWWzoWlCarMZmTpqcJNgo/RBesYZwGFbQeXiGYsswuvfWARZnW9RE9aUEMZ4XPn7B1N3EKkWcdcWe/K2tg==} dependencies: - '@babel/generator': 7.20.7 + '@babel/generator': 7.20.14 '@babel/parser': 7.20.7 '@babel/preset-env': 7.20.2_@babel+core@7.20.12 '@babel/types': 7.20.7 @@ -7619,6 +8383,10 @@ packages: resolution: {integrity: sha512-9dqjv9eeB6VHN7lD3cLo16ZAjfjCsdXetSAD5+VyKqLUvcKTL0CklGQRJu+bWzdrS69R6Ea4UZo8obHYZnG6aA==} dev: false + /@tanstack/query-core/4.26.1: + resolution: {integrity: sha512-Zrx2pVQUP4ndnsu6+K/m8zerXSVY8QM+YSbxA1/jbBY21GeCd5oKfYl92oXPK0hPEUtoNuunIdiq0ZMqLos+Zg==} + dev: false + /@tanstack/react-query-devtools/4.22.0_pkeil6ml7pq7xvil3imldjs2sa: resolution: {integrity: sha512-YeYFBnfqvb+ZlA0IiJqiHNNSzepNhI1p2o9i8NlhQli9+Zrn230M47OBaBUs8qr3DD1dC2zGB1Dis50Ktz8gAA==} peerDependencies: @@ -7685,8 +8453,8 @@ packages: use-sync-external-store: 1.2.0_react@18.2.0 dev: false - /@tanstack/react-query/4.24.4_tj3nonr5gneraukzjkxpsiy7yu: - resolution: {integrity: sha512-RpaS/3T/a3pHuZJbIAzAYRu+1nkp+/enr9hfRXDS/mojwx567UiMksoqW4wUFWlwIvWTXyhot2nbIipTKEg55Q==} + /@tanstack/react-query/4.26.1_yqouayos4dnow7nnkhah4yzuzq: + resolution: {integrity: sha512-i3dnz4TOARGIXrXQ5P7S25Zfi4noii/bxhcwPurh2nrf5EUCcAt/95TB2HSmMweUBx206yIMWUMEQ7ptd6zwDg==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -7697,10 +8465,10 @@ packages: react-native: optional: true dependencies: - '@tanstack/query-core': 4.24.4 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 - use-sync-external-store: 1.2.0_react@18.1.0 + '@tanstack/query-core': 4.26.1 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 dev: false /@tanstack/react-virtual/3.0.0-beta.18_react@18.2.0: @@ -8111,6 +8879,9 @@ packages: /@types/node/18.11.18: resolution: {integrity: sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==} + /@types/node/18.15.1: + resolution: {integrity: sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw==} + /@types/normalize-package-data/2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} dev: true @@ -8163,12 +8934,6 @@ packages: '@types/react': 18.0.27 dev: true - /@types/react-native/0.70.9: - resolution: {integrity: sha512-0C6sIo13ztzM2llaWdTq0Vpscx3VdU0T8F45kEurWv3l5n+BHm/Mkr8Z+N29eXDYGhTvCz5y2jegB8JyiVa5kw==} - dependencies: - '@types/react': 18.0.27 - dev: true - /@types/react-router-dom/5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: @@ -8215,6 +8980,9 @@ packages: resolution: {integrity: sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==} dev: true + /@types/stack-utils/2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + /@types/strip-bom/3.0.0: resolution: {integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==} dev: true @@ -8277,8 +9045,8 @@ packages: dependencies: '@types/yargs-parser': 21.0.0 - /@types/yargs/17.0.20: - resolution: {integrity: sha512-eknWrTHofQuPk2iuqDm1waA7V6xPlbgBoaaXEgYkClhLOnB0TtbW+srJaOToAgawPxPlHQzwypFA2bhZaUGP5A==} + /@types/yargs/17.0.22: + resolution: {integrity: sha512-pet5WJ9U8yPVRhkwuEIp5ktAeAqRZOq4UdAyWLWzxbtpyXnzbtLdKiXAjJzi/KLmPGS9wk86lUFWZFN6sISo4g==} dependencies: '@types/yargs-parser': 21.0.0 @@ -8441,7 +9209,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.20.12 magic-string: 0.26.7 react-refresh: 0.14.0 - vite: 4.1.4_sass@1.57.1 + vite: 4.1.4_ovmyjmuuyckt3r3gpaexj2onji transitivePeerDependencies: - supports-color @@ -8978,7 +9746,6 @@ packages: /ansi-styles/5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - dev: true /ansi-to-html/0.6.15: resolution: {integrity: sha512-28ijx2aHJGdzbs+O5SNQF65r6rrKYnkuwTYm8lZlChuoJ9P1vVzIpWO20sQTqTPDXYp6NFwk326vApTtLVFXpQ==} @@ -9227,7 +9994,7 @@ packages: resolution: {integrity: sha512-O0yuUDnZeQDL+ncNGlJ78BiO4jnYI3bvMsD5prT0/nsgijG/LpNBIr63gTjVTNsiGkgQhiyCShTgxt8oXOrklA==} engines: {node: '>=4'} dependencies: - tslib: 2.4.1 + tslib: 2.5.0 /ast-types/0.7.8: resolution: {integrity: sha512-RIOpVnVlltB6PcBJ5BMLx+H+6JJ/zjDGU0t7f0L6c2M1dqcK92VQopLBlPQ9R80AVXelfqYgjcPLtHtDbNFg0Q==} @@ -9319,12 +10086,12 @@ packages: - debug dev: false - /babel-core/7.0.0-bridge.0_@babel+core@7.20.12: + /babel-core/7.0.0-bridge.0_@babel+core@7.21.0: resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 /babel-loader/8.3.0_@babel+core@7.20.12: resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} @@ -9474,6 +10241,18 @@ packages: transitivePeerDependencies: - supports-color + /babel-plugin-polyfill-corejs2/0.3.3_@babel+core@7.21.0: + resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.20.10 + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + /babel-plugin-polyfill-corejs3/0.1.7_@babel+core@7.20.12: resolution: {integrity: sha512-u+gbS9bbPhZWEeyy1oR/YaaSpod/KDT07arZHb80aTpl8H5ZBq+uN1nN9/xtX7jQyfLdPfoqI4Rue/MQSWJquw==} peerDependencies: @@ -9508,6 +10287,17 @@ packages: transitivePeerDependencies: - supports-color + /babel-plugin-polyfill-corejs3/0.6.0_@babel+core@7.21.0: + resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 + core-js-compat: 3.27.2 + transitivePeerDependencies: + - supports-color + /babel-plugin-polyfill-regenerator/0.4.1: resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: @@ -9528,6 +10318,16 @@ packages: transitivePeerDependencies: - supports-color + /babel-plugin-polyfill-regenerator/0.4.1_@babel+core@7.21.0: + resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.21.0 + '@babel/helper-define-polyfill-provider': 0.3.3_@babel+core@7.21.0 + transitivePeerDependencies: + - supports-color + /babel-plugin-react-docgen/4.2.1: resolution: {integrity: sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==} dependencies: @@ -9545,8 +10345,8 @@ packages: /babel-plugin-syntax-trailing-function-commas/7.0.0-beta.0: resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} - /babel-preset-expo/9.2.2: - resolution: {integrity: sha512-69cSPObZWFz0AaUT6IhCu2VzPVTICUtXzhX5ecoDttFe+9wb9yMV8m7rBNZptJQ3wtiKB5iEL7/wvtKygPz/mQ==} + /babel-preset-expo/9.3.0: + resolution: {integrity: sha512-cIz+5TVBkcZgtfpTyFPo1peswr2dvQj2VIwdj5vY37/zESsYBHfaZ+u/A11yb1WnuZHcYD/ZoSLNwmWr20jp4Q==} dependencies: '@babel/plugin-proposal-decorators': 7.20.7 '@babel/plugin-proposal-object-rest-spread': 7.20.7 @@ -9554,44 +10354,44 @@ packages: '@babel/preset-env': 7.20.2 babel-plugin-module-resolver: 4.1.0 babel-plugin-react-native-web: 0.18.10 - metro-react-native-babel-preset: 0.72.3 + metro-react-native-babel-preset: 0.73.7 transitivePeerDependencies: - '@babel/core' - supports-color dev: false - /babel-preset-fbjs/3.4.0_@babel+core@7.20.12: + /babel-preset-fbjs/3.4.0_@babel+core@7.21.0: resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.20.12 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.20.12 - '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.20.12 - '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-block-scoping': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.20.12 - '@babel/plugin-transform-for-of': 7.18.8_@babel+core@7.20.12 - '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-modules-commonjs': 7.20.11_@babel+core@7.20.12 - '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-react-jsx': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.21.0 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-syntax-jsx': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-block-scoped-functions': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-flow-strip-types': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-for-of': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-member-expression-literals': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.21.0 + '@babel/plugin-transform-object-super': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-property-literals': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-react-jsx': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.0 babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 transitivePeerDependencies: - supports-color @@ -9670,7 +10470,7 @@ packages: dependencies: buffer: 5.7.1 inherits: 2.0.4 - readable-stream: 3.6.0 + readable-stream: 3.6.2 /bluebird/3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} @@ -10227,6 +11027,11 @@ packages: /ci-info/3.7.1: resolution: {integrity: sha512-4jYS4MOAaCIStSRwiuxc4B8MYhIe676yO1sYGzARnjXkWpmzZMMYxY6zu8WYWDhSuth5zhrQ1rhNSibyyvv4/w==} engines: {node: '>=8'} + dev: false + + /ci-info/3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} /cipher-base/1.0.4: resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} @@ -10255,6 +11060,17 @@ packages: typescript: 4.9.4 dev: false + /class-variance-authority/0.4.0_typescript@4.9.5: + resolution: {integrity: sha512-74enNN8O9ZNieycac/y8FxqgyzZhZbxmCitAtAeUrLPlxjSd5zA7LfpprmxEcOmQBnaGs5hYhiSGnJ0mqrtBLQ==} + peerDependencies: + typescript: '>= 4.5.5 < 5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + typescript: 4.9.5 + dev: false + /classnames/2.3.2: resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} dev: false @@ -10341,7 +11157,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: true /clone-deep/4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} @@ -11252,6 +12067,13 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} + /deprecated-react-native-prop-types/3.0.1: + resolution: {integrity: sha512-J0jCJcsk4hMlIb7xwOZKLfMpuJn6l8UtrPEzzQV5ewz5gvKNYakhBuq9h2rWX7YwHHJZFhU5W8ye7dB9oN8VcQ==} + dependencies: + '@react-native/normalize-color': 2.1.0 + invariant: 2.2.4 + prop-types: 15.8.1 + /des.js/1.0.1: resolution: {integrity: sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==} dependencies: @@ -11714,6 +12536,10 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + /escape-string-regexp/2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + /escape-string-regexp/4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -12064,20 +12890,20 @@ packages: transitivePeerDependencies: - supports-color - /expo-application/5.0.1_expo@47.0.13: - resolution: {integrity: sha512-bThxK5zH/Lc2tkCvEXGjfM7ayvOVmPWYcWzXsMIU1RtG73TyXo4cq+73FvfDNIWn6gKS0WyMcmoPB3WXEV/jsw==} + /expo-application/5.1.1_expo@48.0.6: + resolution: {integrity: sha512-aDatTcTTCdTbHw8h4/Tq2ilc6InM5ntF9xWCJdOcnUEcglxxGphVI/lzJKBaBF6mJECA8mEOjpVg2EGxOctTwg==} peerDependencies: expo: '*' dependencies: - expo: 47.0.13 + expo: 48.0.6 dev: false - /expo-asset/8.7.0_expo@47.0.13: - resolution: {integrity: sha512-lkoNsHK6vf+outISB6/37SonXcAL6Buw0ycjiwQVFfpOBKpkQa+zw5wm1m3KwjH2txmR3xdIzcpWsJkgovYCvQ==} + /expo-asset/8.9.1_expo@48.0.6: + resolution: {integrity: sha512-ugavxA7Scn96TBdeTYQA6xtHktnk0o/0xk7nFkxJKoH/t2cZDFSB05X0BI2/LDZY4iE6xTPOYw4C4mmourWfuA==} dependencies: blueimp-md5: 2.19.0 - expo-constants: 14.0.2_expo@47.0.13 - expo-file-system: 15.1.1_expo@47.0.13 + expo-constants: 14.2.1_expo@48.0.6 + expo-file-system: 15.2.2_expo@48.0.6 invariant: 2.2.4 md5-file: 3.2.3 path-browserify: 1.0.1 @@ -12087,59 +12913,49 @@ packages: - supports-color dev: false - /expo-constants/14.0.2_expo@47.0.13: - resolution: {integrity: sha512-wzV3nrzTXTI8yG0tfas3fnqCfKV6YE+1GphEREyVDAShEB6mBInX1b6HgtpHFy2wOtnml+lPVmTCeGtjjLnZhA==} + /expo-constants/14.2.1_expo@48.0.6: + resolution: {integrity: sha512-DD5u4QmBds2U7uYo409apV7nX+XjudARcgqe7S9aRFJ/6kyftmuxvk1DpaU4X42Av8z/tfKwEpuxl+vl7HHx/Q==} peerDependencies: expo: '*' dependencies: - '@expo/config': 7.0.3 - expo: 47.0.13 + '@expo/config': 8.0.2 + expo: 48.0.6 uuid: 3.4.0 transitivePeerDependencies: - supports-color dev: false - /expo-error-recovery/4.0.1_expo@47.0.13: - resolution: {integrity: sha512-wceptnRX+N3qCSVTNbIchUFu3GmY30onRH5L66OF8HMLpAIQfrZMLxJfz7SAMJTcr3jxsJ11vSa2l2RaPKgHsQ==} - requiresBuild: true + /expo-file-system/15.2.2_expo@48.0.6: + resolution: {integrity: sha512-LFkOLcWwlmnjkURxZ3/0ukS35OswX8iuQknLHRHeyk8mUA8fpRPPelD/a1lS+yclqfqavMJmTXVKM1Nsq5XVMA==} peerDependencies: expo: '*' dependencies: - expo: 47.0.13 - dev: false - optional: true - - /expo-file-system/15.1.1_expo@47.0.13: - resolution: {integrity: sha512-MYYDKxjLo9VOkvGHqym5EOAUS+ero9O66X5zI+EXJzqNznKvnfScdXeeAaQzShmWtmLkdVDCoYFGOaTvTA1wTQ==} - peerDependencies: - expo: '*' - dependencies: - expo: 47.0.13 + expo: 48.0.6 uuid: 3.4.0 dev: false - /expo-font/11.0.1_expo@47.0.13: - resolution: {integrity: sha512-LGAIluWZfru0J0n87dzb6pwAB6TVMTEiLcsd/ktozzbn4DlN7SeQy40+ruU6bvAKCOGrnRneYbKSIOGkrd7oNg==} + /expo-font/11.1.1_expo@48.0.6: + resolution: {integrity: sha512-X+aICqYY69hiiDDtcNrjq8KutHrH2TrHuMqk0Rfq0P7hF6hMd+YefwLBNkvIrqrgmTAuqiLjMUwj2rHLqmgluw==} peerDependencies: expo: '*' dependencies: - expo: 47.0.13 + expo: 48.0.6 fontfaceobserver: 2.3.0 dev: false - /expo-keep-awake/11.0.1_expo@47.0.13: - resolution: {integrity: sha512-44ZjgLE4lnce2d40Pv8xsjMVc6R5GvgHOwZfkLYtGmgYG9TYrEJeEj5UfSeweXPL3pBFhXKfFU8xpGYMaHdP0A==} + /expo-keep-awake/12.0.1_expo@48.0.6: + resolution: {integrity: sha512-hqeCnb4033TyuZaXs93zTK7rjVJ3bywXATyMmKmKkLEsH2PKBAl/VmjlCOPQL/2Ncqz6aj7Wo//tjeJTARBD4g==} peerDependencies: expo: '*' dependencies: - expo: 47.0.13 + expo: 48.0.6 dev: false - /expo-linking/3.3.0_expo@47.0.13: - resolution: {integrity: sha512-wXPzI2kijnql2L2F6i8zP1zINTkYlcRXyh1iV3P6Bt57v6yZiiniZBnb6grJVj19LOmluNs0PYrbX1ZsHBChCg==} + /expo-linking/4.0.1_expo@48.0.6: + resolution: {integrity: sha512-geRMmKLhtaCigptRzOGW8ZZJKGl47gyu0KFtQOtGf26ELxyt/AietgQjyzF24i7cVD08TnWUJDHgWZkpRHTa7g==} dependencies: '@types/qs': 6.9.7 - expo-constants: 14.0.2_expo@47.0.13 + expo-constants: 14.2.1_expo@48.0.6 invariant: 2.2.4 qs: 6.11.0 url-parse: 1.5.10 @@ -12148,16 +12964,16 @@ packages: - supports-color dev: false - /expo-media-library/15.0.0_expo@47.0.13: - resolution: {integrity: sha512-BO17VEElQHf2kK45Vuqm4QtutWsT5X4clO8DjTp2BUNvmY+JgOTKsjPs1LIQcNaaum64u/Gfp3V4HV2a6JnHJg==} + /expo-media-library/15.2.2_expo@48.0.6: + resolution: {integrity: sha512-GebBavV9H+m0Qzoy4G7++BWmwUcddLnCee1qGYkCyHT6CvuLNhXUgC3FV9NINEwlii3HGAuCzk1auaEY60SGDA==} peerDependencies: expo: '*' dependencies: - expo: 47.0.13 + expo: 48.0.6 dev: false - /expo-modules-autolinking/1.0.2: - resolution: {integrity: sha512-skAUXERKw1gtSw8xsvft9DE0KVhBvw4dujAtgCZoG2l513fN7ds+B5+30ZVgZATMC+EjtlmjKXzhp5QS44DCFA==} + /expo-modules-autolinking/1.1.2: + resolution: {integrity: sha512-oOlkAccVnHwwR5ccvF/F/x4Omj9HWzSimMUlIVz0SVGdNBEqTPyn0L/d4uIufhyQbEWvrarqL8o5Yz11wEI0SQ==} hasBin: true dependencies: chalk: 4.1.2 @@ -12167,50 +12983,50 @@ packages: fs-extra: 9.1.0 dev: false - /expo-modules-core/1.1.1: - resolution: {integrity: sha512-+AcaYmaWphIfkBcccu65dyOhWnpOJ3+SQpoI4lI/Plg1nNjOLuBjmrdVvpiJOvkN+CqbNGsJ5Yll8LLk+C107Q==} + /expo-modules-core/1.2.4: + resolution: {integrity: sha512-AV0NCTy9O8xQqpKgX6gvsDzV1ogpCzYpGxqM85Vw1xHsOF51s7Avu7NdNjBPUZOVuDderUXAvd97dWrtefSKcA==} dependencies: compare-versions: 3.6.0 invariant: 2.2.4 dev: false - /expo-splash-screen/0.17.5_expo@47.0.13: - resolution: {integrity: sha512-ejSO78hwHXz8T9u8kh8t4r6CR4h70iBvA65gX8GK+dYxZl6/IANPbIb2VnUpND9vqfW+JnkDw+ZFst+gDnkpcQ==} + /expo-splash-screen/0.18.1_expo@48.0.6: + resolution: {integrity: sha512-1di1kuh14likGUs3fyVZWAqEMxhmdAjpmf9T8Qk5OzUa5oPEMEDYB2e2VprddWnJNBVVe/ojBDSCY8w56/LS0Q==} peerDependencies: expo: '*' dependencies: '@expo/configure-splash-screen': 0.6.0 - '@expo/prebuild-config': 5.0.7 - expo: 47.0.13 + '@expo/prebuild-config': 6.0.0 + expo: 48.0.6 transitivePeerDependencies: - encoding - expo-modules-autolinking - supports-color dev: false - /expo-status-bar/1.4.2: - resolution: {integrity: sha512-ZWjO6D4ARGYfAd3SWDD3STNudHDhyBZDZjhhseqoEmsf7bS9ykny8KKOhlzJW24qIQNPhkgdvHhaw9fQwMJy3Q==} + /expo-status-bar/1.4.4: + resolution: {integrity: sha512-5DV0hIEWgatSC3UgQuAZBoQeaS9CqeWRZ3vzBR9R/+IUD87Adbi4FGhU10nymRqFXOizGsureButGZIXPs7zEA==} dev: false - /expo/47.0.13: - resolution: {integrity: sha512-9VjjGdViCJ9NfWbUE7brkwFBDvKuA35V345vMtHFYNKoGJjXib36yitmawreMDQFv0kMTqTnzc7T2191Pod7Ng==} + /expo/48.0.6: + resolution: {integrity: sha512-ylm91v/xYjBBEqFHH+mpNyGijJgFXx4NwgKgHCIEfcAQyTZLXpGCL6teOVzAmHCCVF7EdalLl3If/+n09jOi4g==} hasBin: true dependencies: '@babel/runtime': 7.20.7 - '@expo/cli': 0.4.11_icwh4t4f22ilvzajfiepq6z62e - '@expo/config': 7.0.3 - '@expo/config-plugins': 5.0.4 + '@expo/cli': 0.6.2_6weo4dzsrefthwodkc5gdxxcii + '@expo/config': 8.0.2 + '@expo/config-plugins': 6.0.1 '@expo/vector-icons': 13.0.0 - babel-preset-expo: 9.2.2 + babel-preset-expo: 9.3.0 cross-spawn: 6.0.5 - expo-application: 5.0.1_expo@47.0.13 - expo-asset: 8.7.0_expo@47.0.13 - expo-constants: 14.0.2_expo@47.0.13 - expo-file-system: 15.1.1_expo@47.0.13 - expo-font: 11.0.1_expo@47.0.13 - expo-keep-awake: 11.0.1_expo@47.0.13 - expo-modules-autolinking: 1.0.2 - expo-modules-core: 1.1.1 + expo-application: 5.1.1_expo@48.0.6 + expo-asset: 8.9.1_expo@48.0.6 + expo-constants: 14.2.1_expo@48.0.6 + expo-file-system: 15.2.2_expo@48.0.6 + expo-font: 11.1.1_expo@48.0.6 + expo-keep-awake: 12.0.1_expo@48.0.6 + expo-modules-autolinking: 1.1.2 + expo-modules-core: 1.2.4 fbemitter: 3.0.0 getenv: 1.0.0 invariant: 2.2.4 @@ -12218,8 +13034,6 @@ packages: node-fetch: 2.6.8 pretty-format: 26.6.2 uuid: 3.4.0 - optionalDependencies: - expo-error-recovery: 4.0.1_expo@47.0.13 transitivePeerDependencies: - '@babel/core' - bluebird @@ -12352,6 +13166,12 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true + /fast-xml-parser/4.1.3: + resolution: {integrity: sha512-LsNDahCiCcJPe8NO7HijcnukHB24tKbfDDA5IILx9dmW3Frb52lhbeX6MPNUSvyGNfav2VTYpJ/OqkRoVLrh2Q==} + hasBin: true + dependencies: + strnum: 1.0.5 + /fastq/1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} dependencies: @@ -12569,8 +13389,8 @@ packages: resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /flow-parser/0.121.0: - resolution: {integrity: sha512-1gIBiWJNR0tKUNv8gZuk7l9rVX06OuLzY9AoGio7y/JT4V1IZErEMEq2TJS+PFcw/y0RshZ1J/27VfK1UQzYVg==} + /flow-parser/0.185.2: + resolution: {integrity: sha512-2hJ5ACYeJCzNtiVULov6pljKOLygy0zddoqSI1fFetM+XRPpRshFdGEijtqlamA1XwyZ+7rhryI6FQFzvtLWUQ==} engines: {node: '>=0.4.0'} /flush-write-stream/1.1.1: @@ -12750,7 +13570,7 @@ packages: dependencies: map-cache: 0.2.2 - /framer-motion/6.5.1_react@18.1.0: + /framer-motion/6.5.1_react@18.2.0: resolution: {integrity: sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==} peerDependencies: react: '>=16.8 || ^17.0.0 || ^18.0.0' @@ -12760,9 +13580,9 @@ packages: framesync: 6.0.1 hey-listen: 1.0.8 popmotion: 11.0.3 - react: 18.1.0 + react: 18.2.0 style-value-types: 5.0.0 - tslib: 2.4.1 + tslib: 2.5.0 optionalDependencies: '@emotion/is-prop-valid': 0.8.8 dev: false @@ -12770,7 +13590,7 @@ packages: /framesync/6.0.1: resolution: {integrity: sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==} dependencies: - tslib: 2.4.1 + tslib: 2.5.0 dev: false /freeport-async/2.0.0: @@ -12795,13 +13615,6 @@ packages: js-yaml: 3.14.1 dev: true - /fs-extra/1.0.0: - resolution: {integrity: sha512-VerQV6vEKuhDWD2HGOybV6v5I73syoc/cXAbKlgTC7M/oFVEtklWlp9QH2Ijw3IaWDOQcMkldSPa7zXy79Z/UQ==} - dependencies: - graceful-fs: 4.2.10 - jsonfile: 2.4.0 - klaw: 1.3.1 - /fs-extra/10.1.0: resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} engines: {node: '>=12'} @@ -13209,7 +14022,7 @@ packages: 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 dependencies: graphql: 15.8.0 - tslib: 2.4.1 + tslib: 2.5.0 dev: false /graphql/15.8.0: @@ -13482,7 +14295,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.16.1 + terser: 5.16.6 /html-tags/3.2.0: resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==} @@ -14307,6 +15120,17 @@ packages: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} dev: true + /jest-environment-node/29.5.0: + resolution: {integrity: sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.5.0 + '@jest/fake-timers': 29.5.0 + '@jest/types': 29.5.0 + '@types/node': 18.15.1 + jest-mock: 29.5.0 + jest-util: 29.5.0 + /jest-get-type/26.3.0: resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} engines: {node: '>= 10.14.2'} @@ -14334,6 +15158,20 @@ packages: - supports-color dev: true + /jest-message-util/29.5.0: + resolution: {integrity: sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.18.6 + '@jest/types': 29.5.0 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.10 + micromatch: 4.0.5 + pretty-format: 29.5.0 + slash: 3.0.0 + stack-utils: 2.0.6 + /jest-mock/27.5.1: resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} @@ -14342,6 +15180,14 @@ packages: '@types/node': 18.11.18 dev: true + /jest-mock/29.5.0: + resolution: {integrity: sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 18.15.1 + jest-util: 29.5.0 + /jest-regex-util/26.0.0: resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} engines: {node: '>= 10.14.2'} @@ -14363,7 +15209,7 @@ packages: resolution: {integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.15.1 graceful-fs: 4.2.10 /jest-util/26.6.2: @@ -14383,9 +15229,20 @@ packages: engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} dependencies: '@jest/types': 27.5.1 - '@types/node': 18.11.18 + '@types/node': 18.15.1 chalk: 4.1.2 - ci-info: 3.7.1 + ci-info: 3.8.0 + graceful-fs: 4.2.10 + picomatch: 2.3.1 + + /jest-util/29.5.0: + resolution: {integrity: sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.5.0 + '@types/node': 18.15.1 + chalk: 4.1.2 + ci-info: 3.8.0 graceful-fs: 4.2.10 picomatch: 2.3.1 @@ -14413,7 +15270,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 18.11.18 + '@types/node': 18.15.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -14421,8 +15278,8 @@ packages: resolution: {integrity: sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==} dev: false - /joi/17.7.0: - resolution: {integrity: sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg==} + /joi/17.8.3: + resolution: {integrity: sha512-q5Fn6Tj/jR8PfrLrx4fpGH4v9qM6o+vDUfD4/3vxxyg34OmKcNqYZ1qn2mpLza96S8tL0p0rIw2gOZX+/cTg9w==} dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -14459,8 +15316,8 @@ packages: dependencies: argparse: 2.0.1 - /jsc-android/250230.2.1: - resolution: {integrity: sha512-KmxeBlRjwoqCnBBKGsihFtvsBHyUFlBxJPK4FzeYcIuBfdjv6jFys44JITAgSTbQD+vIdwMEfyZklsuQX0yI1Q==} + /jsc-android/250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} /jscodeshift/0.13.1: resolution: {integrity: sha512-lGyiEbGOvmMRKgWk4vf+lUrCWO/8YR8sUR3FKF1Cq5fovjZDlIcw3Hu5ppLHAnEXshVffvaM0eyuY/AbOeYpnQ==} @@ -14468,18 +15325,18 @@ packages: peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: - '@babel/core': 7.20.12 - '@babel/parser': 7.20.7 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-modules-commonjs': 7.20.11_@babel+core@7.20.12 - '@babel/preset-flow': 7.18.6_@babel+core@7.20.12 - '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 - '@babel/register': 7.18.9_@babel+core@7.20.12 - babel-core: 7.0.0-bridge.0_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/parser': 7.21.2 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.21.0 + '@babel/preset-flow': 7.18.6_@babel+core@7.21.0 + '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 + '@babel/register': 7.21.0_@babel+core@7.21.0 + babel-core: 7.0.0-bridge.0_@babel+core@7.21.0 chalk: 4.1.2 - flow-parser: 0.121.0 + flow-parser: 0.185.2 graceful-fs: 4.2.10 micromatch: 3.1.10 neo-async: 2.6.2 @@ -14496,19 +15353,19 @@ packages: peerDependencies: '@babel/preset-env': ^7.1.6 dependencies: - '@babel/core': 7.20.12 - '@babel/parser': 7.20.7 - '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.20.12 - '@babel/plugin-proposal-optional-chaining': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-modules-commonjs': 7.20.11_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/parser': 7.21.2 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.21.0 '@babel/preset-env': 7.20.2_@babel+core@7.20.12 - '@babel/preset-flow': 7.18.6_@babel+core@7.20.12 - '@babel/preset-typescript': 7.18.6_@babel+core@7.20.12 - '@babel/register': 7.18.9_@babel+core@7.20.12 - babel-core: 7.0.0-bridge.0_@babel+core@7.20.12 + '@babel/preset-flow': 7.18.6_@babel+core@7.21.0 + '@babel/preset-typescript': 7.21.0_@babel+core@7.21.0 + '@babel/register': 7.21.0_@babel+core@7.21.0 + babel-core: 7.0.0-bridge.0_@babel+core@7.21.0 chalk: 4.1.2 - flow-parser: 0.121.0 + flow-parser: 0.185.2 graceful-fs: 4.2.10 micromatch: 3.1.10 neo-async: 2.6.2 @@ -14572,17 +15429,13 @@ packages: hasBin: true dependencies: minimist: 1.2.7 + dev: true /json5/2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true - /jsonfile/2.4.0: - resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==} - optionalDependencies: - graceful-fs: 4.2.10 - /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -14634,11 +15487,6 @@ packages: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} - /klaw/1.3.1: - resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} - optionalDependencies: - graceful-fs: 4.2.10 - /kleur/3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -14838,7 +15686,7 @@ packages: dependencies: js-tokens: 4.0.0 - /lottie-react-native/5.1.4_tj3nonr5gneraukzjkxpsiy7yu: + /lottie-react-native/5.1.4_yqouayos4dnow7nnkhah4yzuzq: resolution: {integrity: sha512-Lu6mSG92Wck+vXEX6gfj/9ciqqoz0tJQZqgX0SumGvX/oZu4MbKO/oLApyHdy2V9Rb7qvwF9whOtitADxTswPA==} peerDependencies: lottie-ios: ^3.4.0 @@ -14850,9 +15698,9 @@ packages: optional: true dependencies: invariant: 2.2.4 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 - react-native-safe-modules: 1.0.3_react-native@0.70.5 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 + react-native-safe-modules: 1.0.3_react-native@0.71.3 dev: false /loud-rejection/1.6.0: @@ -15171,48 +16019,58 @@ packages: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} - /metro-babel-transformer/0.72.3: - resolution: {integrity: sha512-PTOR2zww0vJbWeeM3qN90WKENxCLzv9xrwWaNtwVlhcV8/diNdNe82sE1xIxLFI6OQuAVwNMv1Y7VsO2I7Ejrw==} + /metro-babel-transformer/0.73.7: + resolution: {integrity: sha512-s7UVkwovGTEXYEQrv5hcmSBbFJ9s9lhCRNMScn4Itgj3UMdqRr9lU8DXKEFlJ7osgRxN6n5+eXqcvhE4B1H1VQ==} dependencies: - '@babel/core': 7.20.12 + '@babel/core': 7.21.0 hermes-parser: 0.8.0 - metro-source-map: 0.72.3 + metro-source-map: 0.73.7 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - /metro-cache-key/0.72.3: - resolution: {integrity: sha512-kQzmF5s3qMlzqkQcDwDxrOaVxJ2Bh6WRXWdzPnnhsq9LcD3B3cYqQbRBS+3tSuXmathb4gsOdhWslOuIsYS8Rg==} - - /metro-cache/0.72.3: - resolution: {integrity: sha512-++eyZzwkXvijWRV3CkDbueaXXGlVzH9GA52QWqTgAOgSHYp5jWaDwLQ8qpsMkQzpwSyIF4LLK9aI3eA7Xa132A==} + /metro-babel-transformer/0.73.8: + resolution: {integrity: sha512-GO6H/W2RjZ0/gm1pIvdO9EP34s3XN6kzoeyxqmfqKfYhJmYZf1SzXbyiIHyMbJNwJVrsKuHqu32+GopTlKscWw==} dependencies: - metro-core: 0.72.3 - rimraf: 2.7.1 + '@babel/core': 7.21.0 + hermes-parser: 0.8.0 + metro-source-map: 0.73.8 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color - /metro-config/0.72.3: - resolution: {integrity: sha512-VEsAIVDkrIhgCByq8HKTWMBjJG6RlYwWSu1Gnv3PpHa0IyTjKJtB7wC02rbTjSaemcr82scldf2R+h6ygMEvsw==} + /metro-cache-key/0.73.8: + resolution: {integrity: sha512-VzFGu4kJGIkLjyDgVoM2ZxIHlMdCZWMqVIux9N+EeyMVMvGXTiXW8eGROgxzDhVjyR58IjfMsYpRCKz5dR+2ew==} + + /metro-cache/0.73.8: + resolution: {integrity: sha512-/uFbTIw813Rvb8kSAIHvax9gWl41dtgjY2SpJLNIBLdQ6oFZ3CVo3ahZIiEZOrCeHl9xfGn5tmvNb8CEFa/Q5w==} + dependencies: + metro-core: 0.73.8 + rimraf: 3.0.2 + + /metro-config/0.73.8: + resolution: {integrity: sha512-sAYq+llL6ZAfro64U99ske8HcKKswxX4wIZbll9niBKG7TkWm7tfMY1jO687XEmE4683rHncZeBRav9pLngIzg==} dependencies: cosmiconfig: 5.2.1 jest-validate: 26.6.2 - metro: 0.72.3 - metro-cache: 0.72.3 - metro-core: 0.72.3 - metro-runtime: 0.72.3 + metro: 0.73.8 + metro-cache: 0.73.8 + metro-core: 0.73.8 + metro-runtime: 0.73.8 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - /metro-core/0.72.3: - resolution: {integrity: sha512-KuYWBMmLB4+LxSMcZ1dmWabVExNCjZe3KysgoECAIV+wyIc2r4xANq15GhS94xYvX1+RqZrxU1pa0jQ5OK+/6A==} + /metro-core/0.73.8: + resolution: {integrity: sha512-Aew4dthbZf8bRRjlYGL3cnai3+LKYTf6mc7YS2xLQRWtgGZ1b/H8nQtBvXZpfRYFcS84UeEQ10vwIf5eR3qPdQ==} dependencies: lodash.throttle: 4.1.1 - metro-resolver: 0.72.3 + metro-resolver: 0.73.8 - /metro-file-map/0.72.3: - resolution: {integrity: sha512-LhuRnuZ2i2uxkpFsz1XCDIQSixxBkBG7oICAFyLyEMDGbcfeY6/NexphfLdJLTghkaoJR5ARFMiIxUg9fIY/pA==} + /metro-file-map/0.73.8: + resolution: {integrity: sha512-CM552hUO9om02jJdLszOCIDADKNaaeVz8CjYXItndvgr5jmFlQYAR+UMvaDzeT8oYdAV1DXAljma2CS2UBymPg==} dependencies: abort-controller: 3.0.0 anymatch: 3.1.3 @@ -15225,41 +16083,48 @@ packages: jest-util: 27.5.1 jest-worker: 27.5.1 micromatch: 4.0.5 + nullthrows: 1.1.1 walker: 1.0.8 optionalDependencies: fsevents: 2.3.2 transitivePeerDependencies: - supports-color - /metro-hermes-compiler/0.72.3: - resolution: {integrity: sha512-QWDQASMiXNW3j8uIQbzIzCdGYv5PpAX/ZiF4/lTWqKRWuhlkP4auhVY4eqdAKj5syPx45ggpjkVE0p8hAPDZYg==} + /metro-hermes-compiler/0.73.8: + resolution: {integrity: sha512-2d7t+TEoQLk+jyXgBykmAtPPJK2B46DB3qUYIMKDFDDaKzCljrojyVuGgQq6SM1f95fe6HDAQ3K9ihTjeB90yw==} - /metro-inspector-proxy/0.72.3: - resolution: {integrity: sha512-UPFkaq2k93RaOi+eqqt7UUmqy2ywCkuxJLasQ55+xavTUS+TQSyeTnTczaYn+YKw+izLTLllGcvqnQcZiWYhGw==} + /metro-inspector-proxy/0.73.8: + resolution: {integrity: sha512-F0QxwDTox0TDeXVRN7ZmI7BknBjPDVKQ1ZeKznFBiMa0SXiD1kzoksfpDbZ6hTEKrhVM9Ep0YQmC7avwZouOnA==} hasBin: true dependencies: connect: 3.7.0 debug: 2.6.9 ws: 7.5.9 - yargs: 15.4.1 + yargs: 17.7.1 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - /metro-minify-terser/0.74.1: - resolution: {integrity: sha512-R8l2KbYm1ct9benFSXBjeBDJ48BIyyQo3ECG0TSDX5efLSAS9z0scOCTUC9mcAJ9CO1tjc9ZrjHMNWAOoHO6XA==} + /metro-minify-terser/0.73.8: + resolution: {integrity: sha512-pnagyXAoMPhihWrHRIWqCxrP6EJ8Hfugv5RXBb6HbOANmwajn2uQuzeu18+dXaN1yPoDCMCgpg/UA4ibFN5jtQ==} dependencies: - terser: 5.16.1 + terser: 5.16.6 + + /metro-minify-terser/0.76.0: + resolution: {integrity: sha512-dxaE/pvFDFEvXoNHuiXbA2Tw/jT1MD3B4a9AM+aYPWJBh3PdT9XM1HdzumyJldtZpCn5yka4maYSrtuebKgOyw==} + engines: {node: '>=16'} + dependencies: + terser: 5.16.6 dev: true - /metro-minify-uglify/0.72.3: - resolution: {integrity: sha512-dPXqtMI8TQcj0g7ZrdhC8X3mx3m3rtjtMuHKGIiEXH9CMBvrET8IwrgujQw2rkPcXiSiX8vFDbGMIlfxefDsKA==} + /metro-minify-uglify/0.73.8: + resolution: {integrity: sha512-9wZqKfraVfmtMXdOzRyan+6r1woQXqqa4KeXfVh7+Mxl+5+J0Lmw6EvTrWawsaOEpvpn32q9MfoHC1d8plDJwA==} dependencies: uglify-es: 3.3.9 - /metro-react-native-babel-preset/0.72.3: - resolution: {integrity: sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==} + /metro-react-native-babel-preset/0.73.7: + resolution: {integrity: sha512-RKcmRZREjJCzHKP+JhC9QTCohkeb3xa/DtqHU14U5KWzJHdC0mMrkTZYNXhV0cryxsaVKVEw5873KhbZyZHMVw==} dependencies: '@babel/core': 7.20.12 '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.20.12 @@ -15280,7 +16145,6 @@ packages: '@babel/plugin-transform-classes': 7.20.7_@babel+core@7.20.12 '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.20.12 '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.20.12 - '@babel/plugin-transform-exponentiation-operator': 7.18.6_@babel+core@7.20.12 '@babel/plugin-transform-flow-strip-types': 7.19.0_@babel+core@7.20.12 '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.20.12 '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.20.12 @@ -15296,58 +16160,135 @@ packages: '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.20.12 '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.20.12 '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.20.12 - '@babel/plugin-transform-typescript': 7.20.7_@babel+core@7.20.12 + '@babel/plugin-transform-typescript': 7.20.13_@babel+core@7.20.12 '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.20.12 '@babel/template': 7.20.7 react-refresh: 0.4.3 transitivePeerDependencies: - supports-color - /metro-react-native-babel-transformer/0.72.3: - resolution: {integrity: sha512-Ogst/M6ujYrl/+9mpEWqE3zF7l2mTuftDTy3L8wZYwX1pWUQWQpfU1aJBeWiLxt1XlIq+uriRjKzKoRoIK57EA==} + /metro-react-native-babel-preset/0.73.8: + resolution: {integrity: sha512-spNrcQJTbQntEIqJnCA6yL4S+dzV9fXCk7U+Rm7yJasZ4o4Frn7jP23isu7FlZIp1Azx1+6SbP7SgQM+IP5JgQ==} dependencies: - '@babel/core': 7.20.12 - babel-preset-fbjs: 3.4.0_@babel+core@7.20.12 + '@babel/core': 7.21.0 + '@babel/plugin-proposal-async-generator-functions': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-proposal-class-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-export-default-from': 7.18.10_@babel+core@7.21.0 + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-object-rest-spread': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-catch-binding': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-proposal-optional-chaining': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-export-default-from': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-syntax-flow': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.21.0 + '@babel/plugin-transform-arrow-functions': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-async-to-generator': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-block-scoping': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-classes': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-computed-properties': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-destructuring': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-flow-strip-types': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-function-name': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-literals': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-modules-commonjs': 7.21.2_@babel+core@7.21.0 + '@babel/plugin-transform-named-capturing-groups-regex': 7.20.5_@babel+core@7.21.0 + '@babel/plugin-transform-parameters': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-react-display-name': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-react-jsx': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-react-jsx-self': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-react-jsx-source': 7.19.6_@babel+core@7.21.0 + '@babel/plugin-transform-runtime': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-shorthand-properties': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-spread': 7.20.7_@babel+core@7.21.0 + '@babel/plugin-transform-sticky-regex': 7.18.6_@babel+core@7.21.0 + '@babel/plugin-transform-template-literals': 7.18.9_@babel+core@7.21.0 + '@babel/plugin-transform-typescript': 7.21.0_@babel+core@7.21.0 + '@babel/plugin-transform-unicode-regex': 7.18.6_@babel+core@7.21.0 + '@babel/template': 7.20.7 + react-refresh: 0.4.3 + transitivePeerDependencies: + - supports-color + + /metro-react-native-babel-transformer/0.73.7: + resolution: {integrity: sha512-73HW8betjX+VPm3iqsMBe8F/F2Tt+hONO6YJwcF7FonTqQYW1oTz0dOp0dClZGfHUXxpJBz6Vuo7J6TpdzDD+w==} + dependencies: + '@babel/core': 7.21.0 + babel-preset-fbjs: 3.4.0_@babel+core@7.21.0 hermes-parser: 0.8.0 - metro-babel-transformer: 0.72.3 - metro-react-native-babel-preset: 0.72.3 - metro-source-map: 0.72.3 + metro-babel-transformer: 0.73.7 + metro-react-native-babel-preset: 0.73.7 + metro-source-map: 0.73.7 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - /metro-resolver/0.72.3: - resolution: {integrity: sha512-wu9zSMGdxpKmfECE7FtCdpfC+vrWGTdVr57lDA0piKhZV6VN6acZIvqQ1yZKtS2WfKsngncv5VbB8Y5eHRQP3w==} + /metro-react-native-babel-transformer/0.73.8: + resolution: {integrity: sha512-oH/LCCJPauteAE28c0KJAiSrkV+1VJbU0PwA9UwaWnle+qevs/clpKQ8LrIr33YbBj4CiI1kFoVRuNRt5h4NFg==} + dependencies: + '@babel/core': 7.21.0 + babel-preset-fbjs: 3.4.0_@babel+core@7.21.0 + hermes-parser: 0.8.0 + metro-babel-transformer: 0.73.8 + metro-react-native-babel-preset: 0.73.8 + metro-source-map: 0.73.8 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + /metro-resolver/0.73.8: + resolution: {integrity: sha512-GiBWont7/OgAftkkj2TiEp+Gf1PYZUk8xV4MbtnQjIKyy3MlGY3GbpMQ1BHih9GUQqlF0n9jsUlC2K5P0almXQ==} dependencies: absolute-path: 0.0.0 - /metro-runtime/0.72.3: - resolution: {integrity: sha512-3MhvDKfxMg2u7dmTdpFOfdR71NgNNo4tzAyJumDVQKwnHYHN44f2QFZQqpPBEmqhWlojNeOxsqFsjYgeyMx6VA==} + /metro-runtime/0.73.7: + resolution: {integrity: sha512-2fxRGrF8FyrwwHY0TCitdUljzutfW6CWEpdvPilfrs8p0PI5X8xOWg8ficeYtw+DldHtHIAL2phT59PqzHTyVA==} dependencies: - '@babel/runtime': 7.20.7 + '@babel/runtime': 7.21.0 react-refresh: 0.4.3 - /metro-source-map/0.72.3: - resolution: {integrity: sha512-eNtpjbjxSheXu/jYCIDrbNEKzMGOvYW6/ePYpRM7gDdEagUOqKOCsi3St8NJIQJzZCsxD2JZ2pYOiomUSkT1yQ==} + /metro-runtime/0.73.8: + resolution: {integrity: sha512-M+Bg9M4EN5AEpJ8NkiUsawD75ifYvYfHi05w6QzHXaqOrsTeaRbbeLuOGCYxU2f/tPg17wQV97/rqUQzs9qEtA==} dependencies: - '@babel/traverse': 7.20.12 - '@babel/types': 7.20.7 + '@babel/runtime': 7.21.0 + react-refresh: 0.4.3 + + /metro-source-map/0.73.7: + resolution: {integrity: sha512-gbC/lfUN52TtQhEsTTA+987MaFUpQlufuCI05blLGLosDcFCsARikHsxa65Gtslm/rG2MqvFLiPA5hviONNv9g==} + dependencies: + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 invariant: 2.2.4 - metro-symbolicate: 0.72.3 + metro-symbolicate: 0.73.7 nullthrows: 1.1.1 - ob1: 0.72.3 + ob1: 0.73.7 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: - supports-color - /metro-symbolicate/0.72.3: - resolution: {integrity: sha512-eXG0NX2PJzJ/jTG4q5yyYeN2dr1cUqUaY7worBB0SP5bRWRc3besfb+rXwfh49wTFiL5qR0oOawkU4ZiD4eHXw==} + /metro-source-map/0.73.8: + resolution: {integrity: sha512-wozFXuBYMAy7b8BCYwC+qoXsvayVJBHWtSTlSLva99t+CoUSG9JO9kg1umzbOz28YYPxKmvb/wbnLMkHdas2cA==} + dependencies: + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 + invariant: 2.2.4 + metro-symbolicate: 0.73.8 + nullthrows: 1.1.1 + ob1: 0.73.8 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + /metro-symbolicate/0.73.7: + resolution: {integrity: sha512-571ThWmX5o8yGNzoXjlcdhmXqpByHU/bSZtWKhtgV2TyIAzYCYt4hawJAS5+/qDazUvjHdm8BbdqFUheM0EKNQ==} engines: {node: '>=8.3'} hasBin: true dependencies: invariant: 2.2.4 - metro-source-map: 0.72.3 + metro-source-map: 0.73.7 nullthrows: 1.1.1 source-map: 0.5.7 through2: 2.0.5 @@ -15355,32 +16296,46 @@ packages: transitivePeerDependencies: - supports-color - /metro-transform-plugins/0.72.3: - resolution: {integrity: sha512-D+TcUvCKZbRua1+qujE0wV1onZvslW6cVTs7dLCyC2pv20lNHjFr1GtW01jN2fyKR2PcRyMjDCppFd9VwDKnSg==} + /metro-symbolicate/0.73.8: + resolution: {integrity: sha512-xkBAcceYYp0GGdCCuMzkCF1ejHsd0lYlbKBkjSRgM0Nlj80VapPaSwumYoAvSaDxcbkvS7/sCjURGp5DsSFgRQ==} + engines: {node: '>=8.3'} + hasBin: true dependencies: - '@babel/core': 7.20.12 - '@babel/generator': 7.20.7 + invariant: 2.2.4 + metro-source-map: 0.73.8 + nullthrows: 1.1.1 + source-map: 0.5.7 + through2: 2.0.5 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + /metro-transform-plugins/0.73.8: + resolution: {integrity: sha512-IxjlnB5eA49M0WfvPEzvRikK3Rr6bECUUfcZt/rWpSphq/mttgyLYcHQ+VTZZl0zHolC3cTLwgoDod4IIJBn1A==} + dependencies: + '@babel/core': 7.21.0 + '@babel/generator': 7.21.1 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 + '@babel/traverse': 7.21.2 nullthrows: 1.1.1 transitivePeerDependencies: - supports-color - /metro-transform-worker/0.72.3: - resolution: {integrity: sha512-WsuWj9H7i6cHuJuy+BgbWht9DK5FOgJxHLGAyULD5FJdTG9rSMFaHDO5WfC0OwQU5h4w6cPT40iDuEGksM7+YQ==} + /metro-transform-worker/0.73.8: + resolution: {integrity: sha512-B8kR6lmcvyG4UFSF2QDfr/eEnWJvg0ZadooF8Dg6m/3JSm9OAqfSoC0YrWqAuvtWImNDnbeKWN7/+ns44Hv6tg==} dependencies: - '@babel/core': 7.20.12 - '@babel/generator': 7.20.7 - '@babel/parser': 7.20.7 - '@babel/types': 7.20.7 - babel-preset-fbjs: 3.4.0_@babel+core@7.20.12 - metro: 0.72.3 - metro-babel-transformer: 0.72.3 - metro-cache: 0.72.3 - metro-cache-key: 0.72.3 - metro-hermes-compiler: 0.72.3 - metro-source-map: 0.72.3 - metro-transform-plugins: 0.72.3 + '@babel/core': 7.21.0 + '@babel/generator': 7.21.1 + '@babel/parser': 7.21.2 + '@babel/types': 7.21.2 + babel-preset-fbjs: 3.4.0_@babel+core@7.21.0 + metro: 0.73.8 + metro-babel-transformer: 0.73.8 + metro-cache: 0.73.8 + metro-cache-key: 0.73.8 + metro-hermes-compiler: 0.73.8 + metro-source-map: 0.73.8 + metro-transform-plugins: 0.73.8 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil @@ -15388,17 +16343,17 @@ packages: - supports-color - utf-8-validate - /metro/0.72.3: - resolution: {integrity: sha512-Hb3xTvPqex8kJ1hutQNZhQadUKUwmns/Du9GikmWKBFrkiG3k3xstGAyO5t5rN9JSUEzQT6y9SWzSSOGogUKIg==} + /metro/0.73.8: + resolution: {integrity: sha512-2EMJME9w5x7Uzn+DnQ4hzWr33u/aASaOBGdpf4lxbrlk6/vl4UBfX1sru6KU535qc/0Z1BMt4Vq9qsP3ZGFmWg==} hasBin: true dependencies: '@babel/code-frame': 7.18.6 - '@babel/core': 7.20.12 - '@babel/generator': 7.20.7 - '@babel/parser': 7.20.7 + '@babel/core': 7.21.0 + '@babel/generator': 7.21.1 + '@babel/parser': 7.21.2 '@babel/template': 7.20.7 - '@babel/traverse': 7.20.12 - '@babel/types': 7.20.7 + '@babel/traverse': 7.21.2 + '@babel/types': 7.21.2 absolute-path: 0.0.0 accepts: 1.3.8 async: 3.2.4 @@ -15408,40 +16363,40 @@ packages: debug: 2.6.9 denodeify: 1.2.1 error-stack-parser: 2.1.4 - fs-extra: 1.0.0 graceful-fs: 4.2.10 hermes-parser: 0.8.0 image-size: 0.6.3 invariant: 2.2.4 jest-worker: 27.5.1 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.72.3 - metro-cache: 0.72.3 - metro-cache-key: 0.72.3 - metro-config: 0.72.3 - metro-core: 0.72.3 - metro-file-map: 0.72.3 - metro-hermes-compiler: 0.72.3 - metro-inspector-proxy: 0.72.3 - metro-minify-uglify: 0.72.3 - metro-react-native-babel-preset: 0.72.3 - metro-resolver: 0.72.3 - metro-runtime: 0.72.3 - metro-source-map: 0.72.3 - metro-symbolicate: 0.72.3 - metro-transform-plugins: 0.72.3 - metro-transform-worker: 0.72.3 + metro-babel-transformer: 0.73.8 + metro-cache: 0.73.8 + metro-cache-key: 0.73.8 + metro-config: 0.73.8 + metro-core: 0.73.8 + metro-file-map: 0.73.8 + metro-hermes-compiler: 0.73.8 + metro-inspector-proxy: 0.73.8 + metro-minify-terser: 0.73.8 + metro-minify-uglify: 0.73.8 + metro-react-native-babel-preset: 0.73.8 + metro-resolver: 0.73.8 + metro-runtime: 0.73.8 + metro-source-map: 0.73.8 + metro-symbolicate: 0.73.8 + metro-transform-plugins: 0.73.8 + metro-transform-worker: 0.73.8 mime-types: 2.1.35 - node-fetch: 2.6.8 + node-fetch: 2.6.9 nullthrows: 1.1.1 - rimraf: 2.7.1 + rimraf: 3.0.2 serialize-error: 2.1.0 source-map: 0.5.7 strip-ansi: 6.0.1 temp: 0.8.3 throat: 5.0.0 ws: 7.5.9 - yargs: 15.4.1 + yargs: 17.7.1 transitivePeerDependencies: - bufferutil - encoding @@ -15564,6 +16519,9 @@ packages: /minimist/1.2.7: resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + /minimist/1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + /minipass-collect/1.0.2: resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} engines: {node: '>= 8'} @@ -15628,20 +16586,20 @@ packages: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true dependencies: - minimist: 1.2.7 + minimist: 1.2.8 /mkdirp/1.0.4: resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} engines: {node: '>=10'} hasBin: true - /moti/0.22.0_wwrhtnmkhk6ixblrbdwhxojxqi: - resolution: {integrity: sha512-KK3fhK8igrqE+mqac4JGajvpwM9WX2QCVn1HmwgXrzUC2dA6jyA2sybmV9Fke0Ahe7/dITKXRZNcd73OTqxdOA==} + /moti/0.24.2_j2lje2xtngrkm2tptyce2pxl5m: + resolution: {integrity: sha512-68sd6pdF976MgAZIZSQzVMmJFd8ENRAFeD2A67N2FJTvZEhzsAqDbEwwIYwhoDgYer+MrT5Y9X0pqofVO61tUg==} peerDependencies: react-native-reanimated: '*' dependencies: - framer-motion: 6.5.1_react@18.1.0 - react-native-reanimated: 2.14.4_tj3nonr5gneraukzjkxpsiy7yu + framer-motion: 6.5.1_react@18.2.0 + react-native-reanimated: 2.14.4_yqouayos4dnow7nnkhah4yzuzq transitivePeerDependencies: - react - react-dom @@ -15805,6 +16763,17 @@ packages: dependencies: whatwg-url: 5.0.0 + /node-fetch/2.6.9: + resolution: {integrity: sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + /node-forge/1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} @@ -15926,8 +16895,11 @@ packages: resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==} dev: true - /ob1/0.72.3: - resolution: {integrity: sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg==} + /ob1/0.73.7: + resolution: {integrity: sha512-DfelfvR843KADhSUATGGhuepVMRcf5VQX+6MQLy5AW0BKDLlO7Usj6YZeAAZP7P86QwsoTxB0RXCFiA7t6S1IQ==} + + /ob1/0.73.8: + resolution: {integrity: sha512-1F7j+jzD+edS6ohQP7Vg5f3yiIk5i3x1uLrNIHOmLHWzWK1t3zrDpjnoXghccdVlsU+UjbyURnDynm4p0GgXeA==} /object-assign/4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} @@ -16476,7 +17448,7 @@ packages: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: false - /phosphor-react-native/1.1.2_tdhmirddlb52bzkqlwgrsfpe6m: + /phosphor-react-native/1.1.2_nspe6j2x24lhqdltgpf6gwh4ma: resolution: {integrity: sha512-uWYDG4S70JP89jmXljCA0K6/0mjQDHH8GVHFwF+dmbdYkALIE84jMMSemkFtjdsazB1j+xDBJcGaKN3PdEC8uQ==} peerDependencies: react: '*' @@ -16484,9 +17456,9 @@ packages: react-native-svg: '*' dependencies: caniuse-lite: 1.0.30001446 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 - react-native-svg: 13.8.0_tj3nonr5gneraukzjkxpsiy7yu + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 + react-native-svg: 13.4.0_yqouayos4dnow7nnkhah4yzuzq dev: false /phosphor-react/1.4.1_react@18.2.0: @@ -16617,7 +17589,7 @@ packages: framesync: 6.0.1 hey-listen: 1.0.8 style-value-types: 5.0.0 - tslib: 2.4.1 + tslib: 2.5.0 dev: false /posix-character-classes/0.1.1: @@ -16943,6 +17915,14 @@ packages: react-is: 17.0.2 dev: true + /pretty-format/29.5.0: + resolution: {integrity: sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.4.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + /pretty-hrtime/1.0.3: resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} engines: {node: '>= 0.8'} @@ -17052,6 +18032,10 @@ packages: resolution: {integrity: sha512-FD8KmQUQD6Mfpd0hywCOzcon/dbkFP8XBd9F1ycbKtvVsfv6TsFUKJ2eC0Iz2y+KzlkdT1Z8SY6ZSgm07zOyqg==} dev: false + /proxy-compare/2.5.0: + resolution: {integrity: sha512-f1us0OsVAJ3tdIMXGQx2lmseYS4YXe4W+sKF5g5ww/jV+5ogMadPt+sIZ+88Ga9kvMJsrRNWzCrKPpr6pMWYbA==} + dev: false + /proxy-from-env/1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: true @@ -17274,10 +18258,10 @@ packages: react-dom: 18.2.0_react@18.2.0 dev: false - /react-devtools-core/4.24.0: - resolution: {integrity: sha512-Rw7FzYOOzcfyUPaAm9P3g0tFdGqGq2LLiAI+wjYcp6CsF3DeeMrRS3HZAho4s273C29G/DJhx0e8BpRE/QZNGg==} + /react-devtools-core/4.27.2: + resolution: {integrity: sha512-8SzmIkpO87alD7Xr6gWIEa1jHkMjawOZ+6egjazlnjB4UUcbnzGDf/vBJ4BzGuWWEM+pzrxuzsPpcMqlQkYK2g==} dependencies: - shell-quote: 1.7.4 + shell-quote: 1.8.0 ws: 7.5.9 transitivePeerDependencies: - bufferutil @@ -17297,7 +18281,7 @@ packages: hasBin: true dependencies: '@babel/core': 7.20.12 - '@babel/generator': 7.20.7 + '@babel/generator': 7.20.14 '@babel/runtime': 7.20.7 ast-types: 0.14.2 commander: 2.20.3 @@ -17346,13 +18330,13 @@ packages: resolution: {integrity: sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==} dev: false - /react-freeze/1.0.3_react@18.1.0: + /react-freeze/1.0.3_react@18.2.0: resolution: {integrity: sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g==} engines: {node: '>=10'} peerDependencies: react: '>=17.0.0' dependencies: - react: 18.1.0 + react: 18.2.0 dev: false /react-helmet/6.1.0_react@18.2.0: @@ -17367,26 +18351,8 @@ packages: react-side-effect: 2.1.2_react@18.2.0 dev: false - /react-hook-form/7.42.1_react@18.2.0: - resolution: {integrity: sha512-2UIGqwMZksd5HS55crTT1ATLTr0rAI4jS7yVuqTaoRVDhY2Qc4IyjskCmpnmdYqUNOYFy04vW253tb2JRVh+IQ==} - engines: {node: '>=12.22.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 - dependencies: - react: 18.2.0 - dev: false - - /react-hook-form/7.43.0_react@18.1.0: - resolution: {integrity: sha512-/rVEz7T0gLdSFwPqutJ1kn2e0sQNyb9ci/hmwEYr2YG0KF/LSuRLvNrf9QWJM+gj88CjDpDW5Bh/1AD7B2+z9Q==} - engines: {node: '>=12.22.0'} - peerDependencies: - react: ^16.8.0 || ^17 || ^18 - dependencies: - react: 18.1.0 - dev: false - - /react-hook-form/7.43.0_react@18.2.0: - resolution: {integrity: sha512-/rVEz7T0gLdSFwPqutJ1kn2e0sQNyb9ci/hmwEYr2YG0KF/LSuRLvNrf9QWJM+gj88CjDpDW5Bh/1AD7B2+z9Q==} + /react-hook-form/7.43.5_react@18.2.0: + resolution: {integrity: sha512-YcaXhuFHoOPipu5pC7ckxrLrialiOcU91pKu8P+isAcXZyMgByUK9PkI9j5fENO4+6XU5PwWXRGMIFlk9u9UBQ==} engines: {node: '>=12.22.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 @@ -17451,18 +18417,18 @@ packages: /react-merge-refs/1.1.0: resolution: {integrity: sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==} - /react-native-codegen/0.70.6: - resolution: {integrity: sha512-kdwIhH2hi+cFnG5Nb8Ji2JwmcCxnaOOo9440ov7XDzSvGfmUStnCzl+MCW8jLjqHcE4icT7N9y+xx4f50vfBTw==} + /react-native-codegen/0.71.5: + resolution: {integrity: sha512-rfsuc0zkuUuMjFnrT55I1mDZ+pBRp2zAiRwxck3m6qeGJBGK5OV5JH66eDQ4aa+3m0of316CqrJDRzVlYufzIg==} dependencies: - '@babel/parser': 7.20.7 - flow-parser: 0.121.0 + '@babel/parser': 7.21.2 + flow-parser: 0.185.2 jscodeshift: 0.13.1 nullthrows: 1.1.1 transitivePeerDependencies: - '@babel/preset-env' - supports-color - /react-native-document-picker/8.1.3_tj3nonr5gneraukzjkxpsiy7yu: + /react-native-document-picker/8.1.3_yqouayos4dnow7nnkhah4yzuzq: resolution: {integrity: sha512-lC+SZnzqIEE30x2CSHeZT+f7FzhQOTJprCNMRPpFVl4mLV9dDCJ/wZAmMByJFT79oQMPrzjlhhJlmjm+sVRUWQ==} peerDependencies: react: '*' @@ -17473,15 +18439,15 @@ packages: optional: true dependencies: invariant: 2.2.4 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 dev: false /react-native-elevation/1.0.0: resolution: {integrity: sha512-BWIKcEYtzjRV6GpkX0Km5/w2E7fgIcywiQOT7JZTc5NSbv/YI9kpFinB9lRFsOoRVGmiqq/O3VfP/oH2clIiBA==} dev: false - /react-native-fs/2.20.0_react-native@0.70.5: + /react-native-fs/2.20.0_react-native@0.71.3: resolution: {integrity: sha512-VkTBzs7fIDUiy/XajOSNk0XazFE9l+QlMAce7lGuebZcag5CnjszB+u4BdqzwaQOdcYb5wsJIsqq4kxInIRpJQ==} peerDependencies: react-native: '*' @@ -17491,11 +18457,11 @@ packages: optional: true dependencies: base-64: 0.1.0 - react-native: 0.70.5_react@18.1.0 + react-native: 0.71.3_react@18.2.0 utf8: 3.0.0 dev: false - /react-native-gesture-handler/2.9.0_tj3nonr5gneraukzjkxpsiy7yu: + /react-native-gesture-handler/2.9.0_yqouayos4dnow7nnkhah4yzuzq: resolution: {integrity: sha512-a0BcH3Qb1tgVqUutc6d3VuWQkI1AM3+fJx8dkxzZs9t06qA27QgURYFoklpabuWpsUTzuKRpxleykp25E8m7tg==} peerDependencies: react: '*' @@ -17506,18 +18472,18 @@ packages: invariant: 2.2.4 lodash: 4.17.21 prop-types: 15.8.1 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 dev: false - /react-native-gradle-plugin/0.70.3: - resolution: {integrity: sha512-oOanj84fJEXUg9FoEAQomA8ISG+DVIrTZ3qF7m69VQUJyOGYyDZmPqKcjvRku4KXlEH6hWO9i4ACLzNBh8gC0A==} + /react-native-gradle-plugin/0.71.16: + resolution: {integrity: sha512-H2BjG2zk7B7Wii9sXvd9qhCVRQYDAHSWdMw9tscmZBqSP62DkIWEQSk4/B2GhQ4aK9ydVXgtqR6tBeg3yy8TSA==} /react-native-popup-menu/0.16.1: resolution: {integrity: sha512-xRS7mRh0exwu7Iw8PPVHdM11d13A/KzYjy0/fZx3zVtxISxPkNaDGayau6oa7HqO3Nj0oS9ulFCYjcQfG6vahA==} dev: false - /react-native-reanimated/2.14.4_tj3nonr5gneraukzjkxpsiy7yu: + /react-native-reanimated/2.14.4_yqouayos4dnow7nnkhah4yzuzq: resolution: {integrity: sha512-DquSbl7P8j4SAmc+kRdd75Ianm8G+IYQ9T4AQ6lrpLVeDkhZmjWI0wkutKWnp6L7c5XNVUrFDUf69dwETLCItQ==} peerDependencies: '@babel/core': ^7.0.0-0 @@ -17525,50 +18491,50 @@ packages: react-native: '*' dependencies: '@babel/plugin-transform-object-assign': 7.18.6 - '@babel/preset-typescript': 7.18.6 + '@babel/preset-typescript': 7.21.0 convert-source-map: 1.9.0 invariant: 2.2.4 lodash.isequal: 4.5.0 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 setimmediate: 1.0.5 string-hash-64: 1.0.3 transitivePeerDependencies: - supports-color dev: false - /react-native-safe-area-context/4.5.0_tj3nonr5gneraukzjkxpsiy7yu: + /react-native-safe-area-context/4.5.0_yqouayos4dnow7nnkhah4yzuzq: resolution: {integrity: sha512-0WORnk9SkREGUg2V7jHZbuN5x4vcxj/1B0QOcXJjdYWrzZHgLcUzYWWIUecUPJh747Mwjt/42RZDOaFn3L8kPQ==} peerDependencies: react: '*' react-native: '*' dependencies: - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 dev: false - /react-native-safe-modules/1.0.3_react-native@0.70.5: + /react-native-safe-modules/1.0.3_react-native@0.71.3: resolution: {integrity: sha512-DUxti4Z+AgJ/ZsO5U7p3uSCUBko8JT8GvFlCeOXk9bMd+4qjpoDvMYpfbixXKgL88M+HwmU/KI1YFN6gsQZyBA==} peerDependencies: react-native: '*' dependencies: dedent: 0.6.0 - react-native: 0.70.5_react@18.1.0 + react-native: 0.71.3_react@18.2.0 dev: false - /react-native-screens/3.19.0_tj3nonr5gneraukzjkxpsiy7yu: - resolution: {integrity: sha512-Ehsmy7jr3H3j5pmN+/FqsAaIAD+k+xkcdePfLcg4rYRbN5X7fJPgaqhcmiCcZ0YxsU8ttsstP9IvRLNQuIkRRA==} + /react-native-screens/3.20.0_yqouayos4dnow7nnkhah4yzuzq: + resolution: {integrity: sha512-joWUKWAVHxymP3mL9gYApFHAsbd9L6ZcmpoZa6Sl3W/82bvvNVMqcfP7MeNqVCg73qZ8yL4fW+J/syusHleUgg==} peerDependencies: react: '*' react-native: '*' dependencies: - react: 18.1.0 - react-freeze: 1.0.3_react@18.1.0 - react-native: 0.70.5_react@18.1.0 + react: 18.2.0 + react-freeze: 1.0.3_react@18.2.0 + react-native: 0.71.3_react@18.2.0 warn-once: 0.1.1 dev: false - /react-native-svg-transformer/1.0.0_kqpsw65h73u7hvgblav6crprhi: + /react-native-svg-transformer/1.0.0_csdbj5z546ts5ngzc62z27kx4u: resolution: {integrity: sha512-ALHU5VvLLyKM/BvyEG7VYJmqglvaXtU7mGRCxrEwwpJO/GBf1ZMUzc4AeJAjSodj7yYtlDYRxNSt9ySWpaa6JQ==} peerDependencies: react-native: '>=0.59.0' @@ -17577,22 +18543,22 @@ packages: '@svgr/core': 6.5.1 '@svgr/plugin-svgo': 6.5.1_@svgr+core@6.5.1 path-dirname: 1.0.2 - react-native: 0.70.5_react@18.1.0 - react-native-svg: 13.8.0_tj3nonr5gneraukzjkxpsiy7yu + react-native: 0.71.3_react@18.2.0 + react-native-svg: 13.4.0_yqouayos4dnow7nnkhah4yzuzq transitivePeerDependencies: - supports-color dev: true - /react-native-svg/13.8.0_tj3nonr5gneraukzjkxpsiy7yu: - resolution: {integrity: sha512-G8Mx6W86da+vFimZBJvA93POw8yz0fgDS5biy6oIjMWVJVQSDzCyzwO/zY0yuZmCDhKSZzogl5m0wXXvW2OcTA==} + /react-native-svg/13.4.0_yqouayos4dnow7nnkhah4yzuzq: + resolution: {integrity: sha512-B3TwK+H0+JuRhYPzF21AgqMt4fjhCwDZ9QUtwNstT5XcslJBXC0FoTkdZo8IEb1Sv4suSqhZwlAY6lwOv3tHag==} peerDependencies: react: '*' react-native: '*' dependencies: css-select: 5.1.0 css-tree: 1.1.3 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 /react-native-wheel-color-picker/1.2.0: resolution: {integrity: sha512-j4IcN7so9dZAkXyrPTTaPqCKsjkGBZkd5F7HqLo0OTRB1EZX3Ww5VMKsKjloxv6Omv193wGOhwfG20ec2KnxJQ==} @@ -17600,44 +18566,46 @@ packages: react-native-elevation: 1.0.0 dev: false - /react-native/0.70.5_react@18.1.0: - resolution: {integrity: sha512-5NZM80LC3L+TIgQX/09yiyy48S73wMgpIgN5cCv3XTMR394+KpDI3rBZGH4aIgWWuwijz31YYVF5504+9n2Zfw==} + /react-native/0.71.3_react@18.2.0: + resolution: {integrity: sha512-RYJXCcQGa4NTfKiPgl92eRDUuQ6JGDnHqFEzRwJSqEx9lWvlvRRIebstJfurzPDKLQWQrvITR7aI7e09E25mLw==} engines: {node: '>=14'} hasBin: true peerDependencies: - react: 18.1.0 + react: 18.2.0 dependencies: - '@jest/create-cache-key-function': 29.3.1 - '@react-native-community/cli': 9.2.1 - '@react-native-community/cli-platform-android': 9.2.1 - '@react-native-community/cli-platform-ios': 9.2.1 + '@jest/create-cache-key-function': 29.5.0 + '@react-native-community/cli': 10.1.3 + '@react-native-community/cli-platform-android': 10.1.3 + '@react-native-community/cli-platform-ios': 10.1.1 '@react-native/assets': 1.0.0 - '@react-native/normalize-color': 2.0.0 + '@react-native/normalize-color': 2.1.0 '@react-native/polyfills': 2.0.0 abort-controller: 3.0.0 anser: 1.4.10 base64-js: 1.5.1 + deprecated-react-native-prop-types: 3.0.1 event-target-shim: 5.0.1 invariant: 2.2.4 - jsc-android: 250230.2.1 + jest-environment-node: 29.5.0 + jsc-android: 250231.0.0 memoize-one: 5.2.1 - metro-react-native-babel-transformer: 0.72.3 - metro-runtime: 0.72.3 - metro-source-map: 0.72.3 + metro-react-native-babel-transformer: 0.73.7 + metro-runtime: 0.73.7 + metro-source-map: 0.73.7 mkdirp: 0.5.6 nullthrows: 1.1.1 pretty-format: 26.6.2 promise: 8.3.0 - react: 18.1.0 - react-devtools-core: 4.24.0 - react-native-codegen: 0.70.6 - react-native-gradle-plugin: 0.70.3 + react: 18.2.0 + react-devtools-core: 4.27.2 + react-native-codegen: 0.71.5 + react-native-gradle-plugin: 0.71.16 react-refresh: 0.4.3 - react-shallow-renderer: 16.15.0_react@18.1.0 + react-shallow-renderer: 16.15.0_react@18.2.0 regenerator-runtime: 0.13.11 - scheduler: 0.22.0 + scheduler: 0.23.0 stacktrace-parser: 0.1.10 - use-sync-external-store: 1.2.0_react@18.1.0 + use-sync-external-store: 1.2.0_react@18.2.0 whatwg-fetch: 3.6.2 ws: 6.2.2 transitivePeerDependencies: @@ -17750,13 +18718,13 @@ packages: react: 18.2.0 dev: false - /react-shallow-renderer/16.15.0_react@18.1.0: + /react-shallow-renderer/16.15.0_react@18.2.0: resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} peerDependencies: react: ^16.0.0 || ^17.0.0 || ^18.0.0 dependencies: object-assign: 4.1.1 - react: 18.1.0 + react: 18.2.0 react-is: 18.2.0 /react-side-effect/2.1.2_react@18.2.0: @@ -17833,12 +18801,6 @@ packages: tsparticles-engine: 2.8.0 dev: false - /react/18.1.0: - resolution: {integrity: sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==} - engines: {node: '>=0.10.0'} - dependencies: - loose-envify: 1.4.0 - /react/18.2.0: resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} engines: {node: '>=0.10.0'} @@ -17906,6 +18868,18 @@ packages: safe-buffer: 5.1.2 string_decoder: 1.1.1 util-deprecate: 1.0.2 + dev: true + + /readable-stream/2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 /readable-stream/3.6.0: resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} @@ -17914,6 +18888,15 @@ packages: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + dev: true + + /readable-stream/3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 /readdirp/2.2.1: resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} @@ -17953,7 +18936,7 @@ packages: ast-types: 0.14.2 esprima: 4.0.1 source-map: 0.6.1 - tslib: 2.4.1 + tslib: 2.5.0 /rechoir/0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} @@ -17972,7 +18955,7 @@ packages: tslib: 1.14.1 dev: true - /recyclerlistview/4.2.0_tj3nonr5gneraukzjkxpsiy7yu: + /recyclerlistview/4.2.0_yqouayos4dnow7nnkhah4yzuzq: resolution: {integrity: sha512-uuBCi0c+ggqHKwrzPX4Z/mJOzsBbjZEAwGGmlwpD/sD7raXixdAbdJ6BTcAmuWG50Cg4ru9p12M94Njwhr/27A==} peerDependencies: react: '>= 15.2.1' @@ -17980,8 +18963,8 @@ packages: dependencies: lodash.debounce: 4.0.8 prop-types: 15.8.1 - react: 18.1.0 - react-native: 0.70.5_react@18.1.0 + react: 18.2.0 + react-native: 0.71.3_react@18.2.0 ts-object-utils: 0.0.5 dev: false @@ -18472,11 +19455,6 @@ packages: /sax/1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - /scheduler/0.22.0: - resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==} - dependencies: - loose-envify: 1.4.0 - /scheduler/0.23.0: resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} dependencies: @@ -18678,8 +19656,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - /shell-quote/1.7.4: - resolution: {integrity: sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==} + /shell-quote/1.8.0: + resolution: {integrity: sha512-QHsz8GgQIGKlRi24yFc6a6lN69Idnx634w49ay6+jA5yFh7a1UY+4Rp6HPx/L/1zcEDPEij8cIsiqR6bQsE5VQ==} /shelljs/0.8.5: resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} @@ -18915,6 +19893,12 @@ packages: deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' dev: true + /stack-utils/2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + dependencies: + escape-string-regexp: 2.0.0 + /stackframe/1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} @@ -19172,6 +20156,9 @@ packages: engines: {node: '>=8'} dev: true + /strnum/1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + /structured-headers/0.4.1: resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==} dev: false @@ -19225,7 +20212,7 @@ packages: resolution: {integrity: sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==} dependencies: hey-listen: 1.0.8 - tslib: 2.4.1 + tslib: 2.5.0 dev: false /sucrase/3.29.0: @@ -19505,7 +20492,7 @@ packages: schema-utils: 3.1.1 serialize-javascript: 5.0.1 source-map: 0.6.1 - terser: 5.16.1 + terser: 5.16.6 webpack: 4.46.0 webpack-sources: 1.4.3 transitivePeerDependencies: @@ -19532,7 +20519,7 @@ packages: jest-worker: 27.5.1 schema-utils: 3.1.1 serialize-javascript: 6.0.1 - terser: 5.16.1 + terser: 5.16.6 webpack: 5.75.0 dev: true @@ -19541,14 +20528,14 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - acorn: 8.8.1 + acorn: 8.8.2 commander: 2.20.3 source-map: 0.6.1 source-map-support: 0.5.21 dev: true - /terser/5.16.1: - resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==} + /terser/5.16.6: + resolution: {integrity: sha512-IBZ+ZQIA9sMaXmRZCUMDjNH0D5AQQfdn4WUjHL0+1lF4TP1IHRJbrhb6fNaXWikrYQTSkb7SLxkeXAiy1p7mbg==} engines: {node: '>=10'} hasBin: true dependencies: @@ -19590,7 +20577,7 @@ packages: /through2/2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} dependencies: - readable-stream: 2.3.7 + readable-stream: 2.3.8 xtend: 4.0.2 /timers-browserify/2.0.12: @@ -19781,6 +20768,9 @@ packages: /tslib/2.4.1: resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} + /tslib/2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + /tsparticles-engine/2.8.0: resolution: {integrity: sha512-r0cWKxefQkQCzU+RRG/82VQnl/fAkws27EuYIOKcnHiYsWnZYcX8iPiQs/qgDajP0haBSn4Vui8UbTCAwSFniw==} requiresBuild: true @@ -20151,12 +21141,12 @@ packages: turbo-windows-arm64: 1.7.0 dev: true - /twrnc/3.6.0_react-native@0.70.5: + /twrnc/3.6.0_react-native@0.71.3: resolution: {integrity: sha512-ee3etAeEfJyH7a9iiQD6JEYJN7nQiZumO6KXCaAmgj9xL5BIFgZfjWsVfQ0eV+anSqgXVit/a2ZUNX3LFlbdhA==} peerDependencies: react-native: '>=0.63.0' dependencies: - react-native: 0.70.5_react@18.1.0 + react-native: 0.71.3_react@18.2.0 tailwindcss: 3.2.4 transitivePeerDependencies: - ts-node @@ -20176,6 +21166,10 @@ packages: prelude-ls: 1.2.1 dev: true + /type-detect/4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + /type-fest/0.12.0: resolution: {integrity: sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==} engines: {node: '>=10'} @@ -20250,6 +21244,11 @@ packages: engines: {node: '>=4.2.0'} hasBin: true + /typescript/4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + /ua-parser-js/0.7.32: resolution: {integrity: sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==} dev: false @@ -20550,15 +21549,6 @@ packages: react: 18.2.0 dev: false - /use-count-up/3.0.1_react@18.1.0: - resolution: {integrity: sha512-jlVsXJYje6jh+xwQaCEYrwHoB+nRyillNEmr21bhe9kw7tpRzyrSq9jQs9UOlo+8hCFkuOmjUihL3IjEK/piVg==} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 18.1.0 - use-elapsed-time: 3.0.2_react@18.1.0 - dev: false - /use-count-up/3.0.1_react@18.2.0: resolution: {integrity: sha512-jlVsXJYje6jh+xwQaCEYrwHoB+nRyillNEmr21bhe9kw7tpRzyrSq9jQs9UOlo+8hCFkuOmjUihL3IjEK/piVg==} peerDependencies: @@ -20577,21 +21567,13 @@ packages: react: 18.2.0 dev: false - /use-debounce/9.0.3_react@18.1.0: + /use-debounce/9.0.3_react@18.2.0: resolution: {integrity: sha512-FhtlbDtDXILJV7Lix5OZj5yX/fW1tzq+VrvK1fnT2bUrPOGruU9Rw8NCEn+UI9wopfERBEZAOQ8lfeCJPllgnw==} engines: {node: '>= 10.0.0'} peerDependencies: react: '>=16.8.0' dependencies: - react: 18.1.0 - dev: false - - /use-elapsed-time/3.0.2_react@18.1.0: - resolution: {integrity: sha512-2EY9lJ5DWbAvT8wWiEp6Ztnl46DjXz2j78uhWbXaz/bg3OfpbgVucCAlcN8Bih6hTJfFTdVYX9L6ySMn5py/wQ==} - peerDependencies: - react: '>=16.8.0' - dependencies: - react: 18.1.0 + react: 18.2.0 dev: false /use-elapsed-time/3.0.2_react@18.2.0: @@ -20655,13 +21637,6 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 dev: false - /use-sync-external-store/1.2.0_react@18.1.0: - resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.1.0 - /use-sync-external-store/1.2.0_react@18.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -20756,6 +21731,20 @@ packages: builtins: 1.0.3 dev: false + /valtio/1.10.3_react@18.2.0: + resolution: {integrity: sha512-t3Ez/+baJ+Z5tIyeaI6nCAbW/hrmcq2jditwg/X++o5IvCdiGirQKTOv1kJq0glgUo13v5oABCVGcinggBfiKw==} + engines: {node: '>=12.20.0'} + peerDependencies: + react: '>=16.8' + peerDependenciesMeta: + react: + optional: true + dependencies: + proxy-compare: 2.5.0 + react: 18.2.0 + use-sync-external-store: 1.2.0_react@18.2.0 + dev: false + /valtio/1.9.0: resolution: {integrity: sha512-mQLFsAlKbYascZygFQh6lXuDjU5WHLoeZ8He4HqMnWfasM96V6rDbeFkw1XeG54xycmDonr/Jb4xgviHtuySrA==} engines: {node: '>=12.20.0'} @@ -20769,20 +21758,6 @@ packages: use-sync-external-store: 1.2.0 dev: false - /valtio/1.9.0_react@18.1.0: - resolution: {integrity: sha512-mQLFsAlKbYascZygFQh6lXuDjU5WHLoeZ8He4HqMnWfasM96V6rDbeFkw1XeG54xycmDonr/Jb4xgviHtuySrA==} - engines: {node: '>=12.20.0'} - peerDependencies: - react: '>=16.8' - peerDependenciesMeta: - react: - optional: true - dependencies: - proxy-compare: 2.4.0 - react: 18.1.0 - use-sync-external-store: 1.2.0_react@18.1.0 - dev: false - /valtio/1.9.0_react@18.2.0: resolution: {integrity: sha512-mQLFsAlKbYascZygFQh6lXuDjU5WHLoeZ8He4HqMnWfasM96V6rDbeFkw1XeG54xycmDonr/Jb4xgviHtuySrA==} engines: {node: '>=12.20.0'} @@ -20897,7 +21872,7 @@ packages: dependencies: '@rollup/pluginutils': 5.0.2 '@svgr/core': 6.5.1 - vite: 4.1.4_sass@1.57.1 + vite: 4.1.4_ovmyjmuuyckt3r3gpaexj2onji transitivePeerDependencies: - rollup - supports-color @@ -21512,7 +22487,6 @@ packages: /y18n/5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: true /yallist/3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -21539,7 +22513,6 @@ packages: /yargs-parser/21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - dev: true /yargs/15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} @@ -21583,6 +22556,18 @@ packages: yargs-parser: 21.1.1 dev: true + /yargs/17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} + engines: {node: '>=12'} + 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.8 + yargs-parser: 21.1.1 + /yauzl/2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} dependencies: @@ -21603,6 +22588,10 @@ packages: resolution: {integrity: sha512-1MzNQdAvO+54H+EaK5YpyEy0T+Ejo/7YLHS93G3RnYWh5gaotGHwGeN/ZO687qEDU2y4CdStQYXVHIgrUl5UVQ==} dev: false + /zod/3.21.4: + resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + dev: false + /zwitch/1.0.5: resolution: {integrity: sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==} dev: true