diff --git a/example/.npmrc b/example/.npmrc new file mode 100644 index 00000000..63b4cdd3 --- /dev/null +++ b/example/.npmrc @@ -0,0 +1,3 @@ +package-import-method=hardlink +node-linker=hoisted +symlink=false diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle new file mode 100644 index 00000000..a3d064cd --- /dev/null +++ b/example/android/app/build.gradle @@ -0,0 +1,123 @@ +apply plugin: "com.android.application" +apply plugin: "com.facebook.react" + +/** + * 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 { + /* 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") + // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js + // cliFile = file("../node_modules/react-native/cli.js") + + /* 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 command to run when bundling. By default is 'bundle' + // bundleCommand = "ram-bundle" + // + // 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"] +} + +/** + * Set this to true to Run Proguard on Release builds to minify the Java bytecode. + */ +def enableProguardInReleaseBuilds = false + +/** + * 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 + * this variant is about 6MiB larger per architecture than default. + */ +def jscFlavor = 'org.webkit:android-jsc:+' + +android { + ndkVersion rootProject.ext.ndkVersion + + compileSdkVersion rootProject.ext.compileSdkVersion + + namespace "com.example" + defaultConfig { + applicationId "com.example" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + } + signingConfigs { + debug { + storeFile file('debug.keystore') + storePassword 'android' + keyAlias 'androiddebugkey' + keyPassword 'android' + } + } + buildTypes { + debug { + signingConfig signingConfigs.debug + } + release { + // Caution! In production, you need to generate your own keystore file. + // see https://reactnative.dev/docs/signed-apk-android. + signingConfig signingConfigs.debug + minifyEnabled enableProguardInReleaseBuilds + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" + } + } +} + +dependencies { + // The version of react-native is set by the React Native Gradle Plugin + implementation("com.facebook.react:react-android") + + debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") + debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { + exclude group:'com.squareup.okhttp3', module:'okhttp' + } + + debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") + if (hermesEnabled.toBoolean()) { + implementation("com.facebook.react:hermes-android") + } else { + implementation jscFlavor + } +} + +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) diff --git a/example/android/app/debug.keystore b/example/android/app/debug.keystore new file mode 100644 index 00000000..364e105e Binary files /dev/null and b/example/android/app/debug.keystore differ diff --git a/example/android/app/proguard-rules.pro b/example/android/app/proguard-rules.pro new file mode 100644 index 00000000..11b02572 --- /dev/null +++ b/example/android/app/proguard-rules.pro @@ -0,0 +1,10 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..4b185bc1 --- /dev/null +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/example/android/app/src/debug/java/com/example/ReactNativeFlipper.java b/example/android/app/src/debug/java/com/example/ReactNativeFlipper.java new file mode 100644 index 00000000..e75580ef --- /dev/null +++ b/example/android/app/src/debug/java/com/example/ReactNativeFlipper.java @@ -0,0 +1,75 @@ +/** + * 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.example; + +import android.content.Context; +import com.facebook.flipper.android.AndroidFlipperClient; +import com.facebook.flipper.android.utils.FlipperUtils; +import com.facebook.flipper.core.FlipperClient; +import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; +import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; +import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; +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.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 DatabasesFlipperPlugin(context)); + client.addPlugin(new SharedPreferencesFlipperPlugin(context)); + client.addPlugin(CrashReporterPlugin.getInstance()); + + NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); + NetworkingModule.setCustomClientBuilder( + new NetworkingModule.CustomClientBuilder() { + @Override + public void apply(OkHttpClient.Builder builder) { + builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); + } + }); + 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 ReactInstanceEventListener() { + @Override + public void onReactContextInitialized(ReactContext reactContext) { + reactInstanceManager.removeReactInstanceEventListener(this); + reactContext.runOnNativeModulesQueueThread( + new Runnable() { + @Override + public void run() { + client.addPlugin(new FrescoFlipperPlugin()); + } + }); + } + }); + } else { + client.addPlugin(new FrescoFlipperPlugin()); + } + } + } +} diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..4122f36a --- /dev/null +++ b/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + diff --git a/example/android/app/src/main/java/com/example/MainActivity.java b/example/android/app/src/main/java/com/example/MainActivity.java new file mode 100644 index 00000000..8803ec49 --- /dev/null +++ b/example/android/app/src/main/java/com/example/MainActivity.java @@ -0,0 +1,32 @@ +package com.example; + +import com.facebook.react.ReactActivity; +import com.facebook.react.ReactActivityDelegate; +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; +import com.facebook.react.defaults.DefaultReactActivityDelegate; + +public class MainActivity extends ReactActivity { + + /** + * Returns the name of the main component registered from JavaScript. This is used to schedule + * rendering of the component. + */ + @Override + protected String getMainComponentName() { + return "example"; + } + + /** + * 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 DefaultReactActivityDelegate( + this, + getMainComponentName(), + // If you opted-in for the New Architecture, we enable the Fabric Renderer. + DefaultNewArchitectureEntryPoint.getFabricEnabled()); + } +} diff --git a/example/android/app/src/main/java/com/example/MainApplication.java b/example/android/app/src/main/java/com/example/MainApplication.java new file mode 100644 index 00000000..dd666be2 --- /dev/null +++ b/example/android/app/src/main/java/com/example/MainApplication.java @@ -0,0 +1,62 @@ +package com.example; + +import android.app.Application; +import com.facebook.react.PackageList; +import com.facebook.react.ReactApplication; +import com.facebook.react.ReactNativeHost; +import com.facebook.react.ReactPackage; +import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; +import com.facebook.react.defaults.DefaultReactNativeHost; +import com.facebook.soloader.SoLoader; +import java.util.List; + +public class MainApplication extends Application implements ReactApplication { + + private final ReactNativeHost mReactNativeHost = + new DefaultReactNativeHost(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 MyReactNativePackage()); + 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; + } + }; + + @Override + public ReactNativeHost getReactNativeHost() { + return mReactNativeHost; + } + + @Override + public void onCreate() { + super.onCreate(); + SoLoader.init(this, /* native exopackage */ false); + 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()); + } +} diff --git a/example/android/app/src/main/res/drawable/rn_edit_text_material.xml b/example/android/app/src/main/res/drawable/rn_edit_text_material.xml new file mode 100644 index 00000000..73b37e4d --- /dev/null +++ b/example/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..a2f59082 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 00000000..1b523998 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..ff10afd6 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 00000000..115a4c76 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..dcd3cd80 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 00000000..459ca609 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..8ca12fe0 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..8e19b410 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..b824ebdd Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 00000000..4c19a13c Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/values/strings.xml b/example/android/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..d75426c8 --- /dev/null +++ b/example/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + example + diff --git a/example/android/app/src/main/res/values/styles.xml b/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..7ba83a2a --- /dev/null +++ b/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/example/android/app/src/release/java/com/example/ReactNativeFlipper.java b/example/android/app/src/release/java/com/example/ReactNativeFlipper.java new file mode 100644 index 00000000..c63f23c1 --- /dev/null +++ b/example/android/app/src/release/java/com/example/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.example; + +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. + } +} diff --git a/example/android/build.gradle b/example/android/build.gradle new file mode 100644 index 00000000..34ea7181 --- /dev/null +++ b/example/android/build.gradle @@ -0,0 +1,21 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext { + buildToolsVersion = "33.0.0" + minSdkVersion = 21 + compileSdkVersion = 33 + targetSdkVersion = 33 + + // 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() + } + dependencies { + classpath("com.android.tools.build:gradle") + classpath("com.facebook.react:react-native-gradle-plugin") + } +} diff --git a/example/android/gradle.properties b/example/android/gradle.properties new file mode 100644 index 00000000..b0f7974b --- /dev/null +++ b/example/android/gradle.properties @@ -0,0 +1,45 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true + +# Version of flipper SDK to use with React Native +FLIPPER_VERSION=0.182.0 + +# Use this property to specify which architecture you want to build. +# You can also override it from the CLI using +# ./gradlew -PreactNativeArchitectures=x86_64 +# reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 +reactNativeArchitectures=arm64-v8a + +# Use this property to enable support to the new architecture. +# This will allow you to use TurboModules and the Fabric render in +# your application. You should enable this flag either if you want +# to write custom TurboModules/Fabric components OR use libraries that +# are providing them. +newArchEnabled=true + +# Use this property to enable or disable the Hermes JS engine. +# If set to false, you will be using JSC instead. +hermesEnabled=true diff --git a/example/android/gradle/wrapper/gradle-wrapper.jar b/example/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..943f0cbf Binary files /dev/null and b/example/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..8f2bb005 --- /dev/null +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +networkTimeout=10000 +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/example/android/gradlew b/example/android/gradlew new file mode 100755 index 00000000..65dcd68d --- /dev/null +++ b/example/android/gradlew @@ -0,0 +1,244 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + 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. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/example/android/gradlew.bat b/example/android/gradlew.bat new file mode 100644 index 00000000..6689b85b --- /dev/null +++ b/example/android/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +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! +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 diff --git a/example/android/settings.gradle b/example/android/settings.gradle new file mode 100644 index 00000000..803783e1 --- /dev/null +++ b/example/android/settings.gradle @@ -0,0 +1,4 @@ +rootProject.name = 'example' +apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) +include ':app' +includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/example-app/components/switch-with-label.tsx b/example/app/components/switch-with-label.tsx similarity index 100% rename from example-app/components/switch-with-label.tsx rename to example/app/components/switch-with-label.tsx diff --git a/example-app/home.tsx b/example/app/home.tsx similarity index 67% rename from example-app/home.tsx rename to example/app/home.tsx index 54241c4d..ebfd096f 100644 --- a/example-app/home.tsx +++ b/example/app/home.tsx @@ -1,5 +1,5 @@ import { useNavigation, useTheme } from "@react-navigation/native"; -import * as React from "react"; +import { useEffect } from "react"; import { Platform, ScrollView, @@ -9,9 +9,9 @@ import { TouchableOpacity, View, } from "react-native"; -import { AMapSdk } from "react-native-amap3d"; import { Constructor } from "react-native/private/Utilities"; -import screens from "./screens"; +import { Sdk } from "react-native-amap3d"; +// import screens from "./screens"; import { NavigationProps, ScreenName } from "./types"; let Touchable: Constructor = TouchableOpacity; @@ -21,22 +21,26 @@ if (Platform.OS === "android") { export default () => { const navigation = useNavigation(); - React.useEffect(() => { - AMapSdk.init( - Platform.select({ - android: "c52c7169e6df23490e3114330098aaac", - ios: "186d3464209b74effa4d8391f441f14d", - }) - ); - AMapSdk.getVersion().then((version) => { - navigation.setOptions({ headerRight: () => v{version} }); - }); + useEffect(() => { + Sdk?.getVersion()?.then((version) => console.log(version)); + // AMapSdk.init( + // Platform.select({ + // android: "c52c7169e6df23490e3114330098aaac", + // ios: "186d3464209b74effa4d8391f441f14d", + // }) + // ); + // AMapSdk.getVersion().then((version) => { + // navigation.setOptions({ headerRight: () => v{version} }); + // }); }, []); return ( + hello + {/* {Object.keys(screens).map((i) => ( ))} + */} ); }; diff --git a/example-app/images/flag.png b/example/app/images/flag.png similarity index 100% rename from example-app/images/flag.png rename to example/app/images/flag.png diff --git a/example-app/images/point.png b/example/app/images/point.png similarity index 100% rename from example-app/images/point.png rename to example/app/images/point.png diff --git a/example-app/index.tsx b/example/app/index.tsx similarity index 80% rename from example-app/index.tsx rename to example/app/index.tsx index e088161e..d55b84ae 100644 --- a/example-app/index.tsx +++ b/example/app/index.tsx @@ -1,8 +1,11 @@ -import { DarkTheme, DefaultTheme, NavigationContainer } from "@react-navigation/native"; +import { + DarkTheme, + DefaultTheme, + NavigationContainer, +} from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; -import * as React from "react"; import { useColorScheme } from "react-native"; -import screens from "./screens"; +// import screens from "./screens"; import Home from "./home"; const Stack = createNativeStackNavigator(); @@ -13,10 +16,12 @@ export default () => { + {/* {Object.keys(screens).map((name) => ( // @ts-ignore ))} + */} ); diff --git a/example-app/screens/animated.tsx b/example/app/screens/animated.tsx similarity index 100% rename from example-app/screens/animated.tsx rename to example/app/screens/animated.tsx diff --git a/example-app/screens/circle.tsx b/example/app/screens/circle.tsx similarity index 100% rename from example-app/screens/circle.tsx rename to example/app/screens/circle.tsx diff --git a/example-app/screens/cluster.tsx b/example/app/screens/cluster.tsx similarity index 100% rename from example-app/screens/cluster.tsx rename to example/app/screens/cluster.tsx diff --git a/example-app/screens/controls.tsx b/example/app/screens/controls.tsx similarity index 100% rename from example-app/screens/controls.tsx rename to example/app/screens/controls.tsx diff --git a/example-app/screens/events.tsx b/example/app/screens/events.tsx similarity index 100% rename from example-app/screens/events.tsx rename to example/app/screens/events.tsx diff --git a/example-app/screens/gestures.tsx b/example/app/screens/gestures.tsx similarity index 100% rename from example-app/screens/gestures.tsx rename to example/app/screens/gestures.tsx diff --git a/example-app/screens/heat-map.tsx b/example/app/screens/heat-map.tsx similarity index 100% rename from example-app/screens/heat-map.tsx rename to example/app/screens/heat-map.tsx diff --git a/example-app/screens/index.ts b/example/app/screens/index.ts similarity index 100% rename from example-app/screens/index.ts rename to example/app/screens/index.ts diff --git a/example-app/screens/layers.tsx b/example/app/screens/layers.tsx similarity index 100% rename from example-app/screens/layers.tsx rename to example/app/screens/layers.tsx diff --git a/example-app/screens/map-types.tsx b/example/app/screens/map-types.tsx similarity index 100% rename from example-app/screens/map-types.tsx rename to example/app/screens/map-types.tsx diff --git a/example-app/screens/marker-dynamic.tsx b/example/app/screens/marker-dynamic.tsx similarity index 100% rename from example-app/screens/marker-dynamic.tsx rename to example/app/screens/marker-dynamic.tsx diff --git a/example-app/screens/marker-icon.tsx b/example/app/screens/marker-icon.tsx similarity index 100% rename from example-app/screens/marker-icon.tsx rename to example/app/screens/marker-icon.tsx diff --git a/example-app/screens/marker.tsx b/example/app/screens/marker.tsx similarity index 100% rename from example-app/screens/marker.tsx rename to example/app/screens/marker.tsx diff --git a/example-app/screens/multi-point.tsx b/example/app/screens/multi-point.tsx similarity index 100% rename from example-app/screens/multi-point.tsx rename to example/app/screens/multi-point.tsx diff --git a/example-app/screens/offline.js b/example/app/screens/offline.js similarity index 100% rename from example-app/screens/offline.js rename to example/app/screens/offline.js diff --git a/example-app/screens/polygon.tsx b/example/app/screens/polygon.tsx similarity index 100% rename from example-app/screens/polygon.tsx rename to example/app/screens/polygon.tsx diff --git a/example-app/screens/polyline.tsx b/example/app/screens/polyline.tsx similarity index 100% rename from example-app/screens/polyline.tsx rename to example/app/screens/polyline.tsx diff --git a/example-app/types.ts b/example/app/types.ts similarity index 100% rename from example-app/types.ts rename to example/app/types.ts diff --git a/index.js b/example/index.js similarity index 74% rename from index.js rename to example/index.js index 10bf25ef..50a699d4 100644 --- a/index.js +++ b/example/index.js @@ -1,4 +1,4 @@ import { AppRegistry } from "react-native"; -import app from "./example-app"; +import app from "./app"; AppRegistry.registerComponent("example", () => app); diff --git a/example/metro.config.js b/example/metro.config.js new file mode 100644 index 00000000..93e0ba67 --- /dev/null +++ b/example/metro.config.js @@ -0,0 +1,2 @@ +const { getDefaultConfig, mergeConfig } = require("@react-native/metro-config"); +module.exports = mergeConfig(getDefaultConfig(__dirname), {}); diff --git a/example/package.json b/example/package.json new file mode 100644 index 00000000..18ec9ea2 --- /dev/null +++ b/example/package.json @@ -0,0 +1,24 @@ +{ + "private": true, + "name": "example", + "scripts": { + "start": "react-native start", + "android": "react-native run-android", + "reload": "adb reverse tcp:8081 tcp:8081 && adb shell input text rr", + "ios": "react-native run-ios" + }, + "dependencies": { + "@react-native-picker/picker": "^2.4.8", + "@react-native/metro-config": "^0.72.11", + "@react-navigation/native": "^6.1.3", + "@react-navigation/native-stack": "^6.9.9", + "react": "18.2.0", + "react-native": "^0.72.4", + "react-native-safe-area-context": "^4.5.0", + "react-native-screens": "^3.19.0", + "react-native-amap3d": "file:.." + }, + "devDependencies": { + "@types/react-native": "^0.72.2" + } +} diff --git a/example/pnpm-lock.yaml b/example/pnpm-lock.yaml new file mode 100644 index 00000000..9494ae92 --- /dev/null +++ b/example/pnpm-lock.yaml @@ -0,0 +1,4555 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@react-native-picker/picker': + specifier: ^2.4.8 + version: 2.5.0(react-native@0.72.4)(react@18.2.0) + '@react-native/metro-config': + specifier: ^0.72.11 + version: 0.72.11(@babel/core@7.22.15) + '@react-navigation/native': + specifier: ^6.1.3 + version: 6.1.7(react-native@0.72.4)(react@18.2.0) + '@react-navigation/native-stack': + specifier: ^6.9.9 + version: 6.9.13(@react-navigation/native@6.1.7)(react-native-safe-area-context@4.7.2)(react-native-screens@3.25.0)(react-native@0.72.4)(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-native: + specifier: ^0.72.4 + version: 0.72.4(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(react@18.2.0) + react-native-amap3d: + specifier: file:.. + version: file:..(react-native@0.72.4)(react@18.2.0) + react-native-safe-area-context: + specifier: ^4.5.0 + version: 4.7.2(react-native@0.72.4)(react@18.2.0) + react-native-screens: + specifier: ^3.19.0 + version: 3.25.0(react-native@0.72.4)(react@18.2.0) + +devDependencies: + '@types/react-native': + specifier: ^0.72.2 + version: 0.72.2(react-native@0.72.4) + +packages: + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + /@babel/code-frame@7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.13 + chalk: 2.4.2 + + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + engines: {node: '>=6.9.0'} + + /@babel/core@7.22.15: + resolution: {integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + convert-source-map: 1.9.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/generator@7.22.15: + resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.15 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.15 + + /@babel/helper-builder-binary-assignment-operator-visitor@7.22.15: + resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.15 + + /@babel/helper-compilation-targets@7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.10 + lru-cache: 5.1.1 + semver: 6.3.1 + + /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.15 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.15) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + regexpu-core: 5.3.2 + semver: 6.3.1 + + /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.15): + resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.4 + transitivePeerDependencies: + - supports-color + + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + engines: {node: '>=6.9.0'} + + /@babel/helper-function-name@7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.22.15 + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.15 + + /@babel/helper-member-expression-to-functions@7.22.15: + resolution: {integrity: sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.15 + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.15 + + /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.15 + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.15 + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + + /@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.22.15): + resolution: {integrity: sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-wrap-function': 7.22.10 + + /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.15): + resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.15 + '@babel/helper-optimise-call-expression': 7.22.5 + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.15 + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.15 + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.15 + + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.15: + resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-option@7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + + /@babel/helper-wrap-function@7.22.10: + resolution: {integrity: sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-function-name': 7.22.5 + '@babel/template': 7.22.15 + '@babel/types': 7.22.15 + + /@babel/helpers@7.22.15: + resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + transitivePeerDependencies: + - supports-color + + /@babel/highlight@7.22.13: + resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.15 + chalk: 2.4.2 + js-tokens: 4.0.0 + + /@babel/parser@7.22.16: + resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.15 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.15) + + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.22.15): + resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.15) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) + + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-proposal-export-default-from@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-UCe1X/hplyv6A5g2WnQ90tnHRvYL29dabCWww92lO7VdfMVTVReBTRrhiMrKQejHD9oVkdnRdwYuzUZkBVQisg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.22.15) + + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + + /@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.22.15): + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.15) + + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) + + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.22.15): + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.15): + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.15): + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.15): + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.15): + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.15): + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-export-default-from@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-ODAqWWXB/yReh/jVQDag/3/tl6lgBueQkk/TcfW/59Oykm4c8a55XloX0CTk2k2VJiFWMgHby9xNX29IbCv9dQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.15): + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-flow@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.15): + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.15): + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.15): + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.15): + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.15): + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.15): + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.15): + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.15): + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.22.15): + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.15): + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.22.15): + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-async-generator-functions@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.15) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) + + /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.15) + + /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-block-scoping@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-class-static-block@7.22.11(@babel/core@7.22.15): + resolution: {integrity: sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.15) + + /@babel/plugin-transform-classes@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.15) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + + /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/template': 7.22.15 + + /@babel/plugin-transform-destructuring@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-dynamic-import@7.22.11(@babel/core@7.22.15): + resolution: {integrity: sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) + + /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-export-namespace-from@7.22.11(@babel/core@7.22.15): + resolution: {integrity: sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.15) + + /@babel/plugin-transform-flow-strip-types@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) + + /@babel/plugin-transform-for-of@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-json-strings@7.22.11(@babel/core@7.22.15): + resolution: {integrity: sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) + + /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-logical-assignment-operators@7.22.11(@babel/core@7.22.15): + resolution: {integrity: sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) + + /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + + /@babel/plugin-transform-modules-systemjs@7.22.11(@babel/core@7.22.15): + resolution: {integrity: sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 + + /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-nullish-coalescing-operator@7.22.11(@babel/core@7.22.15): + resolution: {integrity: sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + + /@babel/plugin-transform-numeric-separator@7.22.11(@babel/core@7.22.15): + resolution: {integrity: sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + + /@babel/plugin-transform-object-rest-spread@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.15) + + /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.15) + + /@babel/plugin-transform-optional-catch-binding@7.22.11(@babel/core@7.22.15): + resolution: {integrity: sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) + + /@babel/plugin-transform-optional-chaining@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + + /@babel/plugin-transform-parameters@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-private-property-in-object@7.22.11(@babel/core@7.22.15): + resolution: {integrity: sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) + + /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/types': 7.22.15 + + /@babel/plugin-transform-regenerator@7.22.10(@babel/core@7.22.15): + resolution: {integrity: sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + regenerator-transform: 0.15.2 + + /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-runtime@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.15) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.15) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.15) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/plugin-transform-shorthand-properties@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + + /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.15) + + /@babel/plugin-transform-unicode-escapes@7.22.10(@babel/core@7.22.15): + resolution: {integrity: sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.15): + resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.22.15) + '@babel/helper-plugin-utils': 7.22.5 + + /@babel/preset-env@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.15) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.15) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.15) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.15) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-async-generator-functions': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-class-static-block': 7.22.11(@babel/core@7.22.15) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-dynamic-import': 7.22.11(@babel/core@7.22.15) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-export-namespace-from': 7.22.11(@babel/core@7.22.15) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-json-strings': 7.22.11(@babel/core@7.22.15) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-logical-assignment-operators': 7.22.11(@babel/core@7.22.15) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-modules-systemjs': 7.22.11(@babel/core@7.22.15) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.11(@babel/core@7.22.15) + '@babel/plugin-transform-numeric-separator': 7.22.11(@babel/core@7.22.15) + '@babel/plugin-transform-object-rest-spread': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-optional-catch-binding': 7.22.11(@babel/core@7.22.15) + '@babel/plugin-transform-optional-chaining': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-private-property-in-object': 7.22.11(@babel/core@7.22.15) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-regenerator': 7.22.10(@babel/core@7.22.15) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-escapes': 7.22.10(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.15) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.22.15) + '@babel/types': 7.22.15 + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.15) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.15) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.15) + core-js-compat: 3.32.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /@babel/preset-flow@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.15) + + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.22.15): + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/types': 7.22.15 + esutils: 2.0.3 + + /@babel/preset-typescript@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.15 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.15) + + /@babel/register@7.22.15(@babel/core@7.22.15): + resolution: {integrity: sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + clone-deep: 4.0.1 + find-cache-dir: 2.1.0 + make-dir: 2.1.0 + pirates: 4.0.6 + source-map-support: 0.5.21 + + /@babel/regjsgen@0.8.0: + resolution: {integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==} + + /@babel/runtime@7.22.15: + resolution: {integrity: sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.0 + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.15 + + /@babel/traverse@7.22.15: + resolution: {integrity: sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.15 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + /@babel/types@7.22.15: + resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.15 + to-fast-properties: 2.0.0 + + /@hapi/hoek@9.3.0: + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + /@hapi/topo@5.1.0: + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + dependencies: + '@hapi/hoek': 9.3.0 + + /@jest/create-cache-key-function@29.6.3: + resolution: {integrity: sha512-kzSK9XAxtD1kRPJKxsmD0YKw2fyXveP+5ikeQkCYCHeacWW1EGYMTgjDIM/Di4Uhttx7lnHwrNpz2xn+0rTp8g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + + /@jest/environment@29.6.4: + resolution: {integrity: sha512-sQ0SULEjA1XUTHmkBRl7A1dyITM9yb1yb3ZNKPX3KlTd6IG7mWUe3e2yfExtC2Zz1Q+mMckOLHmL/qLiuQJrBQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/fake-timers': 29.6.4 + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + jest-mock: 29.6.3 + + /@jest/fake-timers@29.6.4: + resolution: {integrity: sha512-6UkCwzoBK60edXIIWb0/KWkuj7R7Qq91vVInOe3De6DSpaEiqjKcJw4F7XUet24Wupahj9J6PlR09JqJ5ySDHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 20.5.9 + jest-message-util: 29.6.3 + jest-mock: 29.6.3 + jest-util: 29.6.3 + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + + /@jest/types@26.6.2: + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.5.9 + '@types/yargs': 15.0.15 + chalk: 4.1.2 + + /@jest/types@27.5.1: + resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.5.9 + '@types/yargs': 16.0.5 + chalk: 4.1.2 + + /@jest/types@29.6.3: + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.4 + '@types/istanbul-reports': 3.0.1 + '@types/node': 20.5.9 + '@types/yargs': 17.0.24 + chalk: 4.1.2 + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.19 + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/source-map@0.3.5: + resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.19 + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@react-native-community/cli-clean@11.3.6: + resolution: {integrity: sha512-jOOaeG5ebSXTHweq1NznVJVAFKtTFWL4lWgUXl845bCGX7t1lL8xQNWHKwT8Oh1pGR2CI3cKmRjY4hBg+pEI9g==} + dependencies: + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + execa: 5.1.1 + prompts: 2.4.2 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-config@11.3.6: + resolution: {integrity: sha512-edy7fwllSFLan/6BG6/rznOBCLPrjmJAE10FzkEqNLHowi0bckiAPg1+1jlgQ2qqAxV5kuk+c9eajVfQvPLYDA==} + dependencies: + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + cosmiconfig: 5.2.1 + deepmerge: 4.3.1 + glob: 7.2.3 + joi: 17.10.1 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-debugger-ui@11.3.6: + resolution: {integrity: sha512-jhMOSN/iOlid9jn/A2/uf7HbC3u7+lGktpeGSLnHNw21iahFBzcpuO71ekEdlmTZ4zC/WyxBXw9j2ka33T358w==} + dependencies: + serve-static: 1.15.0 + transitivePeerDependencies: + - supports-color + + /@react-native-community/cli-doctor@11.3.6: + resolution: {integrity: sha512-UT/Tt6omVPi1j6JEX+CObc85eVFghSZwy4GR9JFMsO7gNg2Tvcu1RGWlUkrbmWMAMHw127LUu6TGK66Ugu1NLA==} + dependencies: + '@react-native-community/cli-config': 11.3.6 + '@react-native-community/cli-platform-android': 11.3.6 + '@react-native-community/cli-platform-ios': 11.3.6 + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + command-exists: 1.2.9 + envinfo: 7.10.0 + execa: 5.1.1 + hermes-profile-transformer: 0.0.6 + ip: 1.1.8 + node-stream-zip: 1.15.0 + ora: 5.4.1 + prompts: 2.4.2 + semver: 7.5.4 + strip-ansi: 5.2.0 + sudo-prompt: 9.2.1 + wcwidth: 1.0.1 + yaml: 2.3.2 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-hermes@11.3.6: + resolution: {integrity: sha512-O55YAYGZ3XynpUdePPVvNuUPGPY0IJdctLAOHme73OvS80gNwfntHDXfmY70TGHWIfkK2zBhA0B+2v8s5aTyTA==} + dependencies: + '@react-native-community/cli-platform-android': 11.3.6 + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + hermes-profile-transformer: 0.0.6 + ip: 1.1.8 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-platform-android@11.3.6: + resolution: {integrity: sha512-ZARrpLv5tn3rmhZc//IuDM1LSAdYnjUmjrp58RynlvjLDI4ZEjBAGCQmgysRgXAsK7ekMrfkZgemUczfn9td2A==} + dependencies: + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + execa: 5.1.1 + glob: 7.2.3 + logkitty: 0.7.1 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-platform-ios@11.3.6: + resolution: {integrity: sha512-tZ9VbXWiRW+F+fbZzpLMZlj93g3Q96HpuMsS6DRhrTiG+vMQ3o6oPWSEEmMGOvJSYU7+y68Dc9ms2liC7VD6cw==} + dependencies: + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + execa: 5.1.1 + fast-xml-parser: 4.2.7 + glob: 7.2.3 + ora: 5.4.1 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-plugin-metro@11.3.6(@babel/core@7.22.15): + resolution: {integrity: sha512-D97racrPX3069ibyabJNKw9aJpVcaZrkYiEzsEnx50uauQtPDoQ1ELb/5c6CtMhAEGKoZ0B5MS23BbsSZcLs2g==} + dependencies: + '@react-native-community/cli-server-api': 11.3.6 + '@react-native-community/cli-tools': 11.3.6 + chalk: 4.1.2 + execa: 5.1.1 + metro: 0.76.7 + metro-config: 0.76.7 + metro-core: 0.76.7 + metro-react-native-babel-transformer: 0.76.7(@babel/core@7.22.15) + metro-resolver: 0.76.7 + metro-runtime: 0.76.7 + readline: 1.3.0 + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@react-native-community/cli-server-api@11.3.6: + resolution: {integrity: sha512-8GUKodPnURGtJ9JKg8yOHIRtWepPciI3ssXVw5jik7+dZ43yN8P5BqCoDaq8e1H1yRer27iiOfT7XVnwk8Dueg==} + dependencies: + '@react-native-community/cli-debugger-ui': 11.3.6 + '@react-native-community/cli-tools': 11.3.6 + compression: 1.7.4 + connect: 3.7.0 + errorhandler: 1.5.1 + nocache: 3.0.4 + pretty-format: 26.6.2 + serve-static: 1.15.0 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@react-native-community/cli-tools@11.3.6: + resolution: {integrity: sha512-JpmUTcDwAGiTzLsfMlIAYpCMSJ9w2Qlf7PU7mZIRyEu61UzEawyw83DkqfbzDPBuRwRnaeN44JX2CP/yTO3ThQ==} + dependencies: + appdirsjs: 1.2.7 + chalk: 4.1.2 + find-up: 5.0.0 + mime: 2.6.0 + node-fetch: 2.7.0 + open: 6.4.0 + ora: 5.4.1 + semver: 7.5.4 + shell-quote: 1.8.1 + transitivePeerDependencies: + - encoding + + /@react-native-community/cli-types@11.3.6: + resolution: {integrity: sha512-6DxjrMKx5x68N/tCJYVYRKAtlRHbtUVBZrnAvkxbRWFD9v4vhNgsPM0RQm8i2vRugeksnao5mbnRGpS6c0awCw==} + dependencies: + joi: 17.10.1 + + /@react-native-community/cli@11.3.6(@babel/core@7.22.15): + resolution: {integrity: sha512-bdwOIYTBVQ9VK34dsf6t3u6vOUU5lfdhKaAxiAVArjsr7Je88Bgs4sAbsOYsNK3tkE8G77U6wLpekknXcanlww==} + engines: {node: '>=16'} + hasBin: true + dependencies: + '@react-native-community/cli-clean': 11.3.6 + '@react-native-community/cli-config': 11.3.6 + '@react-native-community/cli-debugger-ui': 11.3.6 + '@react-native-community/cli-doctor': 11.3.6 + '@react-native-community/cli-hermes': 11.3.6 + '@react-native-community/cli-plugin-metro': 11.3.6(@babel/core@7.22.15) + '@react-native-community/cli-server-api': 11.3.6 + '@react-native-community/cli-tools': 11.3.6 + '@react-native-community/cli-types': 11.3.6 + chalk: 4.1.2 + commander: 9.5.0 + execa: 5.1.1 + find-up: 4.1.0 + fs-extra: 8.1.0 + graceful-fs: 4.2.11 + prompts: 2.4.2 + semver: 7.5.4 + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@react-native-picker/picker@2.5.0(react-native@0.72.4)(react@18.2.0): + resolution: {integrity: sha512-AEZPKwXavmP4VkUUD6bskCrNF+zgd1RvsXJ208YewZSikGZCo0RLlnQxPDrdKoFpbigSYxbvRU5d8h3TzzeQ8Q==} + peerDependencies: + react: '>=16' + react-native: '>=0.57' + dependencies: + react: 18.2.0 + react-native: 0.72.4(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(react@18.2.0) + dev: false + + /@react-native/assets-registry@0.72.0: + resolution: {integrity: sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ==} + + /@react-native/codegen@0.72.6(@babel/preset-env@7.22.15): + resolution: {integrity: sha512-idTVI1es/oopN0jJT/0jB6nKdvTUKE3757zA5+NPXZTeB46CIRbmmos4XBiAec8ufu9/DigLPbHTYAaMNZJ6Ig==} + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/parser': 7.22.16 + '@babel/preset-env': 7.22.15(@babel/core@7.22.15) + flow-parser: 0.206.0 + jscodeshift: 0.14.0(@babel/preset-env@7.22.15) + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + /@react-native/gradle-plugin@0.72.11: + resolution: {integrity: sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw==} + + /@react-native/js-polyfills@0.72.1: + resolution: {integrity: sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA==} + + /@react-native/metro-config@0.72.11(@babel/core@7.22.15): + resolution: {integrity: sha512-661EyQnDdVelyc0qP/ew7kKkGAh6N6KlkuPLC2SQ8sxaXskVU6fSuNlpLW4bUTBUDFKG8gEOU2hp6rzk4wQnGQ==} + dependencies: + '@react-native/js-polyfills': 0.72.1 + metro-config: 0.76.8 + metro-react-native-babel-transformer: 0.76.8(@babel/core@7.22.15) + metro-runtime: 0.76.8 + transitivePeerDependencies: + - '@babel/core' + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@react-native/normalize-colors@0.72.0: + resolution: {integrity: sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw==} + + /@react-native/virtualized-lists@0.72.8(react-native@0.72.4): + resolution: {integrity: sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==} + peerDependencies: + react-native: '*' + dependencies: + invariant: 2.2.4 + nullthrows: 1.1.1 + react-native: 0.72.4(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(react@18.2.0) + + /@react-navigation/core@6.4.9(react@18.2.0): + resolution: {integrity: sha512-G9GH7bP9x0qqupxZnkSftnkn4JoXancElTvFc8FVGfEvxnxP+gBo3wqcknyBi7M5Vad4qecsYjCOa9wqsftv9g==} + peerDependencies: + react: '*' + dependencies: + '@react-navigation/routers': 6.1.9 + escape-string-regexp: 4.0.0 + nanoid: 3.3.6 + query-string: 7.1.3 + react: 18.2.0 + react-is: 16.13.1 + use-latest-callback: 0.1.6(react@18.2.0) + dev: false + + /@react-navigation/elements@1.3.18(@react-navigation/native@6.1.7)(react-native-safe-area-context@4.7.2)(react-native@0.72.4)(react@18.2.0): + resolution: {integrity: sha512-/0hwnJkrr415yP0Hf4PjUKgGyfshrvNUKFXN85Mrt1gY49hy9IwxZgrrxlh0THXkPeq8q4VWw44eHDfAcQf20Q==} + peerDependencies: + '@react-navigation/native': ^6.0.0 + react: '*' + react-native: '*' + react-native-safe-area-context: '>= 3.0.0' + dependencies: + '@react-navigation/native': 6.1.7(react-native@0.72.4)(react@18.2.0) + react: 18.2.0 + react-native: 0.72.4(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(react@18.2.0) + react-native-safe-area-context: 4.7.2(react-native@0.72.4)(react@18.2.0) + dev: false + + /@react-navigation/native-stack@6.9.13(@react-navigation/native@6.1.7)(react-native-safe-area-context@4.7.2)(react-native-screens@3.25.0)(react-native@0.72.4)(react@18.2.0): + resolution: {integrity: sha512-ejlepMrvFneewL+XlXHHhn+6y3lwvavM4/R7XwBV0XJxCymujexK+7Vkg7UcvJ1lx4CRhOcyBSNfGmdNIHREyQ==} + peerDependencies: + '@react-navigation/native': ^6.0.0 + react: '*' + react-native: '*' + react-native-safe-area-context: '>= 3.0.0' + react-native-screens: '>= 3.0.0' + dependencies: + '@react-navigation/elements': 1.3.18(@react-navigation/native@6.1.7)(react-native-safe-area-context@4.7.2)(react-native@0.72.4)(react@18.2.0) + '@react-navigation/native': 6.1.7(react-native@0.72.4)(react@18.2.0) + react: 18.2.0 + react-native: 0.72.4(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(react@18.2.0) + react-native-safe-area-context: 4.7.2(react-native@0.72.4)(react@18.2.0) + react-native-screens: 3.25.0(react-native@0.72.4)(react@18.2.0) + warn-once: 0.1.1 + dev: false + + /@react-navigation/native@6.1.7(react-native@0.72.4)(react@18.2.0): + resolution: {integrity: sha512-W6E3+AtTombMucCRo6q7vPmluq8hSjS+IxfazJ/SokOe7ChJX7eLvvralIsJkjFj3iWV1KgOSnHxa6hdiFasBw==} + peerDependencies: + react: '*' + react-native: '*' + dependencies: + '@react-navigation/core': 6.4.9(react@18.2.0) + escape-string-regexp: 4.0.0 + fast-deep-equal: 3.1.3 + nanoid: 3.3.6 + react: 18.2.0 + react-native: 0.72.4(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(react@18.2.0) + dev: false + + /@react-navigation/routers@6.1.9: + resolution: {integrity: sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==} + dependencies: + nanoid: 3.3.6 + dev: false + + /@sideway/address@4.1.4: + resolution: {integrity: sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==} + dependencies: + '@hapi/hoek': 9.3.0 + + /@sideway/formula@3.0.1: + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + /@sideway/pinpoint@2.0.0: + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + /@sinonjs/commons@3.0.0: + resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} + dependencies: + type-detect: 4.0.8 + + /@sinonjs/fake-timers@10.3.0: + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + dependencies: + '@sinonjs/commons': 3.0.0 + + /@types/istanbul-lib-coverage@2.0.4: + resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} + + /@types/istanbul-lib-report@3.0.0: + resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} + dependencies: + '@types/istanbul-lib-coverage': 2.0.4 + + /@types/istanbul-reports@3.0.1: + resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} + dependencies: + '@types/istanbul-lib-report': 3.0.0 + + /@types/node@20.5.9: + resolution: {integrity: sha512-PcGNd//40kHAS3sTlzKB9C9XL4K0sTup8nbG5lC14kzEteTNuAFh9u5nA0o5TWnSG2r/JNPRXFVcHJIIeRlmqQ==} + + /@types/prop-types@15.7.5: + resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} + dev: true + + /@types/react-native@0.72.2(react-native@0.72.4): + resolution: {integrity: sha512-/eEjr04Zqo7mTMszuSdrLx90+j5nWhDMMOgtnKZfAYyV3RwmlpSb7F17ilmMMxZWJY81n/JZ4e6wdhMJFpjrCg==} + dependencies: + '@react-native/virtualized-lists': 0.72.8(react-native@0.72.4) + '@types/react': 18.2.21 + transitivePeerDependencies: + - react-native + dev: true + + /@types/react@18.2.21: + resolution: {integrity: sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA==} + dependencies: + '@types/prop-types': 15.7.5 + '@types/scheduler': 0.16.3 + csstype: 3.1.2 + dev: true + + /@types/scheduler@0.16.3: + resolution: {integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==} + dev: true + + /@types/stack-utils@2.0.1: + resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} + + /@types/yargs-parser@21.0.0: + resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} + + /@types/yargs@15.0.15: + resolution: {integrity: sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg==} + dependencies: + '@types/yargs-parser': 21.0.0 + + /@types/yargs@16.0.5: + resolution: {integrity: sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ==} + dependencies: + '@types/yargs-parser': 21.0.0 + + /@types/yargs@17.0.24: + resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} + dependencies: + '@types/yargs-parser': 21.0.0 + + /abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + dependencies: + event-target-shim: 5.0.1 + + /accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + + /anser@1.4.10: + resolution: {integrity: sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==} + + /ansi-fragments@0.2.1: + resolution: {integrity: sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==} + dependencies: + colorette: 1.4.0 + slice-ansi: 2.1.0 + strip-ansi: 5.2.0 + + /ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /appdirsjs@1.2.7: + resolution: {integrity: sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==} + + /argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + dependencies: + sprintf-js: 1.0.3 + + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + /ast-types@0.15.2: + resolution: {integrity: sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==} + engines: {node: '>=4'} + dependencies: + tslib: 2.6.2 + + /astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + + /async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + + /async@3.2.4: + resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==} + + /babel-core@7.0.0-bridge.0(@babel/core@7.22.15): + resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.15 + + /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.22.15): + resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.15) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.15): + resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.15) + core-js-compat: 3.32.1 + transitivePeerDependencies: + - supports-color + + /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.15): + resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.22.15) + transitivePeerDependencies: + - supports-color + + /babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: + resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} + + /babel-plugin-transform-flow-enums@0.0.2(@babel/core@7.22.15): + resolution: {integrity: sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==} + dependencies: + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) + transitivePeerDependencies: + - '@babel/core' + + /babel-preset-fbjs@3.4.0(@babel/core@7.22.15): + resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.15 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.15) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.15) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-for-of': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.15) + babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + /bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /browserslist@4.21.10: + resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001527 + electron-to-chromium: 1.4.509 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.10) + + /bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + dependencies: + node-int64: 0.4.0 + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + /buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + /bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + /caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + dependencies: + callsites: 2.0.0 + + /caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + dependencies: + caller-callsite: 2.0.0 + + /callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + /camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + /caniuse-lite@1.0.30001527: + resolution: {integrity: sha512-YkJi7RwPgWtXVSgK4lG9AHH57nSzvvOp9MesgXmw4Q7n0C3H04L0foHqfxcmSAm5AcWb8dW9AYj2tR7/5GnddQ==} + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + /ci-info@3.8.0: + resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} + engines: {node: '>=8'} + + /cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + dependencies: + restore-cursor: 3.1.0 + + /cli-spinners@2.9.0: + resolution: {integrity: sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==} + engines: {node: '>=6'} + + /cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + /clone-deep@4.0.1: + resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} + engines: {node: '>=6'} + dependencies: + is-plain-object: 2.0.4 + kind-of: 6.0.3 + shallow-clone: 3.0.1 + + /clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + /command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + + /commander@2.13.0: + resolution: {integrity: sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==} + + /commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + /commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + /commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + /compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /connect@3.7.0: + resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==} + engines: {node: '>= 0.10.0'} + dependencies: + debug: 2.6.9 + finalhandler: 1.1.2 + parseurl: 1.3.3 + utils-merge: 1.0.1 + transitivePeerDependencies: + - supports-color + + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + /core-js-compat@3.32.1: + resolution: {integrity: sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==} + dependencies: + browserslist: 4.21.10 + + /core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + /cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + dev: true + + /dayjs@1.11.9: + resolution: {integrity: sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==} + + /debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.0.0 + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + /decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + dev: false + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + /defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + dependencies: + clone: 1.0.4 + + /denodeify@1.2.1: + resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} + + /depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + /deprecated-react-native-prop-types@4.1.0: + resolution: {integrity: sha512-WfepZHmRbbdTvhcolb8aOKEvQdcmTMn5tKLbqbXmkBvjFjRVWAYqsXk/DBsV8TZxws8SdGHLuHaJrHSQUPRdfw==} + dependencies: + '@react-native/normalize-colors': 0.72.0 + invariant: 2.2.4 + prop-types: 15.8.1 + + /destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + /ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + /electron-to-chromium@1.4.509: + resolution: {integrity: sha512-G5KlSWY0zzhANtX15tkikHl4WB7zil2Y65oT52EZUL194abjUXBZym12Ht7Bhuwm/G3LJFEqMADyv2Cks56dmg==} + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + /envinfo@7.10.0: + resolution: {integrity: sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==} + engines: {node: '>=4'} + hasBin: true + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + + /error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + dependencies: + stackframe: 1.3.4 + + /errorhandler@1.5.1: + resolution: {integrity: sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==} + engines: {node: '>= 0.8'} + dependencies: + accepts: 1.3.8 + escape-html: 1.0.3 + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + + /escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + /escape-string-regexp@1.0.5: + 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'} + dev: false + + /esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + /event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: false + + /fast-xml-parser@4.2.7: + resolution: {integrity: sha512-J8r6BriSLO1uj2miOk1NW0YVm8AGOOu3Si2HQp/cSmo6EA4m3fcwu2WKjJ4RK9wMLBtg69y1kS8baDiQBR41Ig==} + hasBin: true + dependencies: + strnum: 1.0.5 + + /fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + dependencies: + bser: 2.1.1 + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + dev: false + + /finalhandler@1.1.2: + resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==} + engines: {node: '>= 0.8'} + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.3.0 + parseurl: 1.3.3 + statuses: 1.5.0 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + /find-cache-dir@2.1.0: + resolution: {integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==} + engines: {node: '>=6'} + dependencies: + commondir: 1.0.1 + make-dir: 2.1.0 + pkg-dir: 3.0.0 + + /find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + dependencies: + locate-path: 3.0.0 + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /flow-enums-runtime@0.0.5: + resolution: {integrity: sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ==} + + /flow-parser@0.206.0: + resolution: {integrity: sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==} + engines: {node: '>=0.4.0'} + + /fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + /fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind@1.1.1: + resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has@1.0.3: + resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} + engines: {node: '>= 0.4.0'} + dependencies: + function-bind: 1.1.1 + + /hermes-estree@0.12.0: + resolution: {integrity: sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw==} + + /hermes-parser@0.12.0: + resolution: {integrity: sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==} + dependencies: + hermes-estree: 0.12.0 + + /hermes-profile-transformer@0.0.6: + resolution: {integrity: sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==} + engines: {node: '>=8'} + dependencies: + source-map: 0.7.4 + + /http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + /ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + /image-size@1.0.2: + resolution: {integrity: sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + queue: 6.0.2 + + /import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + dependencies: + loose-envify: 1.4.0 + + /ip@1.1.8: + resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + /is-core-module@2.13.0: + resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + dependencies: + has: 1.0.3 + + /is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + /is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + dependencies: + isobject: 3.0.1 + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + /is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + /is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + /isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + /jest-environment-node@29.6.4: + resolution: {integrity: sha512-i7SbpH2dEIFGNmxGCpSc2w9cA4qVD+wfvg2ZnfQ7XVrKL0NA5uDVBIiGH8SR4F0dKEv/0qI5r+aDomDf04DpEQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/environment': 29.6.4 + '@jest/fake-timers': 29.6.4 + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + jest-mock: 29.6.3 + jest-util: 29.6.3 + + /jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + /jest-message-util@29.6.3: + resolution: {integrity: sha512-FtzaEEHzjDpQp51HX4UMkPZjy46ati4T5pEMyM6Ik48ztu4T9LQplZ6OsimHx7EuM9dfEh5HJa6D3trEftu3dA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@babel/code-frame': 7.22.13 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + pretty-format: 29.6.3 + slash: 3.0.0 + stack-utils: 2.0.6 + + /jest-mock@29.6.3: + resolution: {integrity: sha512-Z7Gs/mOyTSR4yPsaZ72a/MtuK6RnC3JYqWONe48oLaoEcYwEDxqvbXz85G4SJrm2Z5Ar9zp6MiHF4AlFlRM4Pg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + jest-util: 29.6.3 + + /jest-regex-util@27.5.1: + resolution: {integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + /jest-util@27.5.1: + resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + dependencies: + '@jest/types': 27.5.1 + '@types/node': 20.5.9 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + /jest-util@29.6.3: + resolution: {integrity: sha512-QUjna/xSy4B32fzcKTSz1w7YYzgiHrjjJjevdRf61HYk998R5vVMMNmrHESYZVDS5DSWs+1srPLPKxXPkeSDOA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + '@types/node': 20.5.9 + chalk: 4.1.2 + ci-info: 3.8.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + /jest-validate@29.6.3: + resolution: {integrity: sha512-e7KWZcAIX+2W1o3cHfnqpGajdCs1jSM3DkXjGeLSNmCazv1EeI1ggTeK5wdZhF+7N+g44JI2Od3veojoaumlfg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/types': 29.6.3 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 29.6.3 + leven: 3.1.0 + pretty-format: 29.6.3 + + /jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + dependencies: + '@types/node': 20.5.9 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + /joi@17.10.1: + resolution: {integrity: sha512-vIiDxQKmRidUVp8KngT8MZSOcmRVm2zV7jbMjNYWuHcJWI0bUck3nRTGQjhpPlQenIQIBC5Vp9AhcnHbWQqafw==} + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.4 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + /js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + /jsc-android@250231.0.0: + resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} + + /jsc-safe-url@0.2.4: + resolution: {integrity: sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==} + + /jscodeshift@0.14.0(@babel/preset-env@7.22.15): + resolution: {integrity: sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==} + hasBin: true + peerDependencies: + '@babel/preset-env': ^7.1.6 + dependencies: + '@babel/core': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.15) + '@babel/preset-env': 7.22.15(@babel/core@7.22.15) + '@babel/preset-flow': 7.22.15(@babel/core@7.22.15) + '@babel/preset-typescript': 7.22.15(@babel/core@7.22.15) + '@babel/register': 7.22.15(@babel/core@7.22.15) + babel-core: 7.0.0-bridge.0(@babel/core@7.22.15) + chalk: 4.1.2 + flow-parser: 0.206.0 + graceful-fs: 4.2.11 + micromatch: 4.0.5 + neo-async: 2.6.2 + node-dir: 0.1.17 + recast: 0.21.5 + temp: 0.8.4 + write-file-atomic: 2.4.3 + transitivePeerDependencies: + - supports-color + + /jsesc@0.5.0: + resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==} + hasBin: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + /json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + /jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + optionalDependencies: + graceful-fs: 4.2.11 + + /kdbush@4.0.2: + resolution: {integrity: sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==} + dev: false + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + /kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + /leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + /locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + + /log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + /logkitty@0.7.1: + resolution: {integrity: sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==} + hasBin: true + dependencies: + ansi-fragments: 0.2.1 + dayjs: 1.11.9 + yargs: 15.4.1 + + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + dependencies: + pify: 4.0.1 + semver: 5.7.2 + + /makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + dependencies: + tmpl: 1.0.5 + + /memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + /metro-babel-transformer@0.76.7: + resolution: {integrity: sha512-bgr2OFn0J4r0qoZcHrwEvccF7g9k3wdgTOgk6gmGHrtlZ1Jn3oCpklW/DfZ9PzHfjY2mQammKTc19g/EFGyOJw==} + engines: {node: '>=16'} + dependencies: + '@babel/core': 7.22.15 + hermes-parser: 0.12.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + /metro-babel-transformer@0.76.8: + resolution: {integrity: sha512-Hh6PW34Ug/nShlBGxkwQJSgPGAzSJ9FwQXhUImkzdsDgVu6zj5bx258J8cJVSandjNoQ8nbaHK6CaHlnbZKbyA==} + engines: {node: '>=16'} + dependencies: + '@babel/core': 7.22.15 + hermes-parser: 0.12.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-cache-key@0.76.7: + resolution: {integrity: sha512-0pecoIzwsD/Whn/Qfa+SDMX2YyasV0ndbcgUFx7w1Ct2sLHClujdhQ4ik6mvQmsaOcnGkIyN0zcceMDjC2+BFQ==} + engines: {node: '>=16'} + + /metro-cache-key@0.76.8: + resolution: {integrity: sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw==} + engines: {node: '>=16'} + dev: false + + /metro-cache@0.76.7: + resolution: {integrity: sha512-nWBMztrs5RuSxZRI7hgFgob5PhYDmxICh9FF8anm9/ito0u0vpPvRxt7sRu8fyeD2AHdXqE7kX32rWY0LiXgeg==} + engines: {node: '>=16'} + dependencies: + metro-core: 0.76.7 + rimraf: 3.0.2 + + /metro-cache@0.76.8: + resolution: {integrity: sha512-QBJSJIVNH7Hc/Yo6br/U/qQDUpiUdRgZ2ZBJmvAbmAKp2XDzsapnMwK/3BGj8JNWJF7OLrqrYHsRsukSbUBpvQ==} + engines: {node: '>=16'} + dependencies: + metro-core: 0.76.8 + rimraf: 3.0.2 + dev: false + + /metro-config@0.76.7: + resolution: {integrity: sha512-CFDyNb9bqxZemiChC/gNdXZ7OQkIwmXzkrEXivcXGbgzlt/b2juCv555GWJHyZSlorwnwJfY3uzAFu4A9iRVfg==} + engines: {node: '>=16'} + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + jest-validate: 29.6.3 + metro: 0.76.7 + metro-cache: 0.76.7 + metro-core: 0.76.7 + metro-runtime: 0.76.7 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /metro-config@0.76.8: + resolution: {integrity: sha512-SL1lfKB0qGHALcAk2zBqVgQZpazDYvYFGwCK1ikz0S6Y/CM2i2/HwuZN31kpX6z3mqjv/6KvlzaKoTb1otuSAA==} + engines: {node: '>=16'} + dependencies: + connect: 3.7.0 + cosmiconfig: 5.2.1 + jest-validate: 29.6.3 + metro: 0.76.8 + metro-cache: 0.76.8 + metro-core: 0.76.8 + metro-runtime: 0.76.8 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /metro-core@0.76.7: + resolution: {integrity: sha512-0b8KfrwPmwCMW+1V7ZQPkTy2tsEKZjYG9Pu1PTsu463Z9fxX7WaR0fcHFshv+J1CnQSUTwIGGjbNvj1teKe+pw==} + engines: {node: '>=16'} + dependencies: + lodash.throttle: 4.1.1 + metro-resolver: 0.76.7 + + /metro-core@0.76.8: + resolution: {integrity: sha512-sl2QLFI3d1b1XUUGxwzw/KbaXXU/bvFYrSKz6Sg19AdYGWFyzsgZ1VISRIDf+HWm4R/TJXluhWMEkEtZuqi3qA==} + engines: {node: '>=16'} + dependencies: + lodash.throttle: 4.1.1 + metro-resolver: 0.76.8 + dev: false + + /metro-file-map@0.76.7: + resolution: {integrity: sha512-s+zEkTcJ4mOJTgEE2ht4jIo1DZfeWreQR3tpT3gDV/Y/0UQ8aJBTv62dE775z0GLsWZApiblAYZsj7ZE8P06nw==} + engines: {node: '>=16'} + dependencies: + anymatch: 3.1.3 + debug: 2.6.9 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.5 + node-abort-controller: 3.1.1 + nullthrows: 1.1.1 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - supports-color + + /metro-file-map@0.76.8: + resolution: {integrity: sha512-A/xP1YNEVwO1SUV9/YYo6/Y1MmzhL4ZnVgcJC3VmHp/BYVOXVStzgVbWv2wILe56IIMkfXU+jpXrGKKYhFyHVw==} + engines: {node: '>=16'} + dependencies: + anymatch: 3.1.3 + debug: 2.6.9 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-regex-util: 27.5.1 + jest-util: 27.5.1 + jest-worker: 27.5.1 + micromatch: 4.0.5 + node-abort-controller: 3.1.1 + nullthrows: 1.1.1 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-inspector-proxy@0.76.7: + resolution: {integrity: sha512-rNZ/6edTl/1qUekAhAbaFjczMphM50/UjtxiKulo6vqvgn/Mjd9hVqDvVYfAMZXqPvlusD88n38UjVYPkruLSg==} + engines: {node: '>=16'} + hasBin: true + dependencies: + connect: 3.7.0 + debug: 2.6.9 + node-fetch: 2.7.0 + ws: 7.5.9 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /metro-inspector-proxy@0.76.8: + resolution: {integrity: sha512-Us5o5UEd4Smgn1+TfHX4LvVPoWVo9VsVMn4Ldbk0g5CQx3Gu0ygc/ei2AKPGTwsOZmKxJeACj7yMH2kgxQP/iw==} + engines: {node: '>=16'} + hasBin: true + dependencies: + connect: 3.7.0 + debug: 2.6.9 + node-fetch: 2.7.0 + ws: 7.5.9 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /metro-minify-terser@0.76.7: + resolution: {integrity: sha512-FQiZGhIxCzhDwK4LxyPMLlq0Tsmla10X7BfNGlYFK0A5IsaVKNJbETyTzhpIwc+YFRT4GkFFwgo0V2N5vxO5HA==} + engines: {node: '>=16'} + dependencies: + terser: 5.19.4 + + /metro-minify-terser@0.76.8: + resolution: {integrity: sha512-Orbvg18qXHCrSj1KbaeSDVYRy/gkro2PC7Fy2tDSH1c9RB4aH8tuMOIXnKJE+1SXxBtjWmQ5Yirwkth2DyyEZA==} + engines: {node: '>=16'} + dependencies: + terser: 5.19.4 + dev: false + + /metro-minify-uglify@0.76.7: + resolution: {integrity: sha512-FuXIU3j2uNcSvQtPrAJjYWHruPiQ+EpE++J9Z+VznQKEHcIxMMoQZAfIF2IpZSrZYfLOjVFyGMvj41jQMxV1Vw==} + engines: {node: '>=16'} + dependencies: + uglify-es: 3.3.9 + + /metro-minify-uglify@0.76.8: + resolution: {integrity: sha512-6l8/bEvtVaTSuhG1FqS0+Mc8lZ3Bl4RI8SeRIifVLC21eeSDp4CEBUWSGjpFyUDfi6R5dXzYaFnSgMNyfxADiQ==} + engines: {node: '>=16'} + dependencies: + uglify-es: 3.3.9 + dev: false + + /metro-react-native-babel-preset@0.76.7(@babel/core@7.22.15): + resolution: {integrity: sha512-R25wq+VOSorAK3hc07NW0SmN8z9S/IR0Us0oGAsBcMZnsgkbOxu77Mduqf+f4is/wnWHc5+9bfiqdLnaMngiVw==} + engines: {node: '>=16'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.22.15 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.22.15) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-export-default-from': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.15) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-runtime': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.15) + '@babel/template': 7.22.15 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.22.15) + react-refresh: 0.4.3 + transitivePeerDependencies: + - supports-color + + /metro-react-native-babel-preset@0.76.8(@babel/core@7.22.15): + resolution: {integrity: sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg==} + engines: {node: '>=16'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.22.15 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.22.15) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-export-default-from': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.22.15) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.22.15) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.22.15) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-export-default-from': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-flow': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.15) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-block-scoping': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-classes': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-destructuring': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-flow-strip-types': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-parameters': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-react-display-name': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-runtime': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.15) + '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.15) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.15) + '@babel/template': 7.22.15 + babel-plugin-transform-flow-enums: 0.0.2(@babel/core@7.22.15) + react-refresh: 0.4.3 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-react-native-babel-transformer@0.76.7(@babel/core@7.22.15): + resolution: {integrity: sha512-W6lW3J7y/05ph3c2p3KKJNhH0IdyxdOCbQ5it7aM2MAl0SM4wgKjaV6EYv9b3rHklpV6K3qMH37UKVcjMooWiA==} + engines: {node: '>=16'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.22.15 + babel-preset-fbjs: 3.4.0(@babel/core@7.22.15) + hermes-parser: 0.12.0 + metro-react-native-babel-preset: 0.76.7(@babel/core@7.22.15) + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + /metro-react-native-babel-transformer@0.76.8(@babel/core@7.22.15): + resolution: {integrity: sha512-3h+LfS1WG1PAzhq8QF0kfXjxuXetbY/lgz8vYMQhgrMMp17WM1DNJD0gjx8tOGYbpbBC1qesJ45KMS4o5TA73A==} + engines: {node: '>=16'} + peerDependencies: + '@babel/core': '*' + dependencies: + '@babel/core': 7.22.15 + babel-preset-fbjs: 3.4.0(@babel/core@7.22.15) + hermes-parser: 0.12.0 + metro-react-native-babel-preset: 0.76.8(@babel/core@7.22.15) + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-resolver@0.76.7: + resolution: {integrity: sha512-pC0Wgq29HHIHrwz23xxiNgylhI8Rq1V01kQaJ9Kz11zWrIdlrH0ZdnJ7GC6qA0ErROG+cXmJ0rJb8/SW1Zp2IA==} + engines: {node: '>=16'} + + /metro-resolver@0.76.8: + resolution: {integrity: sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ==} + engines: {node: '>=16'} + dev: false + + /metro-runtime@0.76.7: + resolution: {integrity: sha512-MuWHubQHymUWBpZLwuKZQgA/qbb35WnDAKPo83rk7JRLIFPvzXSvFaC18voPuzJBt1V98lKQIonh6MiC9gd8Ug==} + engines: {node: '>=16'} + dependencies: + '@babel/runtime': 7.22.15 + react-refresh: 0.4.3 + + /metro-runtime@0.76.8: + resolution: {integrity: sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg==} + engines: {node: '>=16'} + dependencies: + '@babel/runtime': 7.22.15 + react-refresh: 0.4.3 + + /metro-source-map@0.76.7: + resolution: {integrity: sha512-Prhx7PeRV1LuogT0Kn5VjCuFu9fVD68eefntdWabrksmNY6mXK8pRqzvNJOhTojh6nek+RxBzZeD6MIOOyXS6w==} + engines: {node: '>=16'} + dependencies: + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + invariant: 2.2.4 + metro-symbolicate: 0.76.7 + nullthrows: 1.1.1 + ob1: 0.76.7 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + /metro-source-map@0.76.8: + resolution: {integrity: sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw==} + engines: {node: '>=16'} + dependencies: + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + invariant: 2.2.4 + metro-symbolicate: 0.76.8 + nullthrows: 1.1.1 + ob1: 0.76.8 + source-map: 0.5.7 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + /metro-symbolicate@0.76.7: + resolution: {integrity: sha512-p0zWEME5qLSL1bJb93iq+zt5fz3sfVn9xFYzca1TJIpY5MommEaS64Va87lp56O0sfEIvh4307Oaf/ZzRjuLiQ==} + engines: {node: '>=16'} + hasBin: true + dependencies: + invariant: 2.2.4 + metro-source-map: 0.76.7 + nullthrows: 1.1.1 + source-map: 0.5.7 + through2: 2.0.5 + vlq: 1.0.1 + transitivePeerDependencies: + - supports-color + + /metro-symbolicate@0.76.8: + resolution: {integrity: sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w==} + engines: {node: '>=16'} + hasBin: true + dependencies: + invariant: 2.2.4 + metro-source-map: 0.76.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.76.7: + resolution: {integrity: sha512-iSmnjVApbdivjuzb88Orb0JHvcEt5veVyFAzxiS5h0QB+zV79w6JCSqZlHCrbNOkOKBED//LqtKbFVakxllnNg==} + engines: {node: '>=16'} + dependencies: + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + + /metro-transform-plugins@0.76.8: + resolution: {integrity: sha512-PlkGTQNqS51Bx4vuufSQCdSn2R2rt7korzngo+b5GCkeX5pjinPjnO2kNhQ8l+5bO0iUD/WZ9nsM2PGGKIkWFA==} + engines: {node: '>=16'} + dependencies: + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + nullthrows: 1.1.1 + transitivePeerDependencies: + - supports-color + dev: false + + /metro-transform-worker@0.76.7: + resolution: {integrity: sha512-cGvELqFMVk9XTC15CMVzrCzcO6sO1lURfcbgjuuPdzaWuD11eEyocvkTX0DPiRjsvgAmicz4XYxVzgYl3MykDw==} + engines: {node: '>=16'} + dependencies: + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.15 + babel-preset-fbjs: 3.4.0(@babel/core@7.22.15) + metro: 0.76.7 + metro-babel-transformer: 0.76.7 + metro-cache: 0.76.7 + metro-cache-key: 0.76.7 + metro-source-map: 0.76.7 + metro-transform-plugins: 0.76.7 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /metro-transform-worker@0.76.8: + resolution: {integrity: sha512-mE1fxVAnJKmwwJyDtThildxxos9+DGs9+vTrx2ktSFMEVTtXS/bIv2W6hux1pqivqAfyJpTeACXHk5u2DgGvIQ==} + engines: {node: '>=16'} + dependencies: + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.15 + babel-preset-fbjs: 3.4.0(@babel/core@7.22.15) + metro: 0.76.8 + metro-babel-transformer: 0.76.8 + metro-cache: 0.76.8 + metro-cache-key: 0.76.8 + metro-source-map: 0.76.8 + metro-transform-plugins: 0.76.8 + nullthrows: 1.1.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /metro@0.76.7: + resolution: {integrity: sha512-67ZGwDeumEPnrHI+pEDSKH2cx+C81Gx8Mn5qOtmGUPm/Up9Y4I1H2dJZ5n17MWzejNo0XAvPh0QL0CrlJEODVQ==} + engines: {node: '>=16'} + hasBin: true + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + accepts: 1.3.8 + async: 3.2.4 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 2.6.9 + denodeify: 1.2.1 + error-stack-parser: 2.1.4 + graceful-fs: 4.2.11 + hermes-parser: 0.12.0 + image-size: 1.0.2 + invariant: 2.2.4 + jest-worker: 27.5.1 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.76.7 + metro-cache: 0.76.7 + metro-cache-key: 0.76.7 + metro-config: 0.76.7 + metro-core: 0.76.7 + metro-file-map: 0.76.7 + metro-inspector-proxy: 0.76.7 + metro-minify-terser: 0.76.7 + metro-minify-uglify: 0.76.7 + metro-react-native-babel-preset: 0.76.7(@babel/core@7.22.15) + metro-resolver: 0.76.7 + metro-runtime: 0.76.7 + metro-source-map: 0.76.7 + metro-symbolicate: 0.76.7 + metro-transform-plugins: 0.76.7 + metro-transform-worker: 0.76.7 + mime-types: 2.1.35 + node-fetch: 2.7.0 + nullthrows: 1.1.1 + rimraf: 3.0.2 + serialize-error: 2.1.0 + source-map: 0.5.7 + strip-ansi: 6.0.1 + throat: 5.0.0 + ws: 7.5.9 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /metro@0.76.8: + resolution: {integrity: sha512-oQA3gLzrrYv3qKtuWArMgHPbHu8odZOD9AoavrqSFllkPgOtmkBvNNDLCELqv5SjBfqjISNffypg+5UGG3y0pg==} + engines: {node: '>=16'} + hasBin: true + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/core': 7.22.15 + '@babel/generator': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.15 + '@babel/types': 7.22.15 + accepts: 1.3.8 + async: 3.2.4 + chalk: 4.1.2 + ci-info: 2.0.0 + connect: 3.7.0 + debug: 2.6.9 + denodeify: 1.2.1 + error-stack-parser: 2.1.4 + graceful-fs: 4.2.11 + hermes-parser: 0.12.0 + image-size: 1.0.2 + invariant: 2.2.4 + jest-worker: 27.5.1 + jsc-safe-url: 0.2.4 + lodash.throttle: 4.1.1 + metro-babel-transformer: 0.76.8 + metro-cache: 0.76.8 + metro-cache-key: 0.76.8 + metro-config: 0.76.8 + metro-core: 0.76.8 + metro-file-map: 0.76.8 + metro-inspector-proxy: 0.76.8 + metro-minify-terser: 0.76.8 + metro-minify-uglify: 0.76.8 + metro-react-native-babel-preset: 0.76.8(@babel/core@7.22.15) + metro-resolver: 0.76.8 + metro-runtime: 0.76.8 + metro-source-map: 0.76.8 + metro-symbolicate: 0.76.8 + metro-transform-plugins: 0.76.8 + metro-transform-worker: 0.76.8 + mime-types: 2.1.35 + node-fetch: 2.7.0 + nullthrows: 1.1.1 + rimraf: 3.0.2 + serialize-error: 2.1.0 + source-map: 0.5.7 + strip-ansi: 6.0.1 + throat: 5.0.0 + ws: 7.5.9 + yargs: 17.7.2 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + /mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + + /ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: false + + /negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + /neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + /nocache@3.0.4: + resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==} + engines: {node: '>=12.0.0'} + + /node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + /node-dir@0.1.17: + resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} + engines: {node: '>= 0.10.5'} + dependencies: + minimatch: 3.1.2 + + /node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: 5.0.0 + + /node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + + /node-stream-zip@1.15.0: + resolution: {integrity: sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==} + engines: {node: '>=0.12.0'} + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + + /nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + /ob1@0.76.7: + resolution: {integrity: sha512-BQdRtxxoUNfSoZxqeBGOyuT9nEYSn18xZHwGMb0mMVpn2NBcYbnyKY4BK2LIHRgw33CBGlUmE+KMaNvyTpLLtQ==} + engines: {node: '>=16'} + + /ob1@0.76.8: + resolution: {integrity: sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g==} + engines: {node: '>=16'} + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /on-finished@2.3.0: + resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + + /on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + dependencies: + ee-first: 1.1.1 + + /on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + + /open@6.4.0: + resolution: {integrity: sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==} + engines: {node: '>=8'} + dependencies: + is-wsl: 1.1.0 + + /ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.0 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + dependencies: + p-limit: 2.3.0 + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + /parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + /parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + /path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + /pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + dependencies: + find-up: 3.0.0 + + /pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + + /pretty-format@29.6.3: + resolution: {integrity: sha512-ZsBgjVhFAj5KeK+nHfF1305/By3lechHQSMWCTl8iHSbfOm2TN5nHEtFc/+W7fAyUeCs2n5iow72gld4gW0xDw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + + /process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + /promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + dependencies: + asap: 2.0.6 + + /prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + /prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + /query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + dev: false + + /queue@6.0.2: + resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} + dependencies: + inherits: 2.0.4 + + /range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + /react-devtools-core@4.28.0: + resolution: {integrity: sha512-E3C3X1skWBdBzwpOUbmXG8SgH6BtsluSMe+s6rRcujNKG1DGi8uIfhdhszkgDpAsMoE55hwqRUzeXCmETDBpTg==} + dependencies: + shell-quote: 1.8.1 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + /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.2.0 + dev: false + + /react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + /react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + + /react-native-safe-area-context@4.7.2(react-native@0.72.4)(react@18.2.0): + resolution: {integrity: sha512-5fy/hRNJ7bI/U2SliOeKf0D80J4lXPc1NsRiNS7Xaz8YTnqlzWib1ViItkwKPfufe54YKzVBMmM32RpdzvO2gg==} + peerDependencies: + react: '*' + react-native: '*' + dependencies: + react: 18.2.0 + react-native: 0.72.4(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(react@18.2.0) + dev: false + + /react-native-screens@3.25.0(react-native@0.72.4)(react@18.2.0): + resolution: {integrity: sha512-TSC2Ad0hh763I8QT6XxMsPXAagQ+RawDSdFtKRvIz9fCYr96AjRwwaqmYivbqlDywOgcRBkIVynkFtp0ThmlYw==} + peerDependencies: + react: '*' + react-native: '*' + dependencies: + react: 18.2.0 + react-freeze: 1.0.3(react@18.2.0) + react-native: 0.72.4(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(react@18.2.0) + warn-once: 0.1.1 + dev: false + + /react-native@0.72.4(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(react@18.2.0): + resolution: {integrity: sha512-+vrObi0wZR+NeqL09KihAAdVlQ9IdplwznJWtYrjnQ4UbCW6rkzZJebRsugwUneSOKNFaHFEo1uKU89HsgtYBg==} + engines: {node: '>=16'} + hasBin: true + peerDependencies: + react: 18.2.0 + dependencies: + '@jest/create-cache-key-function': 29.6.3 + '@react-native-community/cli': 11.3.6(@babel/core@7.22.15) + '@react-native-community/cli-platform-android': 11.3.6 + '@react-native-community/cli-platform-ios': 11.3.6 + '@react-native/assets-registry': 0.72.0 + '@react-native/codegen': 0.72.6(@babel/preset-env@7.22.15) + '@react-native/gradle-plugin': 0.72.11 + '@react-native/js-polyfills': 0.72.1 + '@react-native/normalize-colors': 0.72.0 + '@react-native/virtualized-lists': 0.72.8(react-native@0.72.4) + abort-controller: 3.0.0 + anser: 1.4.10 + base64-js: 1.5.1 + deprecated-react-native-prop-types: 4.1.0 + event-target-shim: 5.0.1 + flow-enums-runtime: 0.0.5 + invariant: 2.2.4 + jest-environment-node: 29.6.4 + jsc-android: 250231.0.0 + memoize-one: 5.2.1 + metro-runtime: 0.76.8 + metro-source-map: 0.76.8 + mkdirp: 0.5.6 + nullthrows: 1.1.1 + pretty-format: 26.6.2 + promise: 8.3.0 + react: 18.2.0 + react-devtools-core: 4.28.0 + react-refresh: 0.4.3 + react-shallow-renderer: 16.15.0(react@18.2.0) + regenerator-runtime: 0.13.11 + scheduler: 0.24.0-canary-efb381bbf-20230505 + stacktrace-parser: 0.1.10 + use-sync-external-store: 1.2.0(react@18.2.0) + whatwg-fetch: 3.6.18 + ws: 6.2.2 + yargs: 17.7.2 + transitivePeerDependencies: + - '@babel/core' + - '@babel/preset-env' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /react-refresh@0.4.3: + resolution: {integrity: sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==} + engines: {node: '>=0.10.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.2.0 + react-is: 18.2.0 + + /react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + + /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.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 + + /readline@1.3.0: + resolution: {integrity: sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==} + + /recast@0.21.5: + resolution: {integrity: sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==} + engines: {node: '>= 4'} + dependencies: + ast-types: 0.15.2 + esprima: 4.0.1 + source-map: 0.6.1 + tslib: 2.6.2 + + /regenerate-unicode-properties@10.1.0: + resolution: {integrity: sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==} + engines: {node: '>=4'} + dependencies: + regenerate: 1.4.2 + + /regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + /regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + /regenerator-runtime@0.14.0: + resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + + /regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + dependencies: + '@babel/runtime': 7.22.15 + + /regexpu-core@5.3.2: + resolution: {integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==} + engines: {node: '>=4'} + dependencies: + '@babel/regjsgen': 0.8.0 + regenerate: 1.4.2 + regenerate-unicode-properties: 10.1.0 + regjsparser: 0.9.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.1.0 + + /regjsparser@0.9.1: + resolution: {integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==} + hasBin: true + dependencies: + jsesc: 0.5.0 + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + /require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + /resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + /resolve@1.22.4: + resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + /rimraf@2.6.3: + resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + /scheduler@0.24.0-canary-efb381bbf-20230505: + resolution: {integrity: sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==} + dependencies: + loose-envify: 1.4.0 + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + /serialize-error@2.1.0: + resolution: {integrity: sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==} + engines: {node: '>=0.10.0'} + + /serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + /set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + /setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + /shallow-clone@3.0.1: + resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} + engines: {node: '>=8'} + dependencies: + kind-of: 6.0.3 + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /shell-quote@1.8.1: + resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==} + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + /sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + /slice-ansi@2.1.0: + resolution: {integrity: sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==} + engines: {node: '>=6'} + dependencies: + ansi-styles: 3.2.1 + astral-regex: 1.0.0 + is-fullwidth-code-point: 2.0.0 + + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + /source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + /split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + dev: false + + /sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + /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==} + + /stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + dependencies: + type-fest: 0.7.1 + + /statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + /statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + /strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + dev: false + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + dependencies: + safe-buffer: 5.1.2 + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + + /strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + dependencies: + ansi-regex: 4.1.1 + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + /strnum@1.0.5: + resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} + + /sudo-prompt@9.2.1: + resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + + /supercluster@8.0.1: + resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==} + dependencies: + kdbush: 4.0.2 + dev: false + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + dependencies: + has-flag: 4.0.0 + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /temp@0.8.4: + resolution: {integrity: sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==} + engines: {node: '>=6.0.0'} + dependencies: + rimraf: 2.6.3 + + /terser@5.19.4: + resolution: {integrity: sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.10.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + /throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + + /through2@2.0.5: + resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} + dependencies: + readable-stream: 2.3.8 + xtend: 4.0.2 + + /tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + /tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + /type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + /uglify-es@3.3.9: + resolution: {integrity: sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==} + engines: {node: '>=0.8.0'} + deprecated: support for ECMAScript is superseded by `uglify-js` as of v3.13.0 + hasBin: true + dependencies: + commander: 2.13.0 + source-map: 0.6.1 + + /unicode-canonical-property-names-ecmascript@2.0.0: + resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} + engines: {node: '>=4'} + + /unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.0 + unicode-property-aliases-ecmascript: 2.1.0 + + /unicode-match-property-value-ecmascript@2.1.0: + resolution: {integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==} + engines: {node: '>=4'} + + /unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + /universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + /unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + /update-browserslist-db@1.0.11(browserslist@4.21.10): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.10 + escalade: 3.1.1 + picocolors: 1.0.0 + + /use-latest-callback@0.1.6(react@18.2.0): + resolution: {integrity: sha512-VO/P91A/PmKH9bcN9a7O3duSuxe6M14ZoYXgA6a8dab8doWNdhiIHzEkX/jFeTTRBsX0Ubk6nG4q2NIjNsj+bg==} + peerDependencies: + react: '>=16.8' + dependencies: + react: 18.2.0 + dev: false + + /use-sync-external-store@1.2.0(react@18.2.0): + resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + /vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + /vlq@1.0.1: + resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + + /walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + dependencies: + makeerror: 1.0.12 + + /warn-once@0.1.1: + resolution: {integrity: sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==} + dev: false + + /wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + dependencies: + defaults: 1.0.4 + + /webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + /whatwg-fetch@3.6.18: + resolution: {integrity: sha512-ltN7j66EneWn5TFDO4L9inYC1D+Czsxlrw2SalgjMmEMkLfA5SIZxEFdE6QtHFiiM6Q7WL32c7AkI3w6yxM84Q==} + + /whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + /which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /write-file-atomic@2.4.3: + resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==} + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + /ws@6.2.2: + resolution: {integrity: sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dependencies: + async-limiter: 1.0.1 + + /ws@7.5.9: + resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + /y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml@2.3.2: + resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} + engines: {node: '>= 14'} + + /yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + /yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + 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 + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + file:..(react-native@0.72.4)(react@18.2.0): + resolution: {directory: .., type: directory} + id: file:.. + name: react-native-amap3d + peerDependencies: + react: '*' + react-native: '*' + dependencies: + react: 18.2.0 + react-native: 0.72.4(@babel/core@7.22.15)(@babel/preset-env@7.22.15)(react@18.2.0) + supercluster: 8.0.1 + dev: false diff --git a/index.ts b/index.ts new file mode 100644 index 00000000..a695399d --- /dev/null +++ b/index.ts @@ -0,0 +1 @@ +export * from "./js/NativeSdk"; diff --git a/js/MapViewNativeComponent.tsx b/js/MapViewNativeComponent.tsx new file mode 100644 index 00000000..3b78ee19 --- /dev/null +++ b/js/MapViewNativeComponent.tsx @@ -0,0 +1,6 @@ +import type { ViewProps } from "react-native"; +import codegenNativeComponent from "react-native/Libraries/Utilities/codegenNativeComponent"; + +export interface Props extends ViewProps {} + +export default codegenNativeComponent("MapView"); diff --git a/js/NativeSdk.ts b/js/NativeSdk.ts new file mode 100644 index 00000000..b7cb3b91 --- /dev/null +++ b/js/NativeSdk.ts @@ -0,0 +1,9 @@ +import type { TurboModule } from "react-native/Libraries/TurboModule/RCTExport"; +import { TurboModuleRegistry } from "react-native"; + +export interface Spec extends TurboModule { + init(apiKey: string): Promise; + getVersion(): Promise; +} + +export const Sdk = TurboModuleRegistry.get("AmapSdk"); diff --git a/lib/android/build.gradle b/lib/android/build.gradle deleted file mode 100644 index a6e84de6..00000000 --- a/lib/android/build.gradle +++ /dev/null @@ -1,34 +0,0 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' - -def getExt(prop, fallback) { - rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback -} - -buildscript { - ext.kotlin_version = '1.7.21' - - repositories { - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -android { - compileSdkVersion getExt('compileSdkVersion', 33) - buildToolsVersion getExt('buildToolsVersion', '33.0.0') - - defaultConfig { - minSdkVersion getExt('minSdkVersion', 21) - targetSdkVersion getExt('targetSdkVersion', 33) - } -} - -dependencies { - compileOnly 'com.facebook.react:react-native:+' - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - implementation 'com.amap.api:3dmap:9.6.0' -} diff --git a/lib/android/src/main/AndroidManifest.xml b/lib/android/src/main/AndroidManifest.xml deleted file mode 100644 index daa591d6..00000000 --- a/lib/android/src/main/AndroidManifest.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - diff --git a/lib/android/src/main/java/qiuxiang/amap3d/AMap3DPackage.kt b/lib/android/src/main/java/qiuxiang/amap3d/AMap3DPackage.kt deleted file mode 100644 index 6d80a595..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/AMap3DPackage.kt +++ /dev/null @@ -1,28 +0,0 @@ -package qiuxiang.amap3d - -import com.facebook.react.ReactPackage -import com.facebook.react.bridge.NativeModule -import com.facebook.react.bridge.ReactApplicationContext -import com.facebook.react.uimanager.ViewManager -import qiuxiang.amap3d.map_view.* -import qiuxiang.amap3d.modules.SdkModule - -class AMap3DPackage : ReactPackage { - override fun createNativeModules(reactContext: ReactApplicationContext): List { - return listOf( - SdkModule(reactContext), - ) - } - - override fun createViewManagers(reactContext: ReactApplicationContext): List> { - return listOf( - MapViewManager(), - MarkerManager(), - PolylineManager(), - PolygonManager(), - CircleManager(), - HeatMapManager(), - MultiPointManager() - ) - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/Utils.kt b/lib/android/src/main/java/qiuxiang/amap3d/Utils.kt deleted file mode 100644 index 5e95c3a3..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/Utils.kt +++ /dev/null @@ -1,114 +0,0 @@ -package qiuxiang.amap3d - -import android.content.res.Resources -import android.graphics.Bitmap -import android.graphics.Point -import android.location.Location -import android.view.View -import com.amap.api.maps.model.* -import com.facebook.drawee.backends.pipeline.Fresco -import com.facebook.imagepipeline.common.ResizeOptions -import com.facebook.imagepipeline.request.BasePostprocessor -import com.facebook.imagepipeline.request.ImageRequestBuilder -import com.facebook.react.bridge.Arguments -import com.facebook.react.bridge.ReadableArray -import com.facebook.react.bridge.ReadableMap -import com.facebook.react.bridge.WritableMap -import com.facebook.react.views.imagehelper.ImageSource - -fun Float.toPx(): Int { - return (this * Resources.getSystem().displayMetrics.density).toInt() -} - -fun Int.toPx(): Int { - return (this * Resources.getSystem().displayMetrics.density).toInt() -} - -fun ReadableMap.toPoint(): Point { - return Point(getDouble("x").toFloat().toPx(), getDouble("y").toFloat().toPx()) -} - -fun ReadableMap.toLatLng(): LatLng { - return LatLng(getDouble("latitude"), getDouble("longitude")) -} - -fun ReadableArray.toLatLngList(): List { - return (0 until size()).map { - // @todo 暂时兼容 0.63 - @Suppress("UNNECESSARY_NOT_NULL_ASSERTION") - getMap(it)!!.toLatLng() - } -} - -fun LatLng.toJson(): WritableMap { - return Arguments.createMap().apply { - putDouble("latitude", latitude) - putDouble("longitude", longitude) - } -} - -fun Poi.toJson(): WritableMap { - return Arguments.createMap().apply { - putMap("position", coordinate.toJson()) - putString("id", poiId) - putString("name", name) - } -} - -fun CameraPosition.toJson(): WritableMap { - return Arguments.createMap().apply { - putMap("target", target.toJson()) - putDouble("zoom", zoom.toDouble()) - putDouble("tilt", tilt.toDouble()) - putDouble("bearing", bearing.toDouble()) - } -} - -fun Location.toJson(): WritableMap { - return Arguments.createMap().apply { - putDouble("timestamp", time.toDouble()) - putMap("coords", Arguments.createMap().apply { - putDouble("latitude", latitude) - putDouble("longitude", longitude) - putDouble("latitude", latitude) - putDouble("accuracy", accuracy.toDouble()) - putDouble("heading", bearing.toDouble()) - putDouble("speed", speed.toDouble()) - }) - } -} - -fun LatLngBounds.toJson(): WritableMap { - return Arguments.createMap().apply { - putMap("southwest", southwest.toJson()) - putMap("northeast", northeast.toJson()) - } -} - -fun ReadableMap.getFloat(key: String): Float? { - if (hasKey(key)) return getDouble(key).toFloat() - return null -} - -fun getEventTypeConstants(vararg list: String): Map { - return list.associateWith { mapOf("phasedRegistrationNames" to mapOf("bubbled" to it)) } -} - -fun View.fetchImage(source: ReadableMap, callback: (BitmapDescriptor) -> Unit) { - val uri = ImageSource(context, source.getString("uri")).uri - val request = ImageRequestBuilder.newBuilderWithSource(uri).let { - it.postprocessor = object : BasePostprocessor() { - override fun process(bitmap: Bitmap) { - callback(BitmapDescriptorFactory.fromBitmap(bitmap)) - } - } - if (source.hasKey("width") && source.hasKey("height")) { - it.resizeOptions = ResizeOptions.forDimensions( - source.getInt("width").toPx(), - source.getInt("height").toPx() - ) - } - it.build() - } - Fresco.getImagePipeline().fetchDecodedImage(request, this) -} \ No newline at end of file diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/Circle.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/Circle.kt deleted file mode 100644 index 4e51ea24..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/Circle.kt +++ /dev/null @@ -1,65 +0,0 @@ -package qiuxiang.amap3d.map_view - -import android.content.Context -import android.graphics.Color -import com.amap.api.maps.AMap -import com.amap.api.maps.model.Circle -import com.amap.api.maps.model.CircleOptions -import com.amap.api.maps.model.LatLng -import com.facebook.react.views.view.ReactViewGroup - -class Circle(context: Context) : ReactViewGroup(context), Overlay { - private var circle: Circle? = null - - var center: LatLng? = null - set(value) { - field = value - circle?.center = value - } - - var radius: Double = 0.0 - set(value) { - field = value - circle?.radius = value - } - - var strokeWidth: Float = 1f - set(value) { - field = value - circle?.strokeWidth = value - } - - var strokeColor: Int = Color.BLACK - set(value) { - field = value - circle?.strokeColor = value - } - - var fillColor: Int = Color.BLACK - set(value) { - field = value - circle?.fillColor = value - } - - var zIndex: Float = 0f - set(value) { - field = value - circle?.zIndex = value - } - - override fun add(map: AMap) { - circle = map.addCircle( - CircleOptions() - .center(center) - .radius(radius) - .strokeColor(strokeColor) - .strokeWidth(strokeWidth) - .fillColor(fillColor) - .zIndex(zIndex) - ) - } - - override fun remove() { - circle?.remove() - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/CircleManager.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/CircleManager.kt deleted file mode 100644 index dbbc3403..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/CircleManager.kt +++ /dev/null @@ -1,49 +0,0 @@ -package qiuxiang.amap3d.map_view - -import com.facebook.react.bridge.ReadableMap -import com.facebook.react.uimanager.SimpleViewManager -import com.facebook.react.uimanager.ThemedReactContext -import com.facebook.react.uimanager.annotations.ReactProp -import qiuxiang.amap3d.toLatLng -import qiuxiang.amap3d.toPx - -@Suppress("unused") -internal class CircleManager : SimpleViewManager() { - override fun getName(): String { - return "AMapCircle" - } - - override fun createViewInstance(reactContext: ThemedReactContext): Circle { - return Circle(reactContext) - } - - @ReactProp(name = "center") - fun setCenter(circle: Circle, center: ReadableMap) { - circle.center = center.toLatLng() - } - - @ReactProp(name = "radius") - fun setRadius(circle: Circle, radius: Double) { - circle.radius = radius - } - - @ReactProp(name = "fillColor", customType = "Color") - fun setFillColor(circle: Circle, fillColor: Int) { - circle.fillColor = fillColor - } - - @ReactProp(name = "strokeColor", customType = "Color") - fun setStrokeColor(circle: Circle, strokeColor: Int) { - circle.strokeColor = strokeColor - } - - @ReactProp(name = "strokeWidth") - fun setStrokeWidth(circle: Circle, strokeWidth: Float) { - circle.strokeWidth = strokeWidth.toPx().toFloat() - } - - @ReactProp(name = "zIndex") - fun setIndex(circle: Circle, zIndex: Float) { - circle.zIndex = zIndex - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/HeatMap.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/HeatMap.kt deleted file mode 100644 index 2285562b..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/HeatMap.kt +++ /dev/null @@ -1,32 +0,0 @@ -package qiuxiang.amap3d.map_view - -import android.content.Context -import com.amap.api.maps.AMap -import com.amap.api.maps.model.HeatmapTileProvider -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.TileOverlay -import com.amap.api.maps.model.TileOverlayOptions -import com.facebook.react.views.view.ReactViewGroup - -class HeatMap(context: Context) : ReactViewGroup(context), Overlay { - private var overlay: TileOverlay? = null - var data: List = emptyList() - var opacity: Double = 0.6 - var radius: Int = 12 - - override fun add(map: AMap) { - overlay = map.addTileOverlay( - TileOverlayOptions().tileProvider( - HeatmapTileProvider.Builder() - .data(data) - .radius(radius) - .transparency(opacity) - .build() - ) - ) - } - - override fun remove() { - overlay?.remove() - } -} \ No newline at end of file diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/HeatMapManager.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/HeatMapManager.kt deleted file mode 100644 index 679b08d6..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/HeatMapManager.kt +++ /dev/null @@ -1,33 +0,0 @@ -package qiuxiang.amap3d.map_view - -import com.facebook.react.bridge.ReadableArray -import com.facebook.react.uimanager.SimpleViewManager -import com.facebook.react.uimanager.ThemedReactContext -import com.facebook.react.uimanager.annotations.ReactProp -import qiuxiang.amap3d.toLatLngList - -@Suppress("unused") -internal class HeatMapManager : SimpleViewManager() { - override fun getName(): String { - return "AMapHeatMap" - } - - override fun createViewInstance(reactContext: ThemedReactContext): HeatMap { - return HeatMap(reactContext) - } - - @ReactProp(name = "data") - fun setData(heatMap: HeatMap, data: ReadableArray) { - heatMap.data = data.toLatLngList() - } - - @ReactProp(name = "radius") - fun setRadius(heatMap: HeatMap, radius: Int) { - heatMap.radius = radius - } - - @ReactProp(name = "opacity") - fun setOpacity(heatMap: HeatMap, opacity: Double) { - heatMap.opacity = opacity - } -} \ No newline at end of file diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/MapView.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/MapView.kt deleted file mode 100644 index cc717fde..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/MapView.kt +++ /dev/null @@ -1,174 +0,0 @@ -package qiuxiang.amap3d.map_view - -import android.annotation.SuppressLint -import android.view.View -import com.amap.api.maps.AMap -import com.amap.api.maps.CameraUpdateFactory -import com.amap.api.maps.TextureMapView -import com.amap.api.maps.model.CameraPosition -import com.amap.api.maps.model.Marker -import com.amap.api.maps.model.MyLocationStyle -import com.facebook.react.bridge.Arguments -import com.facebook.react.bridge.ReadableArray -import com.facebook.react.bridge.ReadableMap -import com.facebook.react.bridge.WritableMap -import com.facebook.react.uimanager.ThemedReactContext -import qiuxiang.amap3d.getFloat -import qiuxiang.amap3d.toJson -import qiuxiang.amap3d.toLatLng -import qiuxiang.amap3d.toPoint - -@SuppressLint("ViewConstructor") -class MapView(context: ThemedReactContext) : TextureMapView(context) { - @Suppress("Deprecation") - private val eventEmitter = - context.getJSModule(com.facebook.react.uimanager.events.RCTEventEmitter::class.java) - private val markerMap = HashMap() - private val polylineMap = HashMap() - private var initialCameraPosition: ReadableMap? = null - private var locationStyle: MyLocationStyle - - init { - super.onCreate(null) - - locationStyle = MyLocationStyle() - locationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER) - map.myLocationStyle = locationStyle - - map.setOnMapLoadedListener { emit(id, "onLoad") } - map.setOnMapClickListener { latLng -> emit(id, "onPress", latLng.toJson()) } - map.setOnPOIClickListener { poi -> emit(id, "onPressPoi", poi.toJson()) } - map.setOnMapLongClickListener { latLng -> emit(id, "onLongPress", latLng.toJson()) } - map.setOnPolylineClickListener { polyline -> emit(polylineMap[polyline.id]?.id, "onPress") } - - map.setOnMarkerClickListener { marker -> - markerMap[marker.id]?.let { emit(it.id, "onPress") } - true - } - - map.setOnMarkerDragListener(object : AMap.OnMarkerDragListener { - override fun onMarkerDragStart(marker: Marker) { - emit(markerMap[marker.id]?.id, "onDragStart") - } - - override fun onMarkerDrag(marker: Marker) { - emit(markerMap[marker.id]?.id, "onDrag") - } - - override fun onMarkerDragEnd(marker: Marker) { - emit(markerMap[marker.id]?.id, "onDragEnd", marker.position.toJson()) - } - }) - - map.setOnCameraChangeListener(object : AMap.OnCameraChangeListener { - override fun onCameraChangeFinish(position: CameraPosition) { - emit(id, "onCameraIdle", Arguments.createMap().apply { - putMap("cameraPosition", position.toJson()) - putMap("latLngBounds", map.projection.visibleRegion.latLngBounds.toJson()) - }) - } - - override fun onCameraChange(position: CameraPosition) { - emit(id, "onCameraMove", Arguments.createMap().apply { - putMap("cameraPosition", position.toJson()) - putMap("latLngBounds", map.projection.visibleRegion.latLngBounds.toJson()) - }) - } - }) - - map.setOnMultiPointClickListener { item -> - item.customerId.split("_").let { - emit( - it[0].toInt(), - "onPress", - Arguments.createMap().apply { putInt("index", it[1].toInt()) }, - ) - } - false - } - - map.setOnMyLocationChangeListener { - if (it.time > 0) { - emit(id, "onLocation", it.toJson()) - } - } - } - - fun emit(id: Int?, event: String, data: WritableMap = Arguments.createMap()) { - @Suppress("Deprecation") - id?.let { eventEmitter.receiveEvent(it, event, data) } - } - - fun add(child: View) { - if (child is Overlay) { - child.add(map) - if (child is qiuxiang.amap3d.map_view.Marker) { - markerMap[child.marker?.id!!] = child - } - if (child is Polyline) { - polylineMap[child.polyline?.id!!] = child - } - } - } - - fun remove(child: View) { - if (child is Overlay) { - child.remove() - if (child is qiuxiang.amap3d.map_view.Marker) { - markerMap.remove(child.marker?.id) - } - if (child is Polyline) { - polylineMap.remove(child.polyline?.id) - } - } - } - - private val animateCallback = object : AMap.CancelableCallback { - override fun onCancel() {} - override fun onFinish() {} - } - - fun moveCamera(args: ReadableArray?) { - val current = map.cameraPosition - val position = args?.getMap(0)!! - val target = position.getMap("target")?.toLatLng() ?: current.target - val zoom = position.getFloat("zoom") ?: current.zoom - val tilt = position.getFloat("tilt") ?: current.tilt - val bearing = position.getFloat("bearing") ?: current.bearing - val cameraUpdate = CameraUpdateFactory.newCameraPosition( - CameraPosition(target, zoom, tilt, bearing) - ) - map.animateCamera(cameraUpdate, args.getInt(1).toLong(), animateCallback) - } - - fun setInitialCameraPosition(position: ReadableMap) { - if (initialCameraPosition == null) { - initialCameraPosition = position - moveCamera(Arguments.createArray().apply { - pushMap(Arguments.createMap().apply { merge(position) }) - pushInt(0) - }) - } - } - - fun call(args: ReadableArray?) { - val id = args?.getDouble(0)!! - when (args.getString(1)) { - "getLatLng" -> callback( - id, - // @todo 暂时兼容 0.63 - @Suppress("UNNECESSARY_NOT_NULL_ASSERTION") - map.projection.fromScreenLocation(args.getMap(2)!!.toPoint()).toJson() - ) - } - } - - private fun callback(id: Double, data: Any) { - emit(this.id, "onCallback", Arguments.createMap().apply { - putDouble("id", id) - when (data) { - is WritableMap -> putMap("data", data) - } - }) - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/MapViewManager.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/MapViewManager.kt deleted file mode 100644 index 3e8ce696..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/MapViewManager.kt +++ /dev/null @@ -1,153 +0,0 @@ -package qiuxiang.amap3d.map_view - -import android.view.View -import com.amap.api.maps.CameraUpdateFactory -import com.facebook.react.bridge.ReadableArray -import com.facebook.react.bridge.ReadableMap -import com.facebook.react.uimanager.ThemedReactContext -import com.facebook.react.uimanager.ViewGroupManager -import com.facebook.react.uimanager.annotations.ReactProp -import qiuxiang.amap3d.getEventTypeConstants -import qiuxiang.amap3d.toLatLng - -@Suppress("unused") -internal class MapViewManager : ViewGroupManager() { - private val commands = mapOf( - "moveCamera" to { view: MapView, args: ReadableArray? -> view.moveCamera(args) }, - "call" to { view: MapView, args: ReadableArray? -> view.call(args) }, - ) - - override fun getName(): String { - return "AMapView" - } - - override fun createViewInstance(reactContext: ThemedReactContext): MapView { - return MapView(reactContext) - } - - override fun onDropViewInstance(view: MapView) { - super.onDropViewInstance(view) - view.onDestroy() - } - - override fun getCommandsMap(): Map { - return commands.keys.mapIndexed { index, key -> key to index }.toMap() - } - - override fun receiveCommand(view: MapView, command: Int, args: ReadableArray?) { - commands.values.toList()[command](view, args) - } - - override fun addView(mapView: MapView, child: View, index: Int) { - mapView.add(child) - super.addView(mapView, child, index) - } - - override fun removeViewAt(parent: MapView, index: Int) { - parent.remove(parent.getChildAt(index)) - super.removeViewAt(parent, index) - } - - override fun getExportedCustomBubblingEventTypeConstants(): Map { - return getEventTypeConstants( - "onLoad", - "onPress", - "onPressPoi", - "onLongPress", - "onCameraMove", - "onCameraIdle", - "onLocation", - "onCallback", - ) - } - - @ReactProp(name = "initialCameraPosition") - fun setInitialCameraPosition(view: MapView, position: ReadableMap) { - view.setInitialCameraPosition(position) - } - - @ReactProp(name = "myLocationEnabled") - fun setMyLocationEnabled(view: MapView, enabled: Boolean) { - view.map.isMyLocationEnabled = enabled - } - - @ReactProp(name = "indoorViewEnabled") - fun setIndoorViewEnabled(view: MapView, enabled: Boolean) { - view.map.showIndoorMap(enabled) - } - - @ReactProp(name = "buildingsEnabled") - fun setBuildingsEnabled(view: MapView, enabled: Boolean) { - view.map.showBuildings(enabled) - } - - @ReactProp(name = "compassEnabled") - fun setCompassEnabled(view: MapView, show: Boolean) { - view.map.uiSettings.isCompassEnabled = show - } - - @ReactProp(name = "zoomControlsEnabled") - fun setZoomControlsEnabled(view: MapView, enabled: Boolean) { - view.map.uiSettings.isZoomControlsEnabled = enabled - } - - @ReactProp(name = "scaleControlsEnabled") - fun setScaleControlsEnabled(view: MapView, enabled: Boolean) { - view.map.uiSettings.isScaleControlsEnabled = enabled - } - - @ReactProp(name = "language") - fun setLanguage(view: MapView, language: String) { - view.map.setMapLanguage(language) - } - - @ReactProp(name = "myLocationButtonEnabled") - fun setMyLocationButtonEnabled(view: MapView, enabled: Boolean) { - view.map.uiSettings.isMyLocationButtonEnabled = enabled - } - - @ReactProp(name = "trafficEnabled") - fun setTrafficEnabled(view: MapView, enabled: Boolean) { - view.map.isTrafficEnabled = enabled - } - - @ReactProp(name = "maxZoom") - fun setMaxZoom(view: MapView, zoomLevel: Float) { - view.map.maxZoomLevel = zoomLevel - } - - @ReactProp(name = "minZoom") - fun setMinZoom(view: MapView, zoomLevel: Float) { - view.map.minZoomLevel = zoomLevel - } - - @ReactProp(name = "mapType") - fun setMapType(view: MapView, mapType: Int) { - view.map.mapType = mapType + 1 - } - - @ReactProp(name = "zoomGesturesEnabled") - fun setZoomGesturesEnabled(view: MapView, enabled: Boolean) { - view.map.uiSettings.isZoomGesturesEnabled = enabled - } - - @ReactProp(name = "scrollGesturesEnabled") - fun setScrollGesturesEnabled(view: MapView, enabled: Boolean) { - view.map.uiSettings.isScrollGesturesEnabled = enabled - } - - @ReactProp(name = "rotateGesturesEnabled") - fun setRotateGesturesEnabled(view: MapView, enabled: Boolean) { - view.map.uiSettings.isRotateGesturesEnabled = enabled - } - - @ReactProp(name = "tiltGesturesEnabled") - fun setTiltGesturesEnabled(view: MapView, enabled: Boolean) { - view.map.uiSettings.isTiltGesturesEnabled = enabled - } - - @ReactProp(name = "cameraPosition") - fun setCameraPosition(view: MapView, center: ReadableMap) { - view.map.moveCamera(CameraUpdateFactory.changeLatLng(center.toLatLng())) - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/Marker.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/Marker.kt deleted file mode 100644 index 313f307d..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/Marker.kt +++ /dev/null @@ -1,102 +0,0 @@ -package qiuxiang.amap3d.map_view - -import android.content.Context -import android.graphics.Bitmap -import android.graphics.Canvas -import android.os.Handler -import android.os.Looper -import android.view.View -import com.amap.api.maps.AMap -import com.amap.api.maps.model.* -import com.amap.api.maps.model.Marker -import com.facebook.react.bridge.ReadableMap -import com.facebook.react.views.view.ReactViewGroup -import qiuxiang.amap3d.fetchImage - -class Marker(context: Context) : ReactViewGroup(context), Overlay { - private var view: View? = null - private var icon: BitmapDescriptor? = null - private var anchorX: Float = 0.5f - private var anchorY: Float = 1f - var marker: Marker? = null - - var position: LatLng? = null - set(value) { - field = value - marker?.position = value - } - - var zIndex: Float = 0.0f - set(value) { - field = value - marker?.zIndex = value - } - - var flat: Boolean = false - set(value) { - field = value - marker?.isFlat = value - } - - var opacity: Float = 1f - set(value) { - field = value - marker?.alpha = value - } - - var draggable: Boolean = false - set(value) { - field = value - marker?.isDraggable = value - } - - fun updateIcon() { - view?.let { - if (it.width != 0 && it.height != 0) { - val bitmap = Bitmap.createBitmap(it.width, it.height, Bitmap.Config.ARGB_8888) - it.draw(Canvas(bitmap)) - icon = BitmapDescriptorFactory.fromBitmap(bitmap) - marker?.setIcon(icon) - } - } - } - - fun setAnchor(x: Double, y: Double) { - anchorX = x.toFloat() - anchorY = y.toFloat() - marker?.setAnchor(anchorX, anchorY) - } - - override fun addView(child: View, index: Int) { - super.addView(child, index) - view = child - view?.addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ -> updateIcon() } - } - - fun setIcon(source: ReadableMap) { - fetchImage(source) { - icon = it - Handler(Looper.getMainLooper()).post { - marker?.setIcon(it) - } - } - } - - override fun add(map: AMap) { - marker = map.addMarker( - MarkerOptions() - .setFlat(flat) - .icon(icon) - .alpha(opacity) - .draggable(draggable) - .position(position) - .anchor(anchorX, anchorY) - .zIndex(zIndex) - .infoWindowEnable(false) - ) - } - - override fun remove() { - marker?.destroy() - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/MarkerManager.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/MarkerManager.kt deleted file mode 100644 index 7da181bf..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/MarkerManager.kt +++ /dev/null @@ -1,78 +0,0 @@ -package qiuxiang.amap3d.map_view - -import android.view.View -import com.facebook.react.bridge.ReadableArray -import com.facebook.react.bridge.ReadableMap -import com.facebook.react.uimanager.ThemedReactContext -import com.facebook.react.uimanager.ViewGroupManager -import com.facebook.react.uimanager.annotations.ReactProp -import qiuxiang.amap3d.getEventTypeConstants -import qiuxiang.amap3d.toLatLng - -@Suppress("unused") -internal class MarkerManager : ViewGroupManager() { - override fun getName(): String { - return "AMapMarker" - } - - override fun createViewInstance(reactContext: ThemedReactContext): Marker { - return Marker(reactContext) - } - - override fun addView(marker: Marker, view: View, index: Int) { - super.addView(marker, view, index) - } - - override fun getExportedCustomBubblingEventTypeConstants(): Map { - return getEventTypeConstants("onPress", "onDrag", "onDragStart", "onDragEnd") - } - - companion object { - const val update = 1 - } - - override fun getCommandsMap(): Map { - return mapOf("update" to update) - } - - override fun receiveCommand(marker: Marker, commandId: Int, args: ReadableArray?) { - when (commandId) { - update -> marker.updateIcon() - } - } - - @ReactProp(name = "latLng") - fun setLatLng(view: Marker, position: ReadableMap) { - view.position = position.toLatLng() - } - - @ReactProp(name = "flat") - fun setFlat(marker: Marker, flat: Boolean) { - marker.flat = flat - } - - @ReactProp(name = "opacity") - override fun setOpacity(marker: Marker, opacity: Float) { - marker.opacity = opacity - } - - @ReactProp(name = "draggable") - fun setDraggable(marker: Marker, draggable: Boolean) { - marker.draggable = draggable - } - - @ReactProp(name = "zIndex") - fun setIndex(marker: Marker, zIndex: Float) { - marker.zIndex = zIndex - } - - @ReactProp(name = "anchor") - fun setAnchor(view: Marker, anchor: ReadableMap) { - view.setAnchor(anchor.getDouble("x"), anchor.getDouble("y")) - } - - @ReactProp(name = "icon") - fun setIcon(view: Marker, icon: ReadableMap?) { - icon?.let { view.setIcon(it) } - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/MultiPoint.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/MultiPoint.kt deleted file mode 100644 index bb61b7db..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/MultiPoint.kt +++ /dev/null @@ -1,53 +0,0 @@ -package qiuxiang.amap3d.map_view - -import android.content.Context -import com.amap.api.maps.AMap -import com.amap.api.maps.model.BitmapDescriptor -import com.amap.api.maps.model.MultiPointItem -import com.amap.api.maps.model.MultiPointOverlay -import com.amap.api.maps.model.MultiPointOverlayOptions -import com.facebook.react.bridge.ReadableArray -import com.facebook.react.bridge.ReadableMap -import com.facebook.react.views.view.ReactViewGroup -import qiuxiang.amap3d.fetchImage -import qiuxiang.amap3d.toLatLng - -class MultiPoint(context: Context) : ReactViewGroup(context), Overlay { - private lateinit var map: AMap - private var overlay: MultiPointOverlay? = null - private var items: List = emptyList() - private var icon: BitmapDescriptor? = null - - override fun add(map: AMap) { - this.map = map - addToMap() - } - - override fun remove() { - overlay?.destroy() - } - - private fun addToMap() { - if (overlay != null) return - if (icon != null) { - overlay = map.addMultiPointOverlay(MultiPointOverlayOptions().icon(icon)) - overlay?.items = items - } - } - - fun setItems(points: ReadableArray) { - items = (0 until points.size()) - .map { item -> - // 兼容 0.63 - MultiPointItem(points.getMap(item)!!.toLatLng()).apply { customerId = "${id}_$item" } - } - overlay?.items = items - } - - fun setIcon(source: ReadableMap) { - fetchImage(source) { - icon = it - addToMap() - } - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/MultiPointManager.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/MultiPointManager.kt deleted file mode 100644 index 5991c9e0..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/MultiPointManager.kt +++ /dev/null @@ -1,33 +0,0 @@ -package qiuxiang.amap3d.map_view - -import com.facebook.react.bridge.ReadableArray -import com.facebook.react.bridge.ReadableMap -import com.facebook.react.uimanager.SimpleViewManager -import com.facebook.react.uimanager.ThemedReactContext -import com.facebook.react.uimanager.annotations.ReactProp -import qiuxiang.amap3d.getEventTypeConstants - -@Suppress("unused") -internal class MultiPointManager : SimpleViewManager() { - override fun getName(): String { - return "AMapMultiPoint" - } - - override fun createViewInstance(reactContext: ThemedReactContext): MultiPoint { - return MultiPoint(reactContext) - } - - override fun getExportedCustomBubblingEventTypeConstants(): Map { - return getEventTypeConstants("onPress") - } - - @ReactProp(name = "items") - fun setPoints(multiPoint: MultiPoint, items: ReadableArray) { - multiPoint.setItems(items) - } - - @ReactProp(name = "icon") - fun setIcon(multiPoint: MultiPoint, icon: ReadableMap?) { - icon?.let { multiPoint.setIcon(it) } - } -} \ No newline at end of file diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/Overlay.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/Overlay.kt deleted file mode 100644 index c01c8a12..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/Overlay.kt +++ /dev/null @@ -1,8 +0,0 @@ -package qiuxiang.amap3d.map_view - -import com.amap.api.maps.AMap - -interface Overlay { - fun add(map: AMap) - fun remove() -} \ No newline at end of file diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/Polygon.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/Polygon.kt deleted file mode 100644 index c4e7607d..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/Polygon.kt +++ /dev/null @@ -1,58 +0,0 @@ -package qiuxiang.amap3d.map_view - -import android.content.Context -import android.graphics.Color -import com.amap.api.maps.AMap -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Polygon -import com.amap.api.maps.model.PolygonOptions -import com.facebook.react.views.view.ReactViewGroup - -class Polygon(context: Context) : ReactViewGroup(context), Overlay { - private var polygon: Polygon? = null - - var points: List = emptyList() - set(value) { - field = value - polygon?.points = value - } - - var strokeWidth: Float = 1f - set(value) { - field = value - polygon?.strokeWidth = value - } - - var strokeColor: Int = Color.BLACK - set(value) { - field = value - polygon?.strokeColor = value - } - - var fillColor: Int = Color.BLACK - set(value) { - field = value - polygon?.fillColor = value - } - - var zIndex: Float = 0f - set(value) { - field = value - polygon?.zIndex = value - } - - override fun add(map: AMap) { - polygon = map.addPolygon( - PolygonOptions() - .addAll(points) - .strokeColor(strokeColor) - .strokeWidth(strokeWidth) - .fillColor(fillColor) - .zIndex(zIndex) - ) - } - - override fun remove() { - polygon?.remove() - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/PolygonManager.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/PolygonManager.kt deleted file mode 100644 index aa29043f..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/PolygonManager.kt +++ /dev/null @@ -1,44 +0,0 @@ -package qiuxiang.amap3d.map_view - -import com.facebook.react.bridge.ReadableArray -import com.facebook.react.uimanager.SimpleViewManager -import com.facebook.react.uimanager.ThemedReactContext -import com.facebook.react.uimanager.annotations.ReactProp -import qiuxiang.amap3d.toLatLngList -import qiuxiang.amap3d.toPx - -@Suppress("unused") -internal class PolygonManager : SimpleViewManager() { - override fun getName(): String { - return "AMapPolygon" - } - - override fun createViewInstance(reactContext: ThemedReactContext): Polygon { - return Polygon(reactContext) - } - - @ReactProp(name = "points") - fun setPoints(polygon: Polygon, points: ReadableArray) { - polygon.points = points.toLatLngList() - } - - @ReactProp(name = "fillColor", customType = "Color") - fun setFillColor(polygon: Polygon, fillColor: Int) { - polygon.fillColor = fillColor - } - - @ReactProp(name = "strokeColor", customType = "Color") - fun setStrokeColor(polygon: Polygon, strokeColor: Int) { - polygon.strokeColor = strokeColor - } - - @ReactProp(name = "strokeWidth") - fun setStrokeWidth(polygon: Polygon, strokeWidth: Float) { - polygon.strokeWidth = strokeWidth.toPx().toFloat() - } - - @ReactProp(name = "zIndex") - fun setIndex(polygon: Polygon, zIndex: Float) { - polygon.zIndex = zIndex - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/Polyline.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/Polyline.kt deleted file mode 100644 index 2939860b..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/Polyline.kt +++ /dev/null @@ -1,69 +0,0 @@ -package qiuxiang.amap3d.map_view - -import android.content.Context -import android.graphics.Color -import com.amap.api.maps.AMap -import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Polyline -import com.amap.api.maps.model.PolylineOptions -import com.facebook.react.views.view.ReactViewGroup - -class Polyline(context: Context) : ReactViewGroup(context), Overlay { - var polyline: Polyline? = null - var gradient: Boolean = false - var colors: List = emptyList() - - var points: List = emptyList() - set(value) { - field = value - polyline?.points = value - } - - var width: Float = 1f - set(value) { - field = value - polyline?.width = value - } - - var color: Int = Color.BLACK - set(value) { - field = value - polyline?.color = value - } - - var zIndex: Float = 0f - set(value) { - field = value - polyline?.zIndex = value - } - - var geodesic: Boolean = false - set(value) { - field = value - polyline?.isGeodesic = value - } - - var dashed: Boolean = false - set(value) { - field = value - polyline?.isDottedLine = value - } - - override fun add(map: AMap) { - polyline = map.addPolyline( - PolylineOptions() - .addAll(points) - .color(color) - .colorValues(colors) - .width(width) - .useGradient(gradient) - .geodesic(geodesic) - .setDottedLine(dashed) - .zIndex(zIndex) - ) - } - - override fun remove() { - polyline?.remove() - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/map_view/PolylineManager.kt b/lib/android/src/main/java/qiuxiang/amap3d/map_view/PolylineManager.kt deleted file mode 100644 index a9f88388..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/map_view/PolylineManager.kt +++ /dev/null @@ -1,64 +0,0 @@ -package qiuxiang.amap3d.map_view - -import com.facebook.react.bridge.ReadableArray -import com.facebook.react.uimanager.SimpleViewManager -import com.facebook.react.uimanager.ThemedReactContext -import com.facebook.react.uimanager.annotations.ReactProp -import qiuxiang.amap3d.getEventTypeConstants -import qiuxiang.amap3d.toLatLngList -import qiuxiang.amap3d.toPx - -@Suppress("unused") -internal class PolylineManager : SimpleViewManager() { - override fun getName(): String { - return "AMapPolyline" - } - - override fun createViewInstance(context: ThemedReactContext): Polyline { - return Polyline(context) - } - - override fun getExportedCustomBubblingEventTypeConstants(): Map { - return getEventTypeConstants("onPress") - } - - @ReactProp(name = "points") - fun setPoints(polyline: Polyline, points: ReadableArray) { - polyline.points = points.toLatLngList() - } - - @ReactProp(name = "colors") - fun setColors(polyline: Polyline, colors: ReadableArray) { - polyline.colors = (0 until colors.size()).map { colors.getInt(it) } - } - - @ReactProp(name = "color", customType = "Color") - fun setColor(polyline: Polyline, color: Int) { - polyline.color = color - } - - @ReactProp(name = "width") - fun setWidth(polyline: Polyline, width: Float) { - polyline.width = width.toPx().toFloat() - } - - @ReactProp(name = "zIndex") - fun setIndex(polyline: Polyline, zIndex: Float) { - polyline.zIndex = zIndex - } - - @ReactProp(name = "geodesic") - fun setGeodesic(polyline: Polyline, geodesic: Boolean) { - polyline.geodesic = geodesic - } - - @ReactProp(name = "dashed") - fun setDashed(polyline: Polyline, dashed: Boolean) { - polyline.dashed = dashed - } - - @ReactProp(name = "gradient") - fun setGradient(polyline: Polyline, gradient: Boolean) { - polyline.gradient = gradient - } -} diff --git a/lib/android/src/main/java/qiuxiang/amap3d/modules/SdkModule.kt b/lib/android/src/main/java/qiuxiang/amap3d/modules/SdkModule.kt deleted file mode 100644 index 1419fa76..00000000 --- a/lib/android/src/main/java/qiuxiang/amap3d/modules/SdkModule.kt +++ /dev/null @@ -1,31 +0,0 @@ -package qiuxiang.amap3d.modules - -import com.amap.api.location.AMapLocationClient -import com.amap.api.maps.MapsInitializer -import com.facebook.react.bridge.Promise -import com.facebook.react.bridge.ReactApplicationContext -import com.facebook.react.bridge.ReactContextBaseJavaModule -import com.facebook.react.bridge.ReactMethod - -@Suppress("unused") -class SdkModule(val context: ReactApplicationContext) : ReactContextBaseJavaModule() { - override fun getName(): String { - return "AMapSdk" - } - - @ReactMethod - fun initSDK(apiKey: String?) { - apiKey?.let { - MapsInitializer.setApiKey(it) - MapsInitializer.updatePrivacyAgree(context, true) - MapsInitializer.updatePrivacyShow(context, true, true) - AMapLocationClient.updatePrivacyAgree(context, true) - AMapLocationClient.updatePrivacyShow(context, true, true) - } - } - - @ReactMethod - fun getVersion(promise: Promise) { - promise.resolve(MapsInitializer.getVersion()) - } -} diff --git a/lib/ios/.swiftformat b/lib/ios/.swiftformat deleted file mode 100644 index f3d6b7fe..00000000 --- a/lib/ios/.swiftformat +++ /dev/null @@ -1,2 +0,0 @@ ---swiftversion 5.2 ---indent 2 diff --git a/lib/ios/Bridging-Header.h b/lib/ios/Bridging-Header.h deleted file mode 100644 index b748d0ec..00000000 --- a/lib/ios/Bridging-Header.h +++ /dev/null @@ -1,4 +0,0 @@ -#import -#import -#import -#import diff --git a/lib/ios/MapView/CircleManager.m b/lib/ios/MapView/CircleManager.m deleted file mode 100644 index 0daa42b1..00000000 --- a/lib/ios/MapView/CircleManager.m +++ /dev/null @@ -1,11 +0,0 @@ -#import - -@interface RCT_EXTERN_MODULE(AMapCircleManager, RCTViewManager) - -RCT_REMAP_VIEW_PROPERTY(center, circleCenter, CLLocationCoordinate2D) -RCT_EXPORT_VIEW_PROPERTY(radius, double) -RCT_EXPORT_VIEW_PROPERTY(strokeWidth, double) -RCT_EXPORT_VIEW_PROPERTY(strokeColor, UIColor) -RCT_EXPORT_VIEW_PROPERTY(fillColor, UIColor) - -@end diff --git a/lib/ios/MapView/CircleManager.swift b/lib/ios/MapView/CircleManager.swift deleted file mode 100644 index 2d4214fc..00000000 --- a/lib/ios/MapView/CircleManager.swift +++ /dev/null @@ -1,30 +0,0 @@ -@objc(AMapCircleManager) -class AMapCircleManager: RCTViewManager { - override class func requiresMainQueueSetup() -> Bool { false } - override func view() -> UIView { Circle() } -} - -class Circle: UIView, Overlay { - var overlay = MACircle() - var renderer: MACircleRenderer? - - @objc var radius = 0.0 { didSet { overlay.radius = radius } } - @objc var strokeWidth = 1.0 { didSet { renderer?.lineWidth = strokeWidth } } - @objc var strokeColor = UIColor.black { didSet { renderer?.strokeColor = strokeColor } } - @objc var fillColor = UIColor.white { didSet { renderer?.fillColor = fillColor } } - - @objc func setCircleCenter(_ center: CLLocationCoordinate2D) { - overlay.coordinate = center - } - - func getOverlay() -> MABaseOverlay { overlay } - func getRenderer() -> MAOverlayRenderer { - if renderer == nil { - renderer = MACircleRenderer(circle: overlay) - renderer?.fillColor = fillColor - renderer?.strokeColor = strokeColor - renderer?.lineWidth = strokeWidth - } - return renderer! - } -} diff --git a/lib/ios/MapView/HeatMapManager.m b/lib/ios/MapView/HeatMapManager.m deleted file mode 100644 index cd7dc0d3..00000000 --- a/lib/ios/MapView/HeatMapManager.m +++ /dev/null @@ -1,9 +0,0 @@ -#import - -@interface RCT_EXTERN_MODULE(AMapHeatMapManager, RCTViewManager) - -RCT_EXPORT_VIEW_PROPERTY(data, NSArray) -RCT_EXPORT_VIEW_PROPERTY(radius, int) -RCT_EXPORT_VIEW_PROPERTY(opacity, double) - -@end diff --git a/lib/ios/MapView/HeatMapManager.swift b/lib/ios/MapView/HeatMapManager.swift deleted file mode 100644 index 49ddb6d2..00000000 --- a/lib/ios/MapView/HeatMapManager.swift +++ /dev/null @@ -1,29 +0,0 @@ -@objc(AMapHeatMapManager) -class AMapHeatMapManager: RCTViewManager { - override class func requiresMainQueueSetup() -> Bool { false } - override func view() -> UIView { HeatMap() } -} - -class HeatMap: UIView, Overlay { - var overlay = MAHeatMapTileOverlay() - var renderer: MATileOverlayRenderer? - - func getOverlay() -> MABaseOverlay { overlay } - func getRenderer() -> MAOverlayRenderer { - if renderer == nil { - renderer = MATileOverlayRenderer(tileOverlay: overlay) - } - return renderer! - } - - @objc func setRadius(_ radius: Int) { overlay.radius = radius } - @objc func setOpacity(_ opacity: Double) { overlay.opacity = opacity } - @objc func setData(_ data: NSArray) { - overlay.data = data.map { it -> MAHeatMapNode in - let item = MAHeatMapNode() - item.coordinate = (it as! NSDictionary).coordinate - item.intensity = 1 - return item - } - } -} diff --git a/lib/ios/MapView/MapViewManager.m b/lib/ios/MapView/MapViewManager.m deleted file mode 100644 index aecabb29..00000000 --- a/lib/ios/MapView/MapViewManager.m +++ /dev/null @@ -1,35 +0,0 @@ -#import - -@interface RCT_EXTERN_MODULE(AMapViewManager, RCTViewManager) - -RCT_EXPORT_VIEW_PROPERTY(mapType, MAMapType) -RCT_EXPORT_VIEW_PROPERTY(initialCameraPosition, NSDictionary) -RCT_EXPORT_VIEW_PROPERTY(distanceFilter, double) -RCT_EXPORT_VIEW_PROPERTY(headingFilter, double) - -RCT_REMAP_VIEW_PROPERTY(myLocationEnabled, showsUserLocation, BOOL) -RCT_REMAP_VIEW_PROPERTY(buildingsEnabled, showsBuildings, BOOL) -RCT_REMAP_VIEW_PROPERTY(trafficEnabled, showTraffic, BOOL) -RCT_REMAP_VIEW_PROPERTY(indoorViewEnabled, showsIndoorMap, BOOL) -RCT_REMAP_VIEW_PROPERTY(compassEnabled, showsCompass, BOOL) -RCT_REMAP_VIEW_PROPERTY(scaleControlsEnabled, showsScale, BOOL) -RCT_REMAP_VIEW_PROPERTY(scrollGesturesEnabled, scrollEnabled, BOOL) -RCT_REMAP_VIEW_PROPERTY(zoomGesturesEnabled, zoomEnabled, BOOL) -RCT_REMAP_VIEW_PROPERTY(rotateGesturesEnabled, rotateEnabled, BOOL) -RCT_REMAP_VIEW_PROPERTY(tiltGesturesEnabled, rotateCameraEnabled, BOOL) -RCT_REMAP_VIEW_PROPERTY(minZoom, minZoomLevel, double) -RCT_REMAP_VIEW_PROPERTY(maxZoom, maxZoomLevel, double) - -RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onPressPoi, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onLongPress, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onCameraIdle, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onCameraMove, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onLoad, RCTDirectEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onLocation, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onCallback, RCTBubblingEventBlock) - -RCT_EXTERN_METHOD(moveCamera:(nonnull NSNumber *)reactTag position:(NSDictionary *)_ duration:(int)_) -RCT_EXTERN_METHOD(call:(nonnull NSNumber *)reactTag callerId:(double)_ name:(NSString *)_ args:(NSDictionary *)_) - -@end diff --git a/lib/ios/MapView/MapViewManager.swift b/lib/ios/MapView/MapViewManager.swift deleted file mode 100644 index c79d9d2a..00000000 --- a/lib/ios/MapView/MapViewManager.swift +++ /dev/null @@ -1,159 +0,0 @@ -@objc(AMapViewManager) -class AMapViewManager: RCTViewManager { - override class func requiresMainQueueSetup() -> Bool { false } - - override func view() -> UIView { - let view = MapView() - view.delegate = view - return view - } - - @objc func moveCamera(_ reactTag: NSNumber, position: NSDictionary, duration: Int) { - getView(reactTag: reactTag) { view in - view.moveCamera(position: position, duration: duration) - } - } - - @objc func call(_ reactTag: NSNumber, callerId: Double, name: String, args: NSDictionary) { - getView(reactTag: reactTag) { view in - view.call(id: callerId, name: name, args: args) - } - } - - func getView(reactTag: NSNumber, callback: @escaping (MapView) -> Void) { - bridge.uiManager.addUIBlock { _, viewRegistry in - callback(viewRegistry![reactTag] as! MapView) - } - } -} - -class MapView: MAMapView, MAMapViewDelegate { - var initialized = false - var overlayMap: [MABaseOverlay: Overlay] = [:] - var markerMap: [MAPointAnnotation: Marker] = [:] - - @objc var onLoad: RCTBubblingEventBlock = { _ in } - @objc var onCameraMove: RCTBubblingEventBlock = { _ in } - @objc var onCameraIdle: RCTBubblingEventBlock = { _ in } - @objc var onPress: RCTBubblingEventBlock = { _ in } - @objc var onPressPoi: RCTBubblingEventBlock = { _ in } - @objc var onLongPress: RCTBubblingEventBlock = { _ in } - @objc var onLocation: RCTBubblingEventBlock = { _ in } - @objc var onCallback: RCTBubblingEventBlock = { _ in } - - @objc func setInitialCameraPosition(_ json: NSDictionary) { - if !initialized { - initialized = true - moveCamera(position: json) - } - } - - func moveCamera(position: NSDictionary, duration: Int = 0) { - let status = MAMapStatus() - status.zoomLevel = (position["zoom"] as? Double)?.cgFloat ?? zoomLevel - status.cameraDegree = (position["tilt"] as? Double)?.cgFloat ?? cameraDegree - status.rotationDegree = (position["bearing"] as? Double)?.cgFloat ?? rotationDegree - status.centerCoordinate = (position["target"] as? NSDictionary)?.coordinate ?? centerCoordinate - setMapStatus(status, animated: true, duration: Double(duration) / 1000) - } - - func call(id: Double, name: String, args: NSDictionary) { - switch name { - case "getLatLng": - callback(id: id, data: convert(args.point, toCoordinateFrom: self).json) - default: - break - } - } - - func callback(id: Double, data: [String: Any]) { - onCallback(["id": id, "data": data]) - } - - override func didAddSubview(_ subview: UIView) { - if let overlay = (subview as? Overlay)?.getOverlay() { - overlayMap[overlay] = subview as? Overlay - add(overlay) - } - if let annotation = (subview as? Marker)?.annotation { - markerMap[annotation] = subview as? Marker - addAnnotation(annotation) - } - } - - override func removeReactSubview(_ subview: UIView!) { - super.removeReactSubview(subview) - if let overlay = (subview as? Overlay)?.getOverlay() { - overlayMap.removeValue(forKey: overlay) - remove(overlay) - } - if let annotation = (subview as? Marker)?.annotation { - markerMap.removeValue(forKey: annotation) - removeAnnotation(annotation) - } - } - - func mapView(_: MAMapView, rendererFor overlay: MAOverlay) -> MAOverlayRenderer? { - if let key = overlay as? MABaseOverlay { - return overlayMap[key]?.getRenderer() - } - return nil - } - - func mapView(_: MAMapView!, viewFor annotation: MAAnnotation) -> MAAnnotationView? { - if let key = annotation as? MAPointAnnotation { - return markerMap[key]?.getView() - } - return nil - } - - func mapView(_: MAMapView!, annotationView view: MAAnnotationView!, didChange newState: MAAnnotationViewDragState, fromOldState _: MAAnnotationViewDragState) { - if let key = view.annotation as? MAPointAnnotation { - let market = markerMap[key]! - if newState == MAAnnotationViewDragState.starting { - market.onDragStart(nil) - } - if newState == MAAnnotationViewDragState.dragging { - market.onDrag(nil) - } - if newState == MAAnnotationViewDragState.ending { - market.onDragEnd(view.annotation.coordinate.json) - } - } - } - - func mapView(_: MAMapView!, didAnnotationViewTapped view: MAAnnotationView!) { - if let key = view.annotation as? MAPointAnnotation { - markerMap[key]?.onPress(nil) - } - } - - func mapInitComplete(_: MAMapView!) { - onLoad(nil) - } - - func mapView(_: MAMapView!, didSingleTappedAt coordinate: CLLocationCoordinate2D) { - onPress(coordinate.json) - } - - func mapView(_: MAMapView!, didTouchPois pois: [Any]!) { - let poi = pois[0] as! MATouchPoi - onPressPoi(["name": poi.name!, "id": poi.uid!, "position": poi.coordinate.json]) - } - - func mapView(_: MAMapView!, didLongPressedAt coordinate: CLLocationCoordinate2D) { - onLongPress(coordinate.json) - } - - func mapViewRegionChanged(_: MAMapView!) { - onCameraMove(cameraEvent) - } - - func mapView(_: MAMapView!, regionDidChangeAnimated _: Bool) { - onCameraIdle(cameraEvent) - } - - func mapView(_: MAMapView!, didUpdate userLocation: MAUserLocation!, updatingLocation _: Bool) { - onLocation(userLocation.json) - } -} diff --git a/lib/ios/MapView/MarkerManager.m b/lib/ios/MapView/MarkerManager.m deleted file mode 100644 index 1063160f..00000000 --- a/lib/ios/MapView/MarkerManager.m +++ /dev/null @@ -1,18 +0,0 @@ -#import - -@interface RCT_EXTERN_MODULE(AMapMarkerManager, RCTViewManager) - -RCT_EXPORT_VIEW_PROPERTY(latLng, CLLocationCoordinate2D) -RCT_EXPORT_VIEW_PROPERTY(centerOffset, CGPoint) -RCT_EXPORT_VIEW_PROPERTY(draggable, BOOL) -RCT_EXPORT_VIEW_PROPERTY(zIndex, int) -RCT_EXPORT_VIEW_PROPERTY(icon, NSDictionary) - -RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onDragStart, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onDrag, RCTBubblingEventBlock) -RCT_EXPORT_VIEW_PROPERTY(onDragEnd, RCTBubblingEventBlock) - -RCT_EXTERN_METHOD(update:(nonnull NSNumber *)reactTag) - -@end diff --git a/lib/ios/MapView/MarkerManager.swift b/lib/ios/MapView/MarkerManager.swift deleted file mode 100644 index fd2a3035..00000000 --- a/lib/ios/MapView/MarkerManager.swift +++ /dev/null @@ -1,100 +0,0 @@ -@objc(AMapMarkerManager) -class AMapMarkerManager: RCTViewManager { - override class func requiresMainQueueSetup() -> Bool { false } - - override func view() -> UIView { - let view = Marker() - view.imageLoader = bridge.module(forName: "ImageLoader") as? RCTImageLoader - return view - } - - @objc func update(_ reactTag: NSNumber) { - getView(reactTag: reactTag) { view in view.update() } - } - - func getView(reactTag: NSNumber, callback: @escaping (Marker) -> Void) { - bridge.uiManager.addUIBlock { _, viewRegistry in - callback(viewRegistry![reactTag] as! Marker) - } - } -} - -class Marker: UIView { - var imageLoader: RCTImageLoader? - var view: MAAnnotationView? - var annotation = MAPointAnnotation() - var icon: UIImage? - var iconView: UIView? - var centerOffset: CGPoint? - - @objc var draggable = false { didSet { view?.isDraggable = draggable } } - @objc var zIndex = 1 { didSet { view?.zIndex = zIndex } } - - @objc var onPress: RCTDirectEventBlock = { _ in } - @objc var onDragStart: RCTDirectEventBlock = { _ in } - @objc var onDrag: RCTDirectEventBlock = { _ in } - @objc var onDragEnd: RCTDirectEventBlock = { _ in } - - @objc func setIcon(_ icon: NSDictionary?) { - imageLoader?.loadImage(icon) { image in - self.icon = image - self.view?.image = image - self.updateCenterOffset() - } - } - - @objc func setLatLng(_ coordinate: CLLocationCoordinate2D) { - annotation.coordinate = coordinate - } - - @objc func setCenterOffset(_ centerOffset: CGPoint) { - self.centerOffset = centerOffset - view?.centerOffset = centerOffset - } - - override func didAddSubview(_ subview: UIView) { - subview.layer.opacity = 0 - iconView = subview - } - - /** - * subview 不能直接用作 marker 的 icon,因为在实现点聚合的时候发现,subview 一定概率无法正常 layout,会堆在右上角。 - * 于是索性把 subview 渲染成 image,原来用 subview 带来的 offset、点击问题也都不用处理了。 - * 正常情况下就把 subview 的 opacity 设成 0,需要渲染的时候才设成 1,渲染然后马上设回 0。 - */ - func update() { - if centerOffset == nil, view != nil { - iconView?.layer.opacity = 1 - let renderer = UIGraphicsImageRenderer(bounds: iconView!.bounds) - view?.image = renderer.image { context in layer.render(in: context.cgContext) } - iconView?.layer.opacity = 0 - updateCenterOffset() - } - } - - func updateCenterOffset() { - if centerOffset == nil, view != nil { - let size: CGSize = (view?.image.size)! - view?.centerOffset = CGPoint(x: 0, y: -size.height / 2) - } - } - - func getView() -> MAAnnotationView { - if view == nil { - view = MAAnnotationView(annotation: annotation, reuseIdentifier: nil) - if icon == nil, iconView == nil { - view?.image = MAPinAnnotationView(annotation: annotation, reuseIdentifier: nil).image - } - view?.isDraggable = draggable - view?.zIndex = zIndex - if centerOffset != nil { - view?.centerOffset = centerOffset! - } - if icon != nil { - view?.image = icon - updateCenterOffset() - } - } - return view! - } -} diff --git a/lib/ios/MapView/MultiPointManager.m b/lib/ios/MapView/MultiPointManager.m deleted file mode 100644 index 336bbf9a..00000000 --- a/lib/ios/MapView/MultiPointManager.m +++ /dev/null @@ -1,9 +0,0 @@ -#import - -@interface RCT_EXTERN_MODULE(AMapMultiPointManager, RCTViewManager) - -RCT_EXPORT_VIEW_PROPERTY(items, NSArray) -RCT_EXPORT_VIEW_PROPERTY(icon, NSDictionary) -RCT_EXPORT_VIEW_PROPERTY(onPress, RCTBubblingEventBlock) - -@end diff --git a/lib/ios/MapView/MultiPointManager.swift b/lib/ios/MapView/MultiPointManager.swift deleted file mode 100644 index 196cc353..00000000 --- a/lib/ios/MapView/MultiPointManager.swift +++ /dev/null @@ -1,47 +0,0 @@ -@objc(AMapMultiPointManager) -class AMapMultiPointManager: RCTViewManager { - override class func requiresMainQueueSetup() -> Bool { false } - - override func view() -> UIView { - let view = MultiPoint() - view.imageLoader = bridge.module(forName: "ImageLoader") as? RCTImageLoader - return view - } -} - -class MultiPoint: UIView, Overlay, MAMultiPointOverlayRendererDelegate { - var imageLoader: RCTImageLoader? - var overlay: MAMultiPointOverlay? - var renderer: MAMultiPointOverlayRenderer? - var icon: UIImage? - - @objc var onPress: RCTDirectEventBlock = { _ in } - - @objc func setIcon(_ icon: NSDictionary) { - imageLoader?.loadImage(icon) { image in - self.renderer?.icon = image - } - } - - @objc func setItems(_ items: NSArray) { - overlay = MAMultiPointOverlay(multiPointItems: items.map { it -> MAMultiPointItem in - let item = MAMultiPointItem() - item.coordinate = (it as! NSDictionary).coordinate - return item - }) - } - - func getOverlay() -> MABaseOverlay { overlay! } - func getRenderer() -> MAOverlayRenderer { - if renderer == nil { - renderer = MAMultiPointOverlayRenderer(multiPointOverlay: overlay) - renderer?.icon = icon - renderer?.delegate = self - } - return renderer! - } - - func multiPointOverlayRenderer(_: MAMultiPointOverlayRenderer!, didItemTapped item: MAMultiPointItem!) { - onPress(["index": (overlay?.items.firstIndex(of: item))!]) - } -} diff --git a/lib/ios/MapView/Overlay.swift b/lib/ios/MapView/Overlay.swift deleted file mode 100644 index 63a48714..00000000 --- a/lib/ios/MapView/Overlay.swift +++ /dev/null @@ -1,4 +0,0 @@ -protocol Overlay: UIView { - func getOverlay() -> MABaseOverlay - func getRenderer() -> MAOverlayRenderer -} diff --git a/lib/ios/MapView/PolygonManager.m b/lib/ios/MapView/PolygonManager.m deleted file mode 100644 index 3243fa6f..00000000 --- a/lib/ios/MapView/PolygonManager.m +++ /dev/null @@ -1,10 +0,0 @@ -#import - -@interface RCT_EXTERN_MODULE(AMapPolygonManager, RCTViewManager) - -RCT_EXPORT_VIEW_PROPERTY(points, NSArray) -RCT_EXPORT_VIEW_PROPERTY(strokeWidth, double) -RCT_EXPORT_VIEW_PROPERTY(strokeColor, UIColor) -RCT_EXPORT_VIEW_PROPERTY(fillColor, UIColor) - -@end diff --git a/lib/ios/MapView/PolygonManager.swift b/lib/ios/MapView/PolygonManager.swift deleted file mode 100644 index 4d87402b..00000000 --- a/lib/ios/MapView/PolygonManager.swift +++ /dev/null @@ -1,30 +0,0 @@ -@objc(AMapPolygonManager) -class AMapPolygonManager: RCTViewManager { - override class func requiresMainQueueSetup() -> Bool { false } - override func view() -> UIView { Polygon() } -} - -class Polygon: UIView, Overlay { - var overlay = MAPolygon() - var renderer: MAPolygonRenderer? - - @objc var strokeWidth = 1.0 { didSet { renderer?.lineWidth = strokeWidth } } - @objc var strokeColor = UIColor.black { didSet { renderer?.strokeColor = strokeColor } } - @objc var fillColor = UIColor.white { didSet { renderer?.fillColor = fillColor } } - - @objc func setPoints(_ points: NSArray) { - var coordinates = points.map { it -> CLLocationCoordinate2D in (it as! NSDictionary).coordinate } - overlay.setPolygonWithCoordinates(&coordinates, count: points.count) - } - - func getOverlay() -> MABaseOverlay { overlay } - func getRenderer() -> MAOverlayRenderer { - if renderer == nil { - renderer = MAPolygonRenderer(polygon: overlay) - renderer?.fillColor = fillColor - renderer?.strokeColor = strokeColor - renderer?.lineWidth = strokeWidth - } - return renderer! - } -} diff --git a/lib/ios/MapView/PolylineManager.m b/lib/ios/MapView/PolylineManager.m deleted file mode 100644 index 718bf914..00000000 --- a/lib/ios/MapView/PolylineManager.m +++ /dev/null @@ -1,12 +0,0 @@ -#import - -@interface RCT_EXTERN_MODULE(AMapPolylineManager, RCTViewManager) - -RCT_EXPORT_VIEW_PROPERTY(points, NSArray) -RCT_EXPORT_VIEW_PROPERTY(width, double) -RCT_EXPORT_VIEW_PROPERTY(color, UIColor) -RCT_EXPORT_VIEW_PROPERTY(dotted, BOOL) -RCT_EXPORT_VIEW_PROPERTY(gradient, BOOL) -RCT_EXPORT_VIEW_PROPERTY(colors, UIColorArray) - -@end diff --git a/lib/ios/MapView/PolylineManager.swift b/lib/ios/MapView/PolylineManager.swift deleted file mode 100644 index 2788ed93..00000000 --- a/lib/ios/MapView/PolylineManager.swift +++ /dev/null @@ -1,41 +0,0 @@ -@objc(AMapPolylineManager) -class AMapPolylineManager: RCTViewManager { - override class func requiresMainQueueSetup() -> Bool { false } - override func view() -> UIView { Polyline() } -} - -class Polyline: UIView, Overlay { - var overlay = MAMultiPolyline() - var renderer: MAMultiColoredPolylineRenderer? - - @objc var width = 1.0 { didSet { renderer?.lineWidth = width } } - @objc var color = UIColor.black { didSet { renderer?.strokeColor = color } } - @objc var gradient = false { didSet { renderer?.isGradient = gradient } } - @objc var dotted = false { didSet { setDotted() } } - @objc var colors: [UIColor] = [] { didSet { - renderer?.strokeColors = colors - overlay.drawStyleIndexes = (0 ..< colors.count).map { it in NSNumber(value: it) } - } } - - @objc func setPoints(_ points: NSArray) { - var coordinates = points.map { it -> CLLocationCoordinate2D in (it as! NSDictionary).coordinate } - overlay.setPolylineWithCoordinates(&coordinates, count: points.count) - } - - func setDotted() { - renderer?.lineDashType = dotted ? kMALineDashTypeDot : kMALineDashTypeNone - } - - func getOverlay() -> MABaseOverlay { overlay } - func getRenderer() -> MAOverlayRenderer { - if renderer == nil { - renderer = MAMultiColoredPolylineRenderer(multiPolyline: overlay) - renderer?.strokeColor = color - renderer?.lineWidth = width - renderer?.isGradient = gradient - renderer?.strokeColors = colors - setDotted() - } - return renderer! - } -} diff --git a/lib/ios/Modules/SdkModule.m b/lib/ios/Modules/SdkModule.m deleted file mode 100644 index 7206e76f..00000000 --- a/lib/ios/Modules/SdkModule.m +++ /dev/null @@ -1,8 +0,0 @@ -#import - -@interface RCT_EXTERN_MODULE(AMapSdk, NSObject) - -RCT_EXTERN_METHOD(initSDK: (NSString)apiKey) -RCT_EXTERN_METHOD(getVersion: (RCTPromiseResolveBlock)resolve reject: (RCTPromiseRejectBlock)_) - -@end diff --git a/lib/ios/Modules/SdkModule.swift b/lib/ios/Modules/SdkModule.swift deleted file mode 100644 index c902d02f..00000000 --- a/lib/ios/Modules/SdkModule.swift +++ /dev/null @@ -1,16 +0,0 @@ -@objc(AMapSdk) -class AMapSdk: NSObject { - @objc static func requiresMainQueueSetup() -> Bool { - false - } - - @objc func initSDK(_ apiKey: String) { - AMapServices.shared().apiKey = apiKey - MAMapView.updatePrivacyAgree(AMapPrivacyAgreeStatus.didAgree) - MAMapView.updatePrivacyShow(AMapPrivacyShowStatus.didShow, privacyInfo: AMapPrivacyInfoStatus.didContain) - } - - @objc func getVersion(_ resolve: RCTPromiseResolveBlock, reject _: RCTPromiseRejectBlock) { - resolve("8.0.1") - } -} diff --git a/lib/ios/Utils.swift b/lib/ios/Utils.swift deleted file mode 100644 index 13ac72c0..00000000 --- a/lib/ios/Utils.swift +++ /dev/null @@ -1,104 +0,0 @@ -extension NSDictionary { - var coordinate: CLLocationCoordinate2D { - CLLocationCoordinate2DMake(self["latitude"] as! Double, self["longitude"] as! Double) - } - - var point: CGPoint { - CGPoint(x: self["x"] as! Double, y: self["y"] as! Double) - } -} - -extension CLLocationCoordinate2D { - var json: [String: Double] { - ["latitude": latitude, "longitude": longitude] - } -} - -extension MAUserLocation { - var json: [String: Any] { - [ - "coords": [ - "latitude": coordinate.latitude, - "longitude": coordinate.longitude, - "altitude": location?.altitude ?? 0, - "heading": heading?.trueHeading, - "accuracy": location?.horizontalAccuracy ?? 0, - "speed": location?.speed ?? 0, - ], - "timestamp": NSDate().timeIntervalSince1970 * 1000, - ] - } -} - -extension MACoordinateRegion { - var json: [String: Any] { - [ - "southwest": [ - "latitude": center.latitude - span.latitudeDelta / 2, - "longitude": center.longitude - span.longitudeDelta / 2, - ], - "northeast": [ - "latitude": center.latitude + span.latitudeDelta / 2, - "longitude": center.longitude + span.longitudeDelta / 2, - ], - ] - } -} - -extension MAMapStatus { - var json: [String: Any] { - [ - "target": centerCoordinate.json, - "zoom": zoomLevel, - "bearing": rotationDegree, - "tilt": cameraDegree, - ] - } -} - -extension MAMapView { - var cameraEvent: [String: Any] { - [ - "cameraPosition": getMapStatus().json, - "latLngBounds": region.json, - ] - } -} - -extension Double { - var cgFloat: CGFloat { - CGFloat(self) - } -} - -extension RCTConvert { - @objc static func MAMapType(_ json: Any) -> MAMapType { - MAMapKit.MAMapType(rawValue: json as! NSInteger)! - } -} - -extension RCTImageLoader { - func loadImage(_ icon: NSDictionary?, callback: @escaping (UIImage) -> Void) { - if icon == nil { - return - } - let width = icon?["width"] as? Double ?? 0 - let height = icon?["height"] as? Double ?? 0 - loadImage( - with: RCTConvert.nsurlRequest(icon), - size: CGSize(width: width, height: height), - scale: RCTScreenScale(), - clipped: false, - resizeMode: RCTResizeMode.cover, - progressBlock: { _, _ in }, - partialLoad: { _ in }, - completionBlock: { _, image in - if image != nil { - DispatchQueue.main.async { - callback(image!) - } - } - } - ) - } -} diff --git a/lib/ios/react-native-amap3d.podspec b/lib/ios/react-native-amap3d.podspec deleted file mode 100644 index 970eca78..00000000 --- a/lib/ios/react-native-amap3d.podspec +++ /dev/null @@ -1,20 +0,0 @@ -require "json" - -package = JSON.parse(File.read(File.join(__dir__, "../../package.json"))) - -Pod::Spec.new do |s| - s.name = "react-native-amap3d" - s.version = package["version"] - s.summary = package["description"] - s.homepage = package["homepage"] - s.license = package["license"] - s.authors = package["author"] - - s.platforms = { :ios => "10.0" } - s.source = { :git => "https://github.com/qiuxiang/react-native-amap3d.git", :tag => "#{s.version}" } - - s.source_files = "**/*.{h,m,mm,swift}" - - s.dependency "React-Core" - s.dependency 'AMap3DMap', "~> 9.6.0" -end diff --git a/lib/src/circle.tsx b/lib/src/circle.tsx deleted file mode 100644 index 00ab224c..00000000 --- a/lib/src/circle.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { requireNativeComponent } from "react-native"; -import { LatLng } from "./types"; - -export interface CircleProps { - /** - * 圆点坐标 - */ - center: LatLng; - - /** - * 半径(米) - */ - radius: number; - - /** - * 边线宽度 - */ - strokeWidth?: number; - - /** - * 边线颜色 - */ - strokeColor?: string; - - /** - * 填充颜色 - */ - fillColor?: string; - - /** - * 层级 - */ - zIndex?: number; -} - -export default requireNativeComponent("AMapCircle"); diff --git a/lib/src/cluster/cluster-view.tsx b/lib/src/cluster/cluster-view.tsx deleted file mode 100644 index 89fe38f7..00000000 --- a/lib/src/cluster/cluster-view.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import * as React from "react"; -import { StyleSheet, Text, View, ViewStyle } from "react-native"; -import { ClusterParams } from "."; -import Marker from "../marker"; - -interface Props { - cluster: ClusterParams; - style?: ViewStyle; - textStyle?: ViewStyle; - onPress?: (params: ClusterParams) => void; -} - -export default class ClusterView extends React.PureComponent { - onPress = () => { - this.props.onPress?.call(this, this.props.cluster); - }; - - renderClusterView = () => { - const { count } = this.props.cluster; - const size = 36 + Math.log2(count); - const clusterStyle = { width: size, height: size, borderRadius: size / 2 }; - return ( - - {count} - - ); - }; - - render() { - return ( - - {this.renderClusterView()} - - ); - } -} - -const style = StyleSheet.create({ - cluster: { - borderWidth: 4, - borderColor: "#fff", - backgroundColor: "rgba(245,83,61,0.9)", - alignItems: "center", - justifyContent: "center", - }, - text: { color: "#fff", fontWeight: "600" }, -}); diff --git a/lib/src/cluster/index.tsx b/lib/src/cluster/index.tsx deleted file mode 100644 index efe1b5b0..00000000 --- a/lib/src/cluster/index.tsx +++ /dev/null @@ -1,159 +0,0 @@ -import * as React from "react"; -import { ViewStyle } from "react-native"; -import Supercluster, { ClusterFeature, ClusterProperties } from "supercluster"; -import { CameraEvent } from "../map-view"; -import { LatLng } from "../types"; -import ClusterView from "./cluster-view"; - -export interface ClusterParams { - /** - * 唯一标识 - */ - id: number; - - /** - * 包含的 Marker 数量 - */ - count: number; - - /** - * 坐标 - */ - position: LatLng; -} - -interface ClusterPoint { - /** - * 坐标 - */ - position: LatLng; - - /** - * 携带的数据,可以是任意类型 - */ - properties?: any; -} - -interface Props { - /** - * 聚合半径 - */ - radius?: number; - - /** - * 聚合点样式 - */ - clusterStyle?: ViewStyle; - - /** - * 聚合点文本样式 - */ - clusterTextStyle?: ViewStyle; - - /** - * 坐标点列表 - */ - points: ClusterPoint[]; - - /** - * 渲染 Marker - */ - renderMarker: (item: ClusterPoint) => React.ReactNode; - - /** - * 渲染聚合点 - */ - renderCluster?: (params: ClusterParams) => React.ComponentType; - - /** - * 聚合点点击事件 - */ - onPress?: (params: ClusterParams) => void; -} - -interface State { - clusters: ClusterFeature[]; -} - -export default class Cluster extends React.PureComponent { - static defaultProps = { radius: 200 }; - state: State = { clusters: [] }; - status?: CameraEvent; - cluster?: Supercluster; - - componentDidMount() { - this.init(); - } - - componentDidUpdate(props: Props) { - if (props.points != this.props.points) { - this.init(); - } - } - - async init() { - const { radius, points } = this.props; - // 如果主线程占用太多计算资源,会导致 ios onLoad 事件无法触发,非常蛋疼 - // 暂时想到的解决办法是等一个事件循环 - await new Promise((resolve) => setTimeout(resolve, 0)); - const options = { radius, minZoom: 3, maxZoom: 21 }; - this.cluster = new Supercluster(options).load( - points.map((marker) => ({ - type: "Feature", - geometry: { - type: "Point", - coordinates: [marker.position.longitude, marker.position.latitude], - }, - properties: marker.properties, - })) - ); - if (this.status) { - this.update(this.status); - } - } - - /** - * 需要在 MapView.onCameraIdle({ nativeEvent }) 回调里调用,参数为 nativeEvent - */ - async update(status: CameraEvent) { - this.status = status; - await new Promise((resolve) => setTimeout(resolve, 0)); - const { cameraPosition, latLngBounds } = status; - const { southwest, northeast } = latLngBounds; - const clusters = this.cluster!.getClusters( - [southwest.longitude, southwest.latitude, northeast.longitude, northeast.latitude], - Math.round(cameraPosition.zoom!) - ); - this.setState({ clusters }); - } - - renderCluster = (cluster: ClusterParams) => { - return ( - - ); - }; - - render() { - const { renderCluster, renderMarker } = this.props; - const render = renderCluster || this.renderCluster; - return this.state.clusters.map(({ geometry, properties }) => { - const position = { - latitude: geometry.coordinates[1], - longitude: geometry.coordinates[0], - }; - - if (properties.point_count > 0) { - const { cluster_id, point_count } = properties; - return render({ position, id: cluster_id, count: point_count }); - } - - return renderMarker({ position, properties }); - }); - } -} diff --git a/lib/src/component.ts b/lib/src/component.ts deleted file mode 100644 index 95e6081e..00000000 --- a/lib/src/component.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { PureComponent } from "react"; -import { findNodeHandle, UIManager } from "react-native"; - -export default class Component extends PureComponent { - /** - * 原生 View 名称,继承时必须指定 - */ - name = ""; - mounted = false; - - componentDidMount() { - this.mounted = true; - } - - componentWillUnmount() { - this.mounted = false; - } - - /** - * 调用原生方法 - */ - invoke(name: string, params?: any[]) { - if (!this.mounted) return; - - const handle = findNodeHandle(this); - if (handle) { - const command = UIManager.getViewManagerConfig(this.name).Commands[name]; - UIManager.dispatchViewManagerCommand(handle, command, params); - } - } -} diff --git a/lib/src/heat-map.tsx b/lib/src/heat-map.tsx deleted file mode 100644 index d9d3442d..00000000 --- a/lib/src/heat-map.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import { requireNativeComponent } from "react-native"; -import { LatLng } from "./types"; - -export interface HeatMapProps { - /** - * 节点坐标 - */ - data: LatLng[]; - - /** - * 半径(米) - */ - radius?: number; - - /** - * 透明度 - */ - opacity?: number; -} - -export default requireNativeComponent("AMapHeatMap"); diff --git a/lib/src/index.ts b/lib/src/index.ts deleted file mode 100644 index c2ded5a2..00000000 --- a/lib/src/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -export { default as Circle } from "./circle"; -export { default as Cluster } from "./cluster"; -export { default as HeatMap } from "./heat-map"; -export { default as MapView } from "./map-view"; -export { default as Marker } from "./marker"; -export { default as MultiPoint } from "./multi-point"; -export { default as Polygon } from "./polygon"; -export { default as Polyline } from "./polyline"; -export * from "./types"; -export { AMapSdk }; -import * as AMapSdk from "./sdk"; diff --git a/lib/src/map-view.tsx b/lib/src/map-view.tsx deleted file mode 100644 index e97cee5f..00000000 --- a/lib/src/map-view.tsx +++ /dev/null @@ -1,230 +0,0 @@ -import * as React from "react"; -import { - NativeMethods, - NativeSyntheticEvent, - requireNativeComponent, - ViewProps, -} from "react-native"; -import Component from "./component"; -import { CameraPosition, LatLng, LatLngBounds, MapPoi, MapType, Point } from "./types"; - -export interface CameraEvent { - cameraPosition: CameraPosition; - latLngBounds: LatLngBounds; -} - -export interface MapViewProps extends ViewProps { - /** - * 地图类型 - */ - mapType?: MapType; - - /** - * 初始状态 - */ - initialCameraPosition?: CameraPosition; - - /** - * 是否显示当前定位 - */ - myLocationEnabled?: boolean; - - /** - * 是否显示室内地图 - */ - indoorViewEnabled?: boolean; - - /** - * 是否显示3D建筑 - */ - buildingsEnabled?: boolean; - - /** - * 是否显示标注 - */ - labelsEnabled?: boolean; - - /** - * 是否显示指南针 - */ - compassEnabled?: boolean; - - /** - * 是否显示放大缩小按钮 - * - * @platform android - */ - zoomControlsEnabled?: boolean; - - /** - * 是否显示比例尺 - */ - scaleControlsEnabled?: boolean; - - /** - * 是否显示定位按钮 - * - * @platform android - */ - myLocationButtonEnabled?: boolean; - - /** - * 是否显示路况 - */ - trafficEnabled?: boolean; - - /** - * 最大缩放级别 - */ - maxZoom?: number; - - /** - * 最小缩放级别 - */ - minZoom?: number; - - /** - * 是否启用缩放手势,用于放大缩小 - */ - zoomGesturesEnabled?: boolean; - - /** - * 是否启用滑动手势,用于平移 - */ - scrollGesturesEnabled?: boolean; - - /** - * 是否启用旋转手势,用于调整方向 - */ - rotateGesturesEnabled?: boolean; - - /** - * 是否启用倾斜手势,用于改变视角 - */ - tiltGesturesEnabled?: boolean; - - /** - * 设定定位的最小更新距离 - * - * @platform ios - */ - distanceFilter?: number; - - /** - * 设定最小更新角度,默认为 1 度 - * - * @platform ios - */ - headingFilter?: number; - - /** - * 点击事件 - */ - onPress?: (event: NativeSyntheticEvent) => void; - - /** - * 标注点击事件 - */ - onPressPoi?: (event: NativeSyntheticEvent) => void; - - /** - * 长按事件 - */ - onLongPress?: (event: NativeSyntheticEvent) => void; - - /** - * 地图状态改变事件,随地图状态变化不停地触发 - */ - onCameraMove?: (event: NativeSyntheticEvent) => void; - - /** - * 地图状态改变事件,在停止变化后触发 - */ - onCameraIdle?: (event: NativeSyntheticEvent) => void; - - /** - * 地图初始化完成事件 - */ - onLoad?: (event: NativeSyntheticEvent) => void; - - /** - * 地图定位更新事件 - */ - onLocation?: (event: NativeSyntheticEvent) => void; -} - -const name = "AMapView"; -const NativeMapView = requireNativeComponent(name); - -export default class extends Component { - static defaultProps = { - style: { flex: 1 }, - compassEnabled: true, - scaleControlsEnabled: true, - distanceFilter: 1, - }; - - name = name; - ref?: (React.Component & NativeMethods) | null; - state = { loaded: false }; - callbackMap: { [key: number]: (data: any) => void } = {}; - - /** - * 移动视角 - */ - moveCamera(cameraPosition: CameraPosition, duration = 0) { - this.invoke("moveCamera", [cameraPosition, duration]); - } - - /** - * 点坐标转地理坐标,主要用于地图选点 - */ - getLatLng(point: Point): Promise { - return this.call("getLatLng", point); - } - - callback = ({ nativeEvent }: NativeSyntheticEvent<{ id: number; data: any }>) => { - this.callbackMap[nativeEvent.id]?.call(this, nativeEvent.data); - delete this.callbackMap[nativeEvent.id]; - }; - - call(name: string, args: any): Promise { - const id = Math.random(); - this.invoke("call", [id, name, args]); - return new Promise((resolve) => (this.callbackMap[id] = resolve)); - } - - componentDidMount() { - super.componentDidMount(); - // 无论如何也要在 1 秒后 setLoaded(true) ,防止 onLoad 事件不触发的情况下显示不正常 - // 目前只在 iOS 上低概率出现 - setTimeout(() => this.setState({ loaded: true }), 1000); - } - - render() { - let { style, onLoad } = this.props; - if (!this.state.loaded) { - style = [style, { width: 1, height: 1 }]; - } - return ( - (this.ref = ref)} - style={style} - // @ts-ignore: 内部接口 - onCallback={this.callback} - onPress={(event) => { - if (event.nativeEvent.latitude) { - this.props.onPress?.call(this, event); - } - }} - onLoad={(event) => { - // android 地图部分控件不显示的问题在重新 layout 之后会恢复正常。 - // 同时也能修复 ios 地图偶尔出现的 layout 异常 - this.setState({ loaded: true }); - onLoad?.call(this, event); - }} - /> - ); - } -} diff --git a/lib/src/marker.tsx b/lib/src/marker.tsx deleted file mode 100644 index 7e46cd5a..00000000 --- a/lib/src/marker.tsx +++ /dev/null @@ -1,128 +0,0 @@ -import * as React from "react"; -import { - ImageSourcePropType, - NativeSyntheticEvent, - requireNativeComponent, - View, - ViewStyle, -} from "react-native"; -// @ts-ignore -import resolveAssetSource from "react-native/Libraries/Image/resolveAssetSource"; -import Component from "./component"; -import { LatLng, Point } from "./types"; - -export interface MarkerProps { - /** - * 坐标 - */ position: LatLng; - - /** - * 图标 - */ - icon?: ImageSourcePropType; - - /** - * 透明度 [0, 1] - * - * @platform android - */ - opacity?: number; - - /** - * 是否可拖拽 - */ - draggable?: boolean; - - /** - * 是否平贴地图 - * - * @platform android - */ - flat?: boolean; - - /** - * 层级 - */ - zIndex?: number; - - /** - * 覆盖物锚点比例 - * - * @link http://a.amap.com/lbs/static/unzip/Android_Map_Doc/3D/com/amap/api/maps/model/Marker.html#setAnchor-float-float- - * @platform android - */ - anchor?: Point; - - /** - * 覆盖物偏移位置 - * - * @link http://a.amap.com/lbs/static/unzip/iOS_Map_Doc/AMap_iOS_API_Doc_3D/interface_m_a_annotation_view.html#a78f23c1e6a6d92faf12a00877ac278a7 - * @platform ios - */ - centerOffset?: Point; - - /** - * 自定义 View - */ - children?: React.ReactNode; - - /** - * 点击事件 - */ - onPress?: () => void; - - /** - * 拖放开始事件 - */ - onDragStart?: () => void; - - /** - * 拖放进行事件,类似于 mousemove,在结束之前会不断调用 - */ - onDrag?: () => void; - - /** - * 拖放结束事件 - */ - onDragEnd?: (event: NativeSyntheticEvent) => void; -} - -export default class extends Component { - name = name; - - /** - * 触发自定义 view 更新 - * - * 通常来说,不需要主动调用该方法,对于 android,如果自定义 view 存在异步更新, - * 例如,包含一个引用了网络图片的 ,则需要在 view 更新后主动调用该方法触发 - * icon 更新。 - */ - update = () => { - setTimeout(() => this.invoke("update"), 0); - }; - - componentDidUpdate() { - if (this.props.children) { - this.update(); - } - } - - render() { - const props = { ...this.props }; - Reflect.set(props, "latLng", props.position); - // @ts-ignore android 不能用 position 作为属性,会发生冲突,也是个蛋疼的问题 - delete props.position; - if (props.children) { - props.children = ( - - {props.children} - - ); - } - return ; - } -} - -const name = "AMapMarker"; -const style: ViewStyle = { position: "absolute", zIndex: -1 }; -const NativeMarker = requireNativeComponent(name); diff --git a/lib/src/multi-point.tsx b/lib/src/multi-point.tsx deleted file mode 100644 index ba5f1740..00000000 --- a/lib/src/multi-point.tsx +++ /dev/null @@ -1,28 +0,0 @@ -import * as React from "react"; -import { ImageSourcePropType, NativeSyntheticEvent, requireNativeComponent } from "react-native"; -// @ts-ignore -import resolveAssetSource from "react-native/Libraries/Image/resolveAssetSource"; -import { LatLng } from "./types"; - -const NativeMultiPoint = requireNativeComponent("AMapMultiPoint"); - -export interface MultiPointProps { - /** - * 坐标点集合 - */ - items?: LatLng[]; - - /** - * 图标 - */ - icon?: ImageSourcePropType; - - /** - * 点击事件 - */ - onPress?: (event: NativeSyntheticEvent<{ index: number }>) => void; -} - -export default (props: MultiPointProps) => { - return ; -}; diff --git a/lib/src/polygon.tsx b/lib/src/polygon.tsx deleted file mode 100644 index 87ab9106..00000000 --- a/lib/src/polygon.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { requireNativeComponent } from "react-native"; -import { LatLng } from "./types"; - -export interface Polygon { - /** - * 节点坐标 - */ - points: LatLng[]; - - /** - * 边线宽度 - */ - strokeWidth?: number; - - /** - * 边线颜色 - */ - strokeColor?: string; - - /** - * 填充颜色 - */ - fillColor?: string; - - /** - * 层级 - */ - zIndex?: number; -} - -export default requireNativeComponent("AMapPolygon"); diff --git a/lib/src/polyline.tsx b/lib/src/polyline.tsx deleted file mode 100644 index d4146932..00000000 --- a/lib/src/polyline.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import * as React from "react"; -import { ColorValue, Platform, processColor, requireNativeComponent } from "react-native"; -import { LatLng } from "./types"; - -export interface PolylineProps { - /** - * 节点坐标 - */ - points: LatLng[]; - - /** - * 线段宽度 - */ - width?: number; - - /** - * 线段颜色 - */ - color?: ColorValue; - - /** - * 层级 - */ - zIndex?: number; - - /** - * 多段颜色 - */ - colors: ColorValue[]; - - /** - * 是否使用颜色渐变 - */ - gradient?: boolean; - - /** - * 是否绘制大地线 - */ - geodesic?: boolean; - - /** - * 是否绘制虚线 - */ - dotted?: boolean; - - /** - * 点击事件 - */ - onPress?: () => void; -} - -export default class extends React.PureComponent { - static defaultProps = { colors: [] }; - - render() { - const props = { - ...this.props, - ...Platform.select({ android: { colors: this.props.colors.map(processColor) } }), - }; - // @ts-ignore - return ; - } -} - -const NativePolyline = requireNativeComponent("AMapPolyline"); diff --git a/lib/src/sdk.ts b/lib/src/sdk.ts deleted file mode 100644 index 05290f59..00000000 --- a/lib/src/sdk.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { NativeModules } from "react-native"; - -const { AMapSdk } = NativeModules; - -export function init(apiKey?: string) { - AMapSdk.initSDK(apiKey); -} - -export function getVersion(): Promise { - return AMapSdk.getVersion(); -} diff --git a/lib/src/types.ts b/lib/src/types.ts deleted file mode 100644 index aa16ba45..00000000 --- a/lib/src/types.ts +++ /dev/null @@ -1,137 +0,0 @@ -/** - * 点坐标 - */ -export interface Point { - x: number; - y: number; -} - -/** - * 地理坐标 - */ -export interface LatLng { - /** - * 纬度 - */ - latitude: number; - - /** - * 经度 - */ - longitude: number; -} - -/** - * 地图标注点 - */ -export interface MapPoi { - /** - * 标注点 ID - */ - id: string; - - /** - * 标注点名称 - */ - name: string; - - /** - * 标注点坐标 - */ - position: LatLng; -} - -/** - * 矩形坐标边界 - */ -export interface LatLngBounds { - /** - * 西南坐标 - */ - southwest: LatLng; - - /** - * 东北坐标 - */ - northeast: LatLng; -} - -/** - * 地图状态 - */ -export interface CameraPosition { - /** - * 中心坐标 - */ - target?: LatLng; - - /** - * 缩放级别 - */ - zoom?: number; - - /** - * 朝向、旋转角度 - */ - bearing?: number; - - /** - * 倾斜角度 - */ - tilt?: number; -} - -/** - * 定位 - */ -export interface Location extends LatLng { - /** - * 精度 - */ - accuracy: number; - - /** - * 朝向 - */ - heading: number; - - /** - * 海拔 - */ - altitude: number; - - /** - * 运动速度 - */ - speed: number; -} - -/** - * 地图类型 - */ -export enum MapType { - /** - * 标准地图 - */ - Standard, - - /** - * 卫星地图 - */ - Satellite, - - /** - * 夜间地图 - */ - Night, - - /** - * 导航地图 - */ - Navi, - - /** - * 公交地图 - */ - Bus, -} diff --git a/package.json b/package.json index 0a43b856..d921cd59 100644 --- a/package.json +++ b/package.json @@ -10,42 +10,30 @@ "maps", "mapview" ], - "main": "lib/src", - "files": [ - "lib/src", - "lib/android/src", - "lib/android/build.gradle", - "lib/ios", - "react-native.config.js", - "react-native-amap3d.podspec" - ], "homepage": "https://github.com/qiuxiang/react-native-amap3d", "repository": { "type": "git", "url": "https://github.com/qiuxiang/react-native-amap3d" }, - "scripts": { - "start": "react-native start", - "android": "react-native run-android", - "release-android": "react-native run-android --variant=release", - "reload": "adb reverse tcp:8081 tcp:8081 && adb shell input text rr", - "ios": "react-native run-ios" - }, "dependencies": { - "supercluster": "^7.1.4" + "supercluster": "^8.0.1" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" }, "devDependencies": { - "@react-native-picker/picker": "^2.4.8", - "@react-navigation/native": "^6.1.3", - "@react-navigation/native-stack": "^6.9.9", - "@types/react-native": "^0.71.2", + "@tsconfig/react-native": "^3.0.2", + "@types/react-native": "^0.72.2", "@types/supercluster": "^7.1.0", - "react": "18.2.0", - "react-native": "^0.71.2", - "react-native-safe-area-context": "^4.5.0", - "react-native-screens": "^3.19.0" + "jest": "^29.6.4" }, - "prettier": { - "printWidth": 100 + "codegenConfig": { + "name": "amap", + "type": "all", + "jsSrcsDir": "js", + "android": { + "javaPackageName": "react_native.amap" + } } } diff --git a/react-native-amap3d.podspec b/react-native-amap3d.podspec deleted file mode 100644 index 2de92b61..00000000 --- a/react-native-amap3d.podspec +++ /dev/null @@ -1,20 +0,0 @@ -require "json" - -package = JSON.parse(File.read(File.join(__dir__, "package.json"))) - -Pod::Spec.new do |s| - s.name = "react-native-amap3d" - s.version = package["version"] - s.summary = package["description"] - s.homepage = package["homepage"] - s.license = package["license"] - s.authors = package["author"] - - s.platforms = { :ios => "10.0" } - s.source = { :git => "https://github.com/qiuxiang/react-native-amap3d.git", :tag => "#{s.version}" } - - s.source_files = "lib/ios/**/*.{h,m,mm,swift}" - - s.dependency "React-Core" - s.dependency 'AMap3DMap', "~> 9.6.0" -end diff --git a/react-native.config.js b/react-native.config.js deleted file mode 100644 index 2547c556..00000000 --- a/react-native.config.js +++ /dev/null @@ -1,20 +0,0 @@ -module.exports = { - dependency: { - platforms: { - ios: { project: "lib/ios/react-native-amap3d.podspec" }, - android: { sourceDir: "lib/android" }, - }, - }, - dependencies: { - "react-native-amap3d": { - root: __dirname, - platforms: { - android: { - sourceDir: __dirname + "/lib/android", - packageImportPath: "import qiuxiang.amap3d.AMap3DPackage;", - packageInstance: "new AMap3DPackage()", - }, - }, - }, - }, -}; diff --git a/tsconfig.json b/tsconfig.json index 589ea0bf..45a6c707 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,3 @@ { - "compilerOptions": { - "strict": true, - "jsx": "react-native", - "esModuleInterop": true, - "baseUrl": ".", - "paths": { - "react-native-amap3d": ["lib/src"] - } - } + "extends": "@tsconfig/react-native/tsconfig.json" }