.
diff --git a/__tests__/App-test.tsx b/__tests__/App-test.tsx
deleted file mode 100644
index 090aefa9..00000000
--- a/__tests__/App-test.tsx
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * @format
- */
-
-import 'react-native';
-import React from 'react';
-import App from '../App';
-
-// Note: test renderer must be required after react-native.
-import renderer from 'react-test-renderer';
-
-it('renders correctly', () => {
- renderer.create( );
-});
diff --git a/android/app/_BUCK b/android/app/_BUCK
deleted file mode 100644
index 6862e085..00000000
--- a/android/app/_BUCK
+++ /dev/null
@@ -1,55 +0,0 @@
-# To learn about Buck see [Docs](https://buckbuild.com/).
-# To run your application with Buck:
-# - install Buck
-# - `npm start` - to start the packager
-# - `cd android`
-# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
-# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
-# - `buck install -r android/app` - compile, install and run application
-#
-
-load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
-
-lib_deps = []
-
-create_aar_targets(glob(["libs/*.aar"]))
-
-create_jar_targets(glob(["libs/*.jar"]))
-
-android_library(
- name = "all-libs",
- exported_deps = lib_deps,
-)
-
-android_library(
- name = "app-code",
- srcs = glob([
- "src/main/java/**/*.java",
- ]),
- deps = [
- ":all-libs",
- ":build_config",
- ":res",
- ],
-)
-
-android_build_config(
- name = "build_config",
- package = "fun.upup.musicfree",
-)
-
-android_resource(
- name = "res",
- package = "fun.upup.musicfree",
- res = "src/main/res",
-)
-
-android_binary(
- name = "app",
- keystore = "//android/keystores:debug",
- manifest = "src/main/AndroidManifest.xml",
- package_type = "debug",
- deps = [
- ":app-code",
- ],
-)
diff --git a/android/app/build.gradle b/android/app/build.gradle
index a1e261cc..eca7097e 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -1,355 +1,155 @@
-apply plugin: "com.android.application"
-
-import com.android.build.OutputFile
-import groovy.json.JsonSlurper
-
-/**
- * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
- * and bundleReleaseJsAndAssets).
- * These basically call `react-native bundle` with the correct arguments during the Android build
- * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
- * bundle directly from the development server. Below you can see all the possible configurations
- * and their defaults. If you decide to add a configuration block, make sure to add it before the
- * `apply from: "../../node_modules/react-native/react.gradle"` line.
- *
- * project.ext.react = [
- * // the name of the generated asset file containing your JS bundle
- * bundleAssetName: "index.android.bundle",
- *
- * // the entry file for bundle generation. If none specified and
- * // "index.android.js" exists, it will be used. Otherwise "index.js" is
- * // default. Can be overridden with ENTRY_FILE environment variable.
- * entryFile: "index.android.js",
- *
- * // https://reactnative.dev/docs/performance#enable-the-ram-format
- * bundleCommand: "ram-bundle",
- *
- * // whether to bundle JS and assets in debug mode
- * bundleInDebug: false,
- *
- * // whether to bundle JS and assets in release mode
- * bundleInRelease: true,
- *
- * // whether to bundle JS and assets in another build variant (if configured).
- * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
- * // The configuration property can be in the following formats
- * // 'bundleIn${productFlavor}${buildType}'
- * // 'bundleIn${buildType}'
- * // bundleInFreeDebug: true,
- * // bundleInPaidRelease: true,
- * // bundleInBeta: true,
- *
- * // whether to disable dev mode in custom build variants (by default only disabled in release)
- * // for example: to disable dev mode in the staging build type (if configured)
- * devDisabledInStaging: true,
- * // The configuration property can be in the following formats
- * // 'devDisabledIn${productFlavor}${buildType}'
- * // 'devDisabledIn${buildType}'
- *
- * // the root of your project, i.e. where "package.json" lives
- * root: "../../",
- *
- * // where to put the JS bundle asset in debug mode
- * jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
- *
- * // where to put the JS bundle asset in release mode
- * jsBundleDirRelease: "$buildDir/intermediates/assets/release",
- *
- * // where to put drawable resources / React Native assets, e.g. the ones you use via
- * // require('./image.png')), in debug mode
- * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
- *
- * // where to put drawable resources / React Native assets, e.g. the ones you use via
- * // require('./image.png')), in release mode
- * resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
- *
- * // by default the gradle tasks are skipped if none of the JS files or assets change; this means
- * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
- * // date; if you have any other folders that you want to ignore for performance reasons (gradle
- * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
- * // for example, you might want to remove it from here.
- * inputExcludes: ["android/**", "ios/**"],
- *
- * // override which node gets called and with what additional arguments
- * nodeExecutableAndArgs: ["node"],
- *
- * // supply additional arguments to the packager
- * extraPackagerArgs: []
- * ]
- */
-
-project.ext.react = [
- entryFile: "index.js",
- enableHermes: true, // clean and rebuild if changing
- hermesCommand: '../../node_modules/react-native/sdks/hermesc/%OS-BIN%/hermesc'
-]
-
-apply from: "../../node_modules/react-native/react.gradle"
-
-/**
- * Set this to true to create two separate APKs instead of one:
- * - An APK that only works on ARM devices
- * - An APK that only works on x86 devices
- * The advantage is the size of the APK is reduced by about 4MB.
- * Upload all the APKs to the Play Store and people will download
- * the correct one based on the CPU architecture of their device.
- */
-def enableSeparateBuildPerCPUArchitecture = false
-
-/**
- * Run Proguard to shrink the Java bytecode in release builds.
- */
-def enableProguardInReleaseBuilds = false
-
-/**
- * The preferred build flavor of JavaScriptCore.
- *
- * 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:+'
-
-/**
- * Whether to enable the Hermes VM.
- *
- * This should be set on project.ext.react and that value will be read here. If it is not set
- * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
- * and the benefits of using Hermes will therefore be sharply reduced.
- */
-def enableHermes = project.ext.react.get("enableHermes", false);
-
-/**
- * Architectures to build native code for.
- */
-def reactNativeArchitectures() {
- def value = project.getProperties().get("reactNativeArchitectures")
- return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
-}
-
-def keystoreProperties = new Properties()
-def keystorePropertiesFile = rootProject.file('keystore.properties')
-if (keystorePropertiesFile.exists()) {
- keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
-}
-
-def getVersion() {
- def inputFile = new File("../package.json")
- def packageJson = new JsonSlurper().parseText(inputFile.text)
- return packageJson["version"]
-}
-
-def appVersion = getVersion()
-
-
-android {
- ndkVersion rootProject.ext.ndkVersion
-
- compileSdkVersion rootProject.ext.compileSdkVersion
-
- defaultConfig {
- applicationId "fun.upup.musicfree"
- minSdkVersion rootProject.ext.minSdkVersion
- targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 1
- versionName appVersion
- buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
-
- if (isNewArchitectureEnabled()) {
- // We configure the NDK build only if you decide to opt-in for the New Architecture.
- externalNativeBuild {
- ndkBuild {
- arguments "APP_PLATFORM=android-21",
- "APP_STL=c++_shared",
- "NDK_TOOLCHAIN_VERSION=clang",
- "GENERATED_SRC_DIR=$buildDir/generated/source",
- "PROJECT_BUILD_DIR=$buildDir",
- "REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
- "REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build",
- "NODE_MODULES_DIR=$rootDir/../node_modules"
- cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1"
- cppFlags "-std=c++17"
- // Make sure this target name is the same you specify inside the
- // src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.
- targets "musicfree_appmodules"
- }
- }
- if (!enableSeparateBuildPerCPUArchitecture) {
- ndk {
- abiFilters (*reactNativeArchitectures())
- }
- }
- }
- }
-
- if (isNewArchitectureEnabled()) {
- // We configure the NDK build only if you decide to opt-in for the New Architecture.
- externalNativeBuild {
- ndkBuild {
- path "$projectDir/src/main/jni/Android.mk"
- }
- }
- def reactAndroidProjectDir = project(':ReactAndroid').projectDir
- def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) {
- dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck")
- from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
- into("$buildDir/react-ndk/exported")
- }
- def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) {
- dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck")
- from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
- into("$buildDir/react-ndk/exported")
- }
- afterEvaluate {
- // If you wish to add a custom TurboModule or component locally,
- // you should uncomment this line.
- // preBuild.dependsOn("generateCodegenArtifactsFromSchema")
- preDebugBuild.dependsOn(packageReactNdkDebugLibs)
- preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
-
- // Due to a bug inside AGP, we have to explicitly set a dependency
- // between configureNdkBuild* tasks and the preBuild tasks.
- // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732
- configureNdkBuildRelease.dependsOn(preReleaseBuild)
- configureNdkBuildDebug.dependsOn(preDebugBuild)
- reactNativeArchitectures().each { architecture ->
- tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure {
- dependsOn("preDebugBuild")
- }
- tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure {
- dependsOn("preReleaseBuild")
- }
- }
- }
- }
-
- splits {
- abi {
- reset()
- enable enableSeparateBuildPerCPUArchitecture
- universalApk false // If true, also generate a universal APK
- include (*reactNativeArchitectures())
- }
- }
- signingConfigs {
- debug {
- storeFile file('debug.keystore')
- storePassword 'android'
- keyAlias 'androiddebugkey'
- keyPassword 'android'
- }
- release {
- storeFile file(keystoreProperties['RELEASE_STORE_FILE'])
- storePassword keystoreProperties['RELEASE_STORE_PASSWORD']
- keyAlias keystoreProperties['RELEASE_KEY_ALIAS']
- keyPassword keystoreProperties['RELEASE_KEY_PASSWORD']
-
- }
- }
- 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.release
- minifyEnabled enableProguardInReleaseBuilds
- proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
- }
- }
-
- // applicationVariants are e.g. debug, release
- applicationVariants.all { variant ->
- variant.outputs.each { output ->
- // For each separate APK per architecture, set a unique version code as described here:
- // https://developer.android.com/studio/build/configure-apk-splits.html
- // Example: versionCode 1 will generate 1001 for armeabi-v7a, 1002 for x86, etc.
- def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
- def abi = output.getFilter(OutputFile.ABI)
- if (abi != null) { // null for the universal-debug, universal-release variants
- output.versionCodeOverride =
- defaultConfig.versionCode * 1000 + versionCodes.get(abi)
- }
-
- }
- }
-}
-
-dependencies {
- implementation fileTree(dir: "libs", include: ["*.jar"])
-
- //noinspection GradleDynamicVersion
- implementation "com.facebook.react:react-native:+" // From node_modules
-
- implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
- implementation "androidx.core:core-splashscreen:1.0.0"
-
- debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
- exclude group:'com.facebook.fbjni'
- }
-
- debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
- exclude group:'com.facebook.flipper'
- exclude group:'com.squareup.okhttp3', module:'okhttp'
- }
-
- debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
- exclude group:'com.facebook.flipper'
- }
-
- if (enableHermes) {
- //noinspection GradleDynamicVersion
- implementation("com.facebook.react:hermes-engine:+") { // From node_modules
- exclude group:'com.facebook.fbjni'
- }
- } else {
- implementation jscFlavor
- }
-
- implementation project(':react-native-fs')
- implementation 'com.facebook.fresco:animated-gif:2.5.0'
- // https://mvnrepository.com/artifact/net.jthink/jaudiotagger
- implementation 'net.jthink:jaudiotagger:2.2.5'
-
-}
-
-if (isNewArchitectureEnabled()) {
- // If new architecture is enabled, we let you build RN from source
- // Otherwise we fallback to a prebuilt .aar bundled in the NPM package.
- // This will be applied to all the imported transtitive dependency.
- configurations.all {
- resolutionStrategy.dependencySubstitution {
- substitute(module("com.facebook.react:react-native"))
- .using(project(":ReactAndroid"))
- .because("On New Architecture we're building React Native from source")
- substitute(module("com.facebook.react:hermes-engine"))
- .using(project(":ReactAndroid:hermes-engine"))
- .because("On New Architecture we're building Hermes from source")
- }
- }
-}
-
-// Run this once to be able to run the application with BUCK
-// puts all compile dependencies into folder libs for BUCK to use
-task copyDownloadableDepsToLibs(type: Copy) {
- from configurations.implementation
- into 'libs'
-}
-
-apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
-
-apply from: file("../../node_modules/react-native-vector-icons/fonts.gradle");
-
-def isNewArchitectureEnabled() {
- // To opt-in for the New Architecture, you can either:
- // - Set `newArchEnabled` to true inside the `gradle.properties` file
- // - Invoke gradle with `-newArchEnabled=true`
- // - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
- return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
-}
-
+apply plugin: "com.android.application"
+apply plugin: "org.jetbrains.kotlin.android"
+apply plugin: "com.facebook.react"
+
+import com.android.build.OutputFile
+import groovy.json.JsonSlurper
+
+
+/**
+ * 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"]
+ //
+ // Added by install-expo-modules
+ entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", rootDir.getAbsoluteFile().getParentFile().getAbsolutePath(), "android", "absolute"].execute(null, rootDir).text.trim())
+ cliFile = new File(["node", "--print", "require.resolve('@expo/cli')"].execute(null, rootDir).text.trim())
+ bundleCommand = "export:embed"
+}
+
+/**
+ * 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:+'
+
+// !! Add lines
+def keystoreProperties = new Properties()
+def keystorePropertiesFile = rootProject.file('keystore.properties')
+if (keystorePropertiesFile.exists()) {
+ keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
+}
+
+static def getVersion() {
+ def inputFile = new File("../package.json")
+ def packageJson = new JsonSlurper().parseText(inputFile.text)
+ return packageJson["version"]
+}
+
+def appVersion = getVersion()
+
+android {
+ ndkVersion rootProject.ext.ndkVersion
+ buildToolsVersion rootProject.ext.buildToolsVersion
+ compileSdk rootProject.ext.compileSdkVersion
+
+ namespace "fun.upup.musicfree"
+ defaultConfig {
+ applicationId "fun.upup.musicfree"
+ minSdkVersion rootProject.ext.minSdkVersion
+ targetSdkVersion rootProject.ext.targetSdkVersion
+ versionCode 1
+ versionName appVersion
+ }
+ signingConfigs {
+ debug {
+ storeFile file('debug.keystore')
+ storePassword 'android'
+ keyAlias 'androiddebugkey'
+ keyPassword 'android'
+ }
+ // !! Add lines
+ release {
+ storeFile file(keystoreProperties['RELEASE_STORE_FILE'])
+ storePassword keystoreProperties['RELEASE_STORE_PASSWORD']
+ keyAlias keystoreProperties['RELEASE_KEY_ALIAS']
+ keyPassword keystoreProperties['RELEASE_KEY_PASSWORD']
+ }
+ }
+ 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.release
+ 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")
+
+ if (hermesEnabled.toBoolean()) {
+ implementation("com.facebook.react:hermes-android")
+ } else {
+ implementation jscFlavor
+ }
+
+ // !! Add lines
+ implementation project(':react-native-fs')
+ implementation 'com.facebook.fresco:animated-gif:2.5.0'
+ // https://mvnrepository.com/artifact/net.jthink/jaudiotagger
+ implementation 'net.jthink:jaudiotagger:2.2.5'
+}
+
+apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
diff --git a/android/app/build_defs.bzl b/android/app/build_defs.bzl
deleted file mode 100644
index fff270f8..00000000
--- a/android/app/build_defs.bzl
+++ /dev/null
@@ -1,19 +0,0 @@
-"""Helper definitions to glob .aar and .jar targets"""
-
-def create_aar_targets(aarfiles):
- for aarfile in aarfiles:
- name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
- lib_deps.append(":" + name)
- android_prebuilt_aar(
- name = name,
- aar = aarfile,
- )
-
-def create_jar_targets(jarfiles):
- for jarfile in jarfiles:
- name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
- lib_deps.append(":" + name)
- prebuilt_jar(
- name = name,
- binary_jar = jarfile,
- )
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
index 4b185bc1..eb98c01a 100644
--- a/android/app/src/debug/AndroidManifest.xml
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -2,12 +2,8 @@
-
-
-
-
+ tools:ignore="GoogleAppIndexingWarning"/>
diff --git a/android/app/src/debug/java/fun/upup/musicfree/ReactNativeFlipper.java b/android/app/src/debug/java/fun/upup/musicfree/ReactNativeFlipper.java
deleted file mode 100644
index d7d12636..00000000
--- a/android/app/src/debug/java/fun/upup/musicfree/ReactNativeFlipper.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * 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 fun.upup.musicfree;
-
-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.react.ReactFlipperPlugin;
-import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
-import com.facebook.react.ReactInstanceEventListener;
-import com.facebook.react.ReactInstanceManager;
-import com.facebook.react.bridge.ReactContext;
-import com.facebook.react.modules.network.NetworkingModule;
-import okhttp3.OkHttpClient;
-
-public class ReactNativeFlipper {
- public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
- if (FlipperUtils.shouldEnableFlipper(context)) {
- final FlipperClient client = AndroidFlipperClient.getInstance(context);
-
- client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
- client.addPlugin(new ReactFlipperPlugin());
- client.addPlugin(new DatabasesFlipperPlugin(context));
- client.addPlugin(new SharedPreferencesFlipperPlugin(context));
- client.addPlugin(CrashReporterPlugin.getInstance());
-
- NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
- NetworkingModule.setCustomClientBuilder(
- new NetworkingModule.CustomClientBuilder() {
- @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/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 440b8bd4..8a721fe0 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,56 +1,58 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android/app/src/main/ic_launcher-playstore.png b/android/app/src/main/ic_launcher-playstore.png
new file mode 100644
index 00000000..1140f6f6
Binary files /dev/null and b/android/app/src/main/ic_launcher-playstore.png differ
diff --git a/android/app/src/main/java/fun/upup/musicfree/MainActivity.java b/android/app/src/main/java/fun/upup/musicfree/MainActivity.java
deleted file mode 100644
index e5b4841a..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/MainActivity.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package fun.upup.musicfree;
-
-import com.facebook.react.ReactActivity;
-import com.facebook.react.ReactActivityDelegate;
-import com.facebook.react.ReactRootView;
-import android.os.Bundle;
-import com.zoontek.rnbootsplash.RNBootSplash;
-import androidx.core.view.WindowCompat;
-
-public class MainActivity extends ReactActivity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- RNBootSplash.init(this);
- super.onCreate(null);
- WindowCompat.setDecorFitsSystemWindows(getWindow(), false);
- }
-
- /**
- * Returns the name of the main component registered from JavaScript. This is used to schedule
- * rendering of the component.
- */
- @Override
- protected String getMainComponentName() {
- return "MusicFree";
- }
-
- /**
- * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and
- * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer
- * (Paper).
- */
- @Override
- protected ReactActivityDelegate createReactActivityDelegate() {
- return new MainActivityDelegate(this, getMainComponentName());
- }
-
- public static class MainActivityDelegate extends ReactActivityDelegate {
- public MainActivityDelegate(ReactActivity activity, String mainComponentName) {
- super(activity, mainComponentName);
- }
-
- @Override
- protected ReactRootView createRootView() {
- ReactRootView reactRootView = new ReactRootView(getContext());
- // If you opted-in for the New Architecture, we enable the Fabric Renderer.
- reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);
- return reactRootView;
- }
-
- @Override
- protected boolean isConcurrentRootEnabled() {
- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).
- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html
- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
- }
- }
-}
diff --git a/android/app/src/main/java/fun/upup/musicfree/MainActivity.kt b/android/app/src/main/java/fun/upup/musicfree/MainActivity.kt
new file mode 100644
index 00000000..efe16e9f
--- /dev/null
+++ b/android/app/src/main/java/fun/upup/musicfree/MainActivity.kt
@@ -0,0 +1,23 @@
+package `fun`.upup.musicfree
+import expo.modules.ReactActivityDelegateWrapper
+
+import com.facebook.react.ReactActivity
+import com.facebook.react.ReactActivityDelegate
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
+import com.facebook.react.defaults.DefaultReactActivityDelegate
+
+class MainActivity : ReactActivity() {
+
+ /**
+ * Returns the name of the main component registered from JavaScript. This is used to schedule
+ * rendering of the component.
+ */
+ override fun getMainComponentName(): String = "MusicFree"
+
+ /**
+ * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
+ * which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
+ */
+ override fun createReactActivityDelegate(): ReactActivityDelegate =
+ ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled))
+}
diff --git a/android/app/src/main/java/fun/upup/musicfree/MainApplication.java b/android/app/src/main/java/fun/upup/musicfree/MainApplication.java
deleted file mode 100644
index eacac5e6..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/MainApplication.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package fun.upup.musicfree;
-
-import android.app.Application;
-import android.content.Context;
-
-import com.facebook.react.PackageList;
-import com.facebook.react.ReactApplication;
-import com.facebook.react.ReactInstanceManager;
-import com.facebook.react.ReactNativeHost;
-import com.facebook.react.ReactPackage;
-import com.facebook.react.config.ReactFeatureFlags;
-import com.facebook.soloader.SoLoader;
-
-import fun.upup.musicfree.appIconUtil.AppIconUtilPackage;
-import fun.upup.musicfree.newarchitecture.MainApplicationReactNativeHost;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.List;
-
-import com.rnfs.RNFSPackage;
-import fun.upup.musicfree.utils.UtilsPackage;
-import fun.upup.musicfree.mp3Util.Mp3UtilPackage;
-import fun.upup.musicfree.lyricUtil.LyricUtilPackage;
-
-public class MainApplication extends Application implements ReactApplication {
-
- private final ReactNativeHost mReactNativeHost =
- new ReactNativeHost(this) {
- @Override
- public boolean getUseDeveloperSupport() {
- return BuildConfig.DEBUG;
- }
-
- @Override
- protected List getPackages() {
- @SuppressWarnings("UnnecessaryLocalVariable")
- List packages = new PackageList(this).getPackages();
- // Packages that cannot be autolinked yet can be added manually here, for example:
- // packages.add(new MyReactNativePackage());
- packages.add(new UtilsPackage());
- packages.add(new Mp3UtilPackage());
- packages.add(new LyricUtilPackage());
- packages.add(new AppIconUtilPackage(getPackageName()));
- return packages;
- }
-
- @Override
- protected String getJSMainModuleName() {
- return "index";
- }
- };
-
- private final ReactNativeHost mNewArchitectureNativeHost =
- new MainApplicationReactNativeHost(this);
-
- @Override
- public ReactNativeHost getReactNativeHost() {
- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
- return mNewArchitectureNativeHost;
- } else {
- return mReactNativeHost;
- }
- }
-
- @Override
- public void onCreate() {
- super.onCreate();
- // If you opted-in for the New Architecture, we enable the TurboModule system
- ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
- SoLoader.init(this, /* native exopackage */ false);
- initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
- }
-
- /**
- * Loads Flipper in React Native templates. Call this in the onCreate method with something like
- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
- *
- * @param context
- * @param reactInstanceManager
- */
- private static void initializeFlipper(
- Context context, ReactInstanceManager reactInstanceManager) {
- if (BuildConfig.DEBUG) {
- try {
- /*
- We use reflection here to pick up the class that initializes Flipper,
- since Flipper library is not available in release mode
- */
- Class> aClass = Class.forName("fun.upup.musicfree.ReactNativeFlipper");
- aClass
- .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
- .invoke(null, context, reactInstanceManager);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- }
- }
- }
-}
diff --git a/android/app/src/main/java/fun/upup/musicfree/MainApplication.kt b/android/app/src/main/java/fun/upup/musicfree/MainApplication.kt
new file mode 100644
index 00000000..32ea3811
--- /dev/null
+++ b/android/app/src/main/java/fun/upup/musicfree/MainApplication.kt
@@ -0,0 +1,58 @@
+package `fun`.upup.musicfree
+import android.content.res.Configuration
+import expo.modules.ApplicationLifecycleDispatcher
+import expo.modules.ReactNativeHostWrapper
+
+import android.app.Application
+import com.facebook.react.PackageList
+import com.facebook.react.ReactApplication
+import com.facebook.react.ReactHost
+import com.facebook.react.ReactNativeHost
+import com.facebook.react.ReactPackage
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
+import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
+import com.facebook.react.defaults.DefaultReactNativeHost
+import com.facebook.soloader.SoLoader
+import `fun`.upup.musicfree.lyricUtil.LyricUtilPackage
+import `fun`.upup.musicfree.mp3Util.Mp3UtilPackage
+import `fun`.upup.musicfree.utils.UtilsPackage
+
+class MainApplication : Application(), ReactApplication {
+
+ override val reactNativeHost: ReactNativeHost =
+ ReactNativeHostWrapper(this, object : DefaultReactNativeHost(this) {
+ override fun getPackages(): List =
+ PackageList(this).packages.apply {
+ // Packages that cannot be autolinked yet can be added manually here, for example:
+ // add(MyReactNativePackage())
+ add(UtilsPackage())
+ add(Mp3UtilPackage())
+ add(LyricUtilPackage())
+ }
+
+ override fun getJSMainModuleName(): String = "index"
+
+ override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
+
+ override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
+ override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
+ })
+
+ override val reactHost: ReactHost
+ get() = ReactNativeHostWrapper.createReactHost(applicationContext, reactNativeHost)
+
+ override fun onCreate() {
+ super.onCreate()
+ SoLoader.init(this, false)
+ if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
+ // If you opted-in for the New Architecture, we load the native entry point for this app.
+ load()
+ }
+ ApplicationLifecycleDispatcher.onApplicationCreate(this)
+ }
+
+ override fun onConfigurationChanged(newConfig: Configuration) {
+ super.onConfigurationChanged(newConfig)
+ ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig)
+ }
+}
diff --git a/android/app/src/main/java/fun/upup/musicfree/appIconUtil/AppIconUtilModule.java b/android/app/src/main/java/fun/upup/musicfree/appIconUtil/AppIconUtilModule.java
deleted file mode 100644
index 9434ecb6..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/appIconUtil/AppIconUtilModule.java
+++ /dev/null
@@ -1,173 +0,0 @@
-// 参考:https://blog.stackademic.com/change-the-app-icon-at-runtime-for-react-native-by-creating-a-nativemodule-5bfb285bd69b
-package fun.upup.musicfree.appIconUtil;
-
-import android.Manifest;
-import android.app.Activity;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.app.Activity;
-import android.app.Application;
-import android.content.ComponentName;
-import android.content.pm.PackageManager;
-import android.os.Bundle;
-
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-
-import com.facebook.react.bridge.Promise;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.bridge.ReactContextBaseJavaModule;
-import com.facebook.react.bridge.ReactMethod;
-
-import java.util.HashSet;
-import java.util.Set;
-
-
-public class AppIconUtilModule extends ReactContextBaseJavaModule implements Application.ActivityLifecycleCallbacks {
- private static ReactApplicationContext reactContext;
-
- private final String packageName;
-
- public static final String MAIN_ACTVITY_BASE_NAME = ".MainActivity";
-
- private String componentClass = "";
-
- private final Set classesToKill = new HashSet<>();
-
- public AppIconUtilModule(ReactApplicationContext context, String packageName) {
- super(context);
- reactContext = context;
- this.packageName = packageName;
- }
-
- @NonNull
- @Override
- public String getName() {
- return "AppIconUtil";
- }
-
- @ReactMethod
- public void getIcon(Promise promise) {
- final Activity activity = getCurrentActivity();
- if (activity == null) {
- promise.reject("ACTIVITY_NOT_FOUND", "Activity was not found");
- return;
- }
-
- final String activityName = activity.getComponentName().getClassName();
-
- if (activityName.endsWith(MAIN_ACTVITY_BASE_NAME)) {
- promise.resolve("Default");
- return;
- }
- String[] activityNameSplit = activityName.split("MainActivity");
- if (activityNameSplit.length != 2) {
- promise.reject("ANDROID:UNEXPECTED_COMPONENT_CLASS:", this.componentClass);
- return;
- }
- promise.resolve(activityNameSplit[1]);
- }
-
- @ReactMethod
- public void changeIcon(String iconName, Promise promise) {
-
- final Activity activity = getCurrentActivity();
-
- if (activity == null) {
- promise.reject("ACTIVITY_NOT_FOUND", "The activity is null. Check if the app is running properly.");
- return;
- }
- if (iconName.isEmpty()) {
- promise.reject("EMPTY_ICON_STRING", "Icon name is missing i.e. changeIcon('YOUR_ICON_NAME_HERE')");
- return;
- }
- if (this.componentClass.isEmpty()) {
- this.componentClass = activity.getComponentName().getClassName(); // i.e. MyActivity
- }
-
- final String activeClass = this.packageName + MAIN_ACTVITY_BASE_NAME + iconName;
-
- if (this.componentClass.equals(activeClass)) {
- promise.reject("ICON_ALREADY_USED", "This icons is the current active icon. " + this.componentClass);
- return;
- }
-
- try {
- activity.getPackageManager().setComponentEnabledSetting(
- new ComponentName(this.packageName, activeClass),
- PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
- PackageManager.DONT_KILL_APP
- );
- promise.resolve(iconName);
- } catch (Exception e) {
- promise.reject("ICON_INVALID", e.getLocalizedMessage());
- return;
- }
-
- this.classesToKill.add(this.componentClass);
- this.componentClass = activeClass;
- activity.getApplication().registerActivityLifecycleCallbacks(this);
-// The completeIconChange() is what makes the current active class disabled.
-// Move it to onActivityPaused or onActivityStopped etc to change the icon only when the app closes or goes to background
- completeIconChange();
- }
-
- private void completeIconChange() {
- final Activity activity = getCurrentActivity();
- if (activity == null) return;
-
-// Works for minSdkVersion = 23
- for (String className : classesToKill) {
- activity.getPackageManager().setComponentEnabledSetting(
- new ComponentName(this.packageName, className),
- PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
- PackageManager.DONT_KILL_APP
- );
- }
-/*
- // Works for minSdkVersion = 24 and above
- classesToKill.forEach((cls) -> activity.getPackageManager().setComponentEnabledSetting(
- new ComponentName(this.packageName, cls),
- PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
- PackageManager.DONT_KILL_APP
- ));
-*/
- classesToKill.clear();
- }
-
- @Override
- public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle bundle) {
-
- }
-
- @Override
- public void onActivityStarted(@NonNull Activity activity) {
-
- }
-
- @Override
- public void onActivityResumed(@NonNull Activity activity) {
-
- }
-
- @Override
- public void onActivityPaused(@NonNull Activity activity) {
-
- }
-
- @Override
- public void onActivityStopped(@NonNull Activity activity) {
-
- }
-
- @Override
- public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle bundle) {
-
- }
-
- @Override
- public void onActivityDestroyed(@NonNull Activity activity) {
-
- }
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/appIconUtil/AppIconUtilPackage.java b/android/app/src/main/java/fun/upup/musicfree/appIconUtil/AppIconUtilPackage.java
deleted file mode 100644
index 424a258e..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/appIconUtil/AppIconUtilPackage.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package fun.upup.musicfree.appIconUtil;
-
-import com.facebook.react.ReactPackage;
-import com.facebook.react.bridge.NativeModule;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.uimanager.ViewManager;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-public class AppIconUtilPackage implements ReactPackage {
-
- private final String packageName;
-
- public AppIconUtilPackage(String packageName) {
- this.packageName = packageName;
- }
-
- @Override
- public List createViewManagers(ReactApplicationContext reactContext) {
- return Collections.emptyList();
- }
-
- @Override
- public List createNativeModules(
- ReactApplicationContext reactContext) {
- List modules = new ArrayList<>();
-
- modules.add(new AppIconUtilModule(reactContext, this.packageName));
-
- return modules;
- }
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilModule.java b/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilModule.java
deleted file mode 100644
index 381dbfdb..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilModule.java
+++ /dev/null
@@ -1,241 +0,0 @@
-package fun.upup.musicfree.lyricUtil;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Build;
-import android.provider.Settings;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.RequiresApi;
-
-import com.facebook.react.bridge.Promise;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.bridge.ReactContextBaseJavaModule;
-import com.facebook.react.bridge.ReactMethod;
-import com.facebook.react.bridge.ReadableMap;
-import com.facebook.react.bridge.UiThreadUtil;
-
-import java.util.HashMap;
-import java.util.Map;
-
-
-public class LyricUtilModule extends ReactContextBaseJavaModule {
- private static ReactApplicationContext reactContext;
- private LyricView lyricView;
-
- public LyricUtilModule(ReactApplicationContext context) {
- super(context);
- reactContext = context;
- }
-
- @NonNull
- @Override
- public String getName() {
- return "LyricUtil";
- }
-
- @ReactMethod
- public void checkSystemAlertPermission(Promise promise){
- try {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- promise.resolve(Settings.canDrawOverlays(reactContext));
- }
- promise.resolve(true);
- } catch(Exception e) {
- promise.reject("Error", e.getMessage());
- }
- }
-
- @RequiresApi(api = Build.VERSION_CODES.M)
- @ReactMethod
- public void requestSystemAlertPermission(Promise promise){
- try {
- Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
- intent.setData(Uri.parse("package:" + getReactApplicationContext().getPackageName()));
- Activity currentActivity = getCurrentActivity();
- if (currentActivity != null) {
- currentActivity.startActivity(intent);
- }
- promise.resolve(true);
- } catch(Exception e) {
- promise.reject("Error", e.getMessage());
- }
- }
-
-
- @ReactMethod
- public void showStatusBarLyric(String initLyric, ReadableMap options, Promise promise) {
- try {
- UiThreadUtil.runOnUiThread(() -> {
- if(lyricView == null) {
- lyricView = new LyricView(reactContext);
- }
- /**
- * topPercent: number;
- * leftPercent: number;
- * align: number;
- * color: string;
- * backgroundColor: string;
- * widthPercent: number;
- * fontSize: number;
- */
- Map mapOptions = new HashMap<>();
- if(options.hasKey("topPercent")) {
- mapOptions.put("topPercent", options.getDouble("topPercent"));
- }
- if(options.hasKey("leftPercent")) {
- mapOptions.put("leftPercent", options.getDouble("leftPercent"));
- }
- if(options.hasKey("align")) {
- mapOptions.put("align", options.getInt("align"));
-
- }
- if(options.hasKey("color")) {
- mapOptions.put("color", options.getString("color"));
-
- }
- if(options.hasKey("backgroundColor")) {
- mapOptions.put("backgroundColor", options.getString("backgroundColor"));
-
- }
- if(options.hasKey("widthPercent")) {
- mapOptions.put("widthPercent", options.getDouble("widthPercent"));
-
- }
- if(options.hasKey("fontSize")) {
- mapOptions.put("fontSize", options.getDouble("fontSize"));
-
- }
- try {
- lyricView.showLyricWindow(initLyric, mapOptions);
- promise.resolve(true);
- } catch (Exception e) {
- promise.reject("Exception", e.getMessage());
- }
- });
- } catch (Exception e) {
- promise.reject("Exception", e.getMessage());
- }
-
- }
-
-
-
-
- @ReactMethod
- public void hideStatusBarLyric(Promise promise) {
- try {
- UiThreadUtil.runOnUiThread(() -> {
- if(lyricView != null) {
- lyricView.hideLyricWindow();
- }
- });
- promise.resolve(true);
- } catch (Exception e) {
- promise.reject("Exception", e.getMessage());
- }
- }
-
- @ReactMethod
- public void setStatusBarLyricText(String lyric, Promise promise) {
- try {
- UiThreadUtil.runOnUiThread(() -> {
- if(lyricView != null) {
- lyricView.setText(lyric);
- }
- });
- promise.resolve(true);
- } catch (Exception e) {
- promise.reject("Exception", e.getMessage());
- }
- }
-
- @ReactMethod
- public void setStatusBarLyricAlign(int alignment, Promise promise) {
- try {
- UiThreadUtil.runOnUiThread(() -> {
- if(lyricView != null) {
- lyricView.setAlign(alignment);
- }
- });
- promise.resolve(true);
- } catch (Exception e) {
- promise.reject("Exception", e.getMessage());
- }
- }
-
- @ReactMethod
- public void setStatusBarLyricTop(double pct, Promise promise) {
- try {
- UiThreadUtil.runOnUiThread(() -> {
- if(lyricView != null) {
- lyricView.setTopPercent(pct);
- }
- });
- promise.resolve(true);
- } catch (Exception e) {
- promise.reject("Exception", e.getMessage());
- }
- }
-
- @ReactMethod
- public void setStatusBarLyricLeft(double pct, Promise promise) {
- try {
- UiThreadUtil.runOnUiThread(() -> {
- if(lyricView != null) {
- lyricView.setLeftPercent(pct);
- }
- });
- promise.resolve(true);
- } catch (Exception e) {
- promise.reject("Exception", e.getMessage());
- }
- }
-
- @ReactMethod
- public void setStatusBarLyricWidth(double pct, Promise promise) {
- try {
- UiThreadUtil.runOnUiThread(() -> {
- if(lyricView != null) {
- lyricView.setWidth(pct);
- }
- });
- promise.resolve(true);
- } catch (Exception e) {
- promise.reject("Exception", e.getMessage());
- }
- }
-
- @ReactMethod
- public void setStatusBarLyricFontSize(float fontSize, Promise promise) {
- try {
- UiThreadUtil.runOnUiThread(() -> {
- if(lyricView != null) {
- lyricView.setFontSize(fontSize);
- }
- });
- promise.resolve(true);
- } catch (Exception e) {
- promise.reject("Exception", e.getMessage());
- }
- }
-
- @ReactMethod
- public void setStatusBarColors(String textColor, String backgroundColor, Promise promise) {
- try {
- UiThreadUtil.runOnUiThread(() -> {
- if(lyricView != null) {
- lyricView.setColors(textColor, backgroundColor);
- }
- });
- promise.resolve(true);
- } catch (Exception e) {
- promise.reject("Exception", e.getMessage());
- }
- }
-
-
-
-}
diff --git a/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilModule.kt b/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilModule.kt
new file mode 100644
index 00000000..cab026e3
--- /dev/null
+++ b/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilModule.kt
@@ -0,0 +1,179 @@
+package `fun`.upup.musicfree.lyricUtil
+
+import android.app.Activity
+import android.content.Intent
+import android.net.Uri
+import android.os.Build
+import android.provider.Settings
+import android.util.Log
+import androidx.annotation.RequiresApi
+import com.facebook.react.bridge.*
+import java.util.*
+
+class LyricUtilModule(private val reactContext: ReactApplicationContext): ReactContextBaseJavaModule(reactContext) {
+ override fun getName() = "LyricUtil"
+ private var lyricView: LyricView? = null
+
+ @ReactMethod
+ fun checkSystemAlertPermission(promise: Promise) {
+ try {
+ promise.resolve(Settings.canDrawOverlays(reactContext))
+ } catch (e: Exception) {
+ promise.reject("Error", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun requestSystemAlertPermission(promise: Promise) {
+ try {
+ val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION).apply {
+ data = Uri.parse("package:" + reactContext.packageName)
+ }
+ currentActivity?.startActivity(intent)
+ promise.resolve(true)
+ } catch (e: Exception) {
+ promise.reject("Error", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun showStatusBarLyric(initLyric: String, options: ReadableMap, promise: Promise) {
+ try {
+ UiThreadUtil.runOnUiThread {
+ if (lyricView == null) {
+ lyricView = LyricView(reactContext)
+ }
+
+ val mapOptions = mutableMapOf().apply {
+ if (options.hasKey("topPercent")) {
+ put("topPercent", options.getDouble("topPercent"))
+ }
+ if (options.hasKey("leftPercent")) {
+ put("leftPercent", options.getDouble("leftPercent"))
+ }
+ if (options.hasKey("align")) {
+ put("align", options.getInt("align"))
+ }
+ if (options.hasKey("color")) {
+ options.getString("color")?.let { put("color", it) }
+ }
+ if (options.hasKey("backgroundColor")) {
+ options.getString("backgroundColor")?.let { put("color", it) }
+ }
+ if (options.hasKey("widthPercent")) {
+ put("color", options.getDouble("widthPercent"))
+ }
+ if (options.hasKey("fontSize")) {
+ put("color", options.getDouble("fontSize"))
+ }
+ }
+
+ try {
+ lyricView?.showLyricWindow(initLyric, mapOptions)
+ promise.resolve(true)
+ } catch (e: Exception) {
+ promise.reject("Exception", e.message)
+ }
+ }
+ } catch (e: Exception) {
+ promise.reject("Exception", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun hideStatusBarLyric(promise: Promise) {
+ try {
+ UiThreadUtil.runOnUiThread {
+ lyricView?.hideLyricWindow()
+ }
+ promise.resolve(true)
+ } catch (e: Exception) {
+ promise.reject("Exception", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun setStatusBarLyricText(lyric: String, promise: Promise) {
+ try {
+ UiThreadUtil.runOnUiThread {
+ lyricView?.setText(lyric)
+ }
+ promise.resolve(true)
+ } catch (e: Exception) {
+ promise.reject("Exception", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun setStatusBarLyricAlign(alignment: Int, promise: Promise) {
+ try {
+ UiThreadUtil.runOnUiThread {
+ lyricView?.setAlign(alignment)
+ }
+ promise.resolve(true)
+ } catch (e: Exception) {
+ promise.reject("Exception", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun setStatusBarLyricTop(pct: Double, promise: Promise) {
+ try {
+ UiThreadUtil.runOnUiThread {
+ lyricView?.setTopPercent(pct)
+ }
+ promise.resolve(true)
+ } catch (e: Exception) {
+ promise.reject("Exception", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun setStatusBarLyricLeft(pct: Double, promise: Promise) {
+ try {
+ UiThreadUtil.runOnUiThread {
+ lyricView?.setLeftPercent(pct)
+ }
+ promise.resolve(true)
+ } catch (e: Exception) {
+ promise.reject("Exception", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun setStatusBarLyricWidth(pct: Double, promise: Promise) {
+ try {
+ UiThreadUtil.runOnUiThread {
+ lyricView?.setWidth(pct)
+ }
+ promise.resolve(true)
+ } catch (e: Exception) {
+ promise.reject("Exception", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun setStatusBarLyricFontSize(fontSize: Float, promise: Promise) {
+ try {
+ UiThreadUtil.runOnUiThread {
+ lyricView?.setFontSize(fontSize)
+ }
+ promise.resolve(true)
+ } catch (e: Exception) {
+ promise.reject("Exception", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun setStatusBarColors(textColor: String, backgroundColor: String, promise: Promise) {
+ try {
+ UiThreadUtil.runOnUiThread {
+ lyricView?.setColors(textColor, backgroundColor)
+ }
+ promise.resolve(true)
+ } catch (e: Exception) {
+ promise.reject("Exception", e.message)
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilPackage.java b/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilPackage.java
deleted file mode 100644
index 9a4fc742..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilPackage.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package fun.upup.musicfree.lyricUtil;
-
-import androidx.annotation.NonNull;
-
-import com.facebook.react.ReactPackage;
-import com.facebook.react.bridge.NativeModule;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.uimanager.ViewManager;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-public class LyricUtilPackage implements ReactPackage {
-
- @NonNull
- @Override
- public List createViewManagers(@NonNull ReactApplicationContext reactContext) {
- return Collections.emptyList();
- }
-
- @NonNull
- @Override
- public List createNativeModules(
- @NonNull ReactApplicationContext reactContext) {
- List modules = new ArrayList<>();
-
- modules.add(new LyricUtilModule(reactContext));
-
- return modules;
- }
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilPackage.kt b/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilPackage.kt
new file mode 100644
index 00000000..4d53ad85
--- /dev/null
+++ b/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricUtilPackage.kt
@@ -0,0 +1,19 @@
+package `fun`.upup.musicfree.lyricUtil
+
+import android.view.View
+import com.facebook.react.ReactPackage
+import com.facebook.react.bridge.NativeModule
+import com.facebook.react.bridge.ReactApplicationContext
+import com.facebook.react.uimanager.ReactShadowNode
+import com.facebook.react.uimanager.ViewManager
+
+class LyricUtilPackage : ReactPackage {
+
+ override fun createViewManagers(
+ reactContext: ReactApplicationContext
+ ): MutableList>> = mutableListOf()
+
+ override fun createNativeModules(
+ reactContext: ReactApplicationContext
+ ): MutableList = listOf(LyricUtilModule(reactContext)).toMutableList()
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricView.java b/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricView.java
deleted file mode 100644
index e6320ace..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricView.java
+++ /dev/null
@@ -1,283 +0,0 @@
-package fun.upup.musicfree.lyricUtil;
-
-import android.app.Activity;
-import android.content.res.Configuration;
-import android.graphics.Color;
-import android.graphics.PixelFormat;
-import android.graphics.drawable.ColorDrawable;
-import android.hardware.SensorManager;
-import android.os.Build;
-import android.util.DisplayMetrics;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.MotionEvent;
-import android.view.OrientationEventListener;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-
-import com.facebook.react.bridge.ReactContext;
-
-import java.util.Map;
-
-public class LyricView extends Activity implements View.OnTouchListener {
-
- private WindowManager windowManager = null;
-
- private OrientationEventListener orientationEventListener = null;
-
- private WindowManager.LayoutParams layoutParams = null;
-
- private TextView tv = null;
-
- private final ReactContext reactContext;
-
- LyricView(ReactContext _reactContext) {
- reactContext = _reactContext;
- }
-
- // 窗口信息
- private double windowWidth;
-
- private double windowHeight;
-
- private double widthPercent;
-
- private double leftPercent;
-
- private double topPercent = 0;
-
-
-
- @Override
- public boolean onTouch(View view, MotionEvent motionEvent) {
- Log.d("touch", "Desktop Touch");
- return false;
- }
-
- // 展示歌词窗口
- public void showLyricWindow(String initText, Map options) {
- try {
- if (windowManager == null) {
- windowManager = (WindowManager) reactContext.getSystemService(WINDOW_SERVICE);
- layoutParams = new WindowManager.LayoutParams();
-
- DisplayMetrics outMetrics = new DisplayMetrics();
- windowManager.getDefaultDisplay().getMetrics(outMetrics);
- this.windowWidth = outMetrics.widthPixels;
- this.windowHeight = outMetrics.heightPixels;
-
- layoutParams.type = Build.VERSION.SDK_INT < Build.VERSION_CODES.O ?
- WindowManager.LayoutParams.TYPE_SYSTEM_ALERT :
- WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
- /*
- * topPercent: number;
- * leftPercent: number;
- * align: number;
- * color: string;
- * backgroundColor: string;
- * widthPercent: number;
- * fontSize: number;
- */
- Object topPercent = options.get("topPercent");
- Object leftPercent = options.get("leftPercent");
- Object align = options.get("align");
- Object color = options.get("color");
- Object backgroundColor = options.get("backgroundColor");
- Object widthPercent = options.get("widthPercent");
- Object fontSize = options.get("fontSize");
-
- this.widthPercent = (widthPercent != null ? (double) widthPercent: 0.5);
-
- layoutParams.width = (int) (this.widthPercent * this.windowWidth);
- layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
- layoutParams.gravity = Gravity.TOP | Gravity.START;
-// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
-// layoutParams.setFitInsetsTypes(0);
-// }
- this.leftPercent = (double) (leftPercent != null ? leftPercent : 0.5);
- layoutParams.x = (int) (this.leftPercent * (this.windowWidth - layoutParams.width));
- layoutParams.y = 0;
-
-
- layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
- | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE; // 最后一个控制不可点击
- layoutParams.format = PixelFormat.TRANSPARENT;
-
- tv = new TextView(reactContext);
- if (initText != null) {
- tv.setText(initText);
- }
- tv.setTextSize(fontSize != null ? ((Double) fontSize).floatValue() : 14);
- tv.setBackgroundColor(Color.parseColor(rgba2argb(backgroundColor != null ? (String) backgroundColor: "#84888153")));
- tv.setTextColor(Color.parseColor(rgba2argb(color != null ? (String) color: "#FFE9D2")));
- tv.setPadding(12, 6, 12, 6);
- tv.setGravity(align != null ? (int) align: Gravity.CENTER);
- windowManager.addView(tv, layoutParams);
-
- if (topPercent != null) {
- setTopPercent((double) topPercent);
- }
- listenOrientationChange();
-
-
-
- }
- } catch(Exception e) {
- hideLyricWindow();
- throw e;
- }
- }
-
- private void listenOrientationChange() {
- if(windowManager == null) {
- return;
- }
- if (orientationEventListener == null) {
- orientationEventListener = new OrientationEventListener(reactContext, SensorManager.SENSOR_DELAY_NORMAL) {
- @Override
- public void onOrientationChanged(int i) {
- if(windowManager != null) {
- DisplayMetrics outMetrics = new DisplayMetrics();
- windowManager.getDefaultDisplay().getMetrics(outMetrics);
- windowWidth = outMetrics.widthPixels;
- windowHeight = outMetrics.heightPixels;
- layoutParams.width = (int) (widthPercent * windowWidth);
- layoutParams.x = (int) (leftPercent * (windowWidth - layoutParams.width));
- layoutParams.y = (int) (topPercent * (windowHeight - tv.getHeight()));
- windowManager.updateViewLayout(tv, layoutParams);
- }
- }
- };
- }
-
- if(orientationEventListener.canDetectOrientation()) {
- orientationEventListener.enable();
- }
- }
-
- private void unlistenOrientationChange() {
- if(orientationEventListener != null) {
- orientationEventListener.disable();
- }
- }
-
-
- String rgba2argb(String color) {
- if (color.length() == 9) {
- return color.charAt(0) + color.substring(7, 9) + color.substring(1, 7);
- } else {
- return color;
- }
- }
-
-
- // 隐藏歌词窗口
- public void hideLyricWindow() {
- if (windowManager != null) {
- if (tv != null) {
- try {
- windowManager.removeView(tv);
- } catch (Exception e) {
-
- }
- tv = null;
- }
- windowManager = null;
- layoutParams = null;
- unlistenOrientationChange();
- }
- }
-
- // 设置歌词内容
- public void setText(String text) {
- if (tv != null) {
- tv.setText(text);
- }
- }
-
-
- public void setAlign(int gravity) {
- if (tv != null) {
-// tv.setTextAlignment(alignment);
- tv.setGravity(gravity);
- }
- }
-
- public void setTopPercent(double pct) {
- if (pct < 0) {
- pct = 0;
- }
- if (pct > 1) {
- pct = 1;
- }
- if (tv != null) {
- layoutParams.y = (int) (pct * (windowHeight - tv.getHeight()));
- windowManager.updateViewLayout(tv, layoutParams);
- }
- this.topPercent = pct;
- }
-
- public void setLeftPercent(double pct) {
- if (pct < 0) {
- pct = 0;
- }
- if (pct > 1) {
- pct = 1;
- }
- if(tv != null) {
- layoutParams.x = (int) (pct * (windowWidth - layoutParams.width));
- windowManager.updateViewLayout(tv, layoutParams);
- }
- this.leftPercent = pct;
- }
-
- public void setColors(String textColor, String backgroundColor) {
- if(tv != null) {
- if(textColor != null) {
- tv.setTextColor(Color.parseColor(rgba2argb(textColor)));
- }
- if (backgroundColor != null) {
- ColorDrawable background = new ColorDrawable(Color.parseColor(rgba2argb(backgroundColor)));
- tv.setBackground(background);
- }
- }
- }
-
- public void setWidth(double pct) {
- if (pct < 0.3) {
- pct = 0.3;
- }
- if (pct > 1) {
- pct = 1;
- }
- if(tv != null) {
- int width = (int) (pct * this.windowWidth);
- int originalWidth = layoutParams.width;
- if(width <= originalWidth) {
- layoutParams.x += ((originalWidth - width) / 2);
- } else {
- layoutParams.x -= ((width - originalWidth) / 2);
- if (layoutParams.x < 0) {
- layoutParams.x = 0;
- } else if(layoutParams.x + width > windowWidth) {
- layoutParams.x = (int) (windowWidth - width);
- }
- }
- layoutParams.width = width;
- windowManager.updateViewLayout(tv, layoutParams);
- }
- this.widthPercent = pct;
- }
-
- public void setFontSize(float fontSize) {
- if (tv != null) {
- tv.setTextSize(fontSize);
- }
- }
-
-
-
-}
diff --git a/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricView.kt b/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricView.kt
new file mode 100644
index 00000000..a03f6486
--- /dev/null
+++ b/android/app/src/main/java/fun/upup/musicfree/lyricUtil/LyricView.kt
@@ -0,0 +1,222 @@
+package `fun`.upup.musicfree.lyricUtil
+
+import android.app.Activity
+import android.content.Context
+import android.graphics.Color
+import android.graphics.PixelFormat
+import android.graphics.drawable.ColorDrawable
+import android.hardware.SensorManager
+import android.os.Build
+import android.util.DisplayMetrics
+import android.util.Log
+import android.view.Gravity
+import android.view.MotionEvent
+import android.view.OrientationEventListener
+import android.view.View
+import android.view.WindowManager
+import android.widget.TextView
+import com.facebook.react.bridge.ReactContext
+
+
+
+class LyricView(private val reactContext: ReactContext) : Activity(), View.OnTouchListener {
+
+ private var windowManager: WindowManager? = null
+ private var orientationEventListener: OrientationEventListener? = null
+ private var layoutParams: WindowManager.LayoutParams? = null
+ private var tv: TextView? = null
+
+ // 窗口信息
+ private var windowWidth = 0.0
+ private var windowHeight = 0.0
+ private var widthPercent = 0.0
+ private var leftPercent = 0.0
+ private var topPercent = 0.0
+
+ override fun onTouch(view: View, motionEvent: MotionEvent): Boolean {
+ Log.d("touch", "Desktop Touch")
+ return false
+ }
+
+ // 展示歌词窗口
+ fun showLyricWindow(initText: String?, options: Map) {
+ try {
+ if (windowManager == null) {
+ windowManager = reactContext.getSystemService(WINDOW_SERVICE) as WindowManager
+ layoutParams = WindowManager.LayoutParams()
+
+ val outMetrics = DisplayMetrics()
+ windowManager?.defaultDisplay?.getMetrics(outMetrics)
+ windowWidth = outMetrics.widthPixels.toDouble()
+ windowHeight = outMetrics.heightPixels.toDouble()
+
+ layoutParams?.type = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O)
+ WindowManager.LayoutParams.TYPE_SYSTEM_ALERT
+ else
+ WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
+
+ /*
+ * topPercent: number;
+ * leftPercent: number;
+ * align: number;
+ * color: string;
+ * backgroundColor: string;
+ * widthPercent: number;
+ * fontSize: number;
+ */
+ val topPercent = options["topPercent"]
+ val leftPercent = options["leftPercent"]
+ val align = options["align"]
+ val color = options["color"]
+ val backgroundColor = options["backgroundColor"]
+ val widthPercent = options["widthPercent"]
+ val fontSize = options["fontSize"]
+
+ this.widthPercent = widthPercent?.toString()?.toDouble() ?: 0.5
+
+ layoutParams?.width = (this.widthPercent * windowWidth).toInt()
+ layoutParams?.height = WindowManager.LayoutParams.WRAP_CONTENT
+ layoutParams?.gravity = Gravity.TOP or Gravity.START
+
+ this.leftPercent = leftPercent?.toString()?.toDouble() ?: 0.5
+ layoutParams?.x = (this.leftPercent * (windowWidth - layoutParams!!.width)).toInt()
+ layoutParams?.y = 0
+
+ layoutParams?.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or
+ WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL or
+ WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN or
+ WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS or
+ WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
+
+ layoutParams?.format = PixelFormat.TRANSPARENT
+
+ tv = TextView(reactContext).apply {
+ text = initText ?: ""
+ textSize = fontSize?.toString()?.toFloat() ?: 14f
+ setBackgroundColor(Color.parseColor(rgba2argb(backgroundColor?.toString() ?: "#84888153")))
+ setTextColor(Color.parseColor(rgba2argb(color?.toString() ?: "#FFE9D2")))
+ setPadding(12, 6, 12, 6)
+ gravity = align?.toString()?.toInt() ?: Gravity.CENTER
+ }
+ windowManager?.addView(tv, layoutParams)
+
+ topPercent?.toString()?.toDouble()?.let { setTopPercent(it) }
+
+ listenOrientationChange()
+ }
+ } catch (e: Exception) {
+ hideLyricWindow()
+ throw e
+ }
+ }
+
+ private fun listenOrientationChange() {
+ if (windowManager == null) return
+
+ if (orientationEventListener == null) {
+ orientationEventListener = object : OrientationEventListener(reactContext, SensorManager.SENSOR_DELAY_NORMAL) {
+ override fun onOrientationChanged(orientation: Int) {
+ if (windowManager != null) {
+ val outMetrics = DisplayMetrics()
+ windowManager?.defaultDisplay?.getMetrics(outMetrics)
+ windowWidth = outMetrics.widthPixels.toDouble()
+ windowHeight = outMetrics.heightPixels.toDouble()
+ layoutParams?.width = (widthPercent * windowWidth).toInt()
+ layoutParams?.x = (leftPercent * (windowWidth - layoutParams!!.width)).toInt()
+ layoutParams?.y = (topPercent * (windowHeight - tv!!.height)).toInt()
+ windowManager?.updateViewLayout(tv, layoutParams)
+ }
+ }
+ }
+ }
+
+ if (orientationEventListener?.canDetectOrientation() == true) {
+ orientationEventListener?.enable()
+ }
+ }
+
+ private fun unlistenOrientationChange() {
+ orientationEventListener?.disable()
+ }
+
+ private fun rgba2argb(color: String): String {
+ return if (color.length == 9) {
+ color[0] + color.substring(7, 9) + color.substring(1, 7)
+ } else {
+ color
+ }
+ }
+
+ // 隐藏歌词窗口
+ fun hideLyricWindow() {
+ if (windowManager != null) {
+ tv?.let {
+ try {
+ windowManager?.removeView(it)
+ } catch (e: Exception) {
+ // Handle exception
+ }
+ tv = null
+ }
+ windowManager = null
+ layoutParams = null
+ unlistenOrientationChange()
+ }
+ }
+
+ // 设置歌词内容
+ fun setText(text: String) {
+ tv?.text = text
+ }
+
+ fun setAlign(gravity: Int) {
+ tv?.gravity = gravity
+ }
+
+ fun setTopPercent(pct: Double) {
+ var percent = pct.coerceIn(0.0, 1.0)
+ tv?.let {
+ layoutParams?.y = (percent * (windowHeight - it.height)).toInt()
+ windowManager?.updateViewLayout(it, layoutParams)
+ }
+ this.topPercent = percent
+ }
+
+ fun setLeftPercent(pct: Double) {
+ var percent = pct.coerceIn(0.0, 1.0)
+ tv?.let {
+ layoutParams?.x = (percent * (windowWidth - layoutParams!!.width)).toInt()
+ windowManager?.updateViewLayout(it, layoutParams)
+ }
+ this.leftPercent = percent
+ }
+
+ fun setColors(textColor: String?, backgroundColor: String?) {
+ tv?.let {
+ textColor?.let { color -> it.setTextColor(Color.parseColor(rgba2argb(color))) }
+ backgroundColor?.let { color ->
+ it.background = ColorDrawable(Color.parseColor(rgba2argb(color)))
+ }
+ }
+ }
+
+ fun setWidth(pct: Double) {
+ var percent = pct.coerceIn(0.3, 1.0)
+ tv?.let {
+ val width = (percent * windowWidth).toInt()
+ val originalWidth = layoutParams?.width ?: 0
+ layoutParams?.x = if (width <= originalWidth) {
+ layoutParams!!.x + (originalWidth - width) / 2
+ } else {
+ layoutParams!!.x - (width - originalWidth) / 2
+ }.coerceAtLeast(0).coerceAtMost((windowWidth - width).toInt())
+ layoutParams?.width = width
+ windowManager?.updateViewLayout(it, layoutParams)
+ }
+ this.widthPercent = percent
+ }
+
+ fun setFontSize(fontSize: Float) {
+ tv?.textSize = fontSize
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilModule.java b/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilModule.java
deleted file mode 100644
index 0c697780..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilModule.java
+++ /dev/null
@@ -1,249 +0,0 @@
-package fun.upup.musicfree.mp3Util;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.media.MediaMetadataRetriever;
-import android.net.Uri;
-import android.util.Log;
-
-import androidx.annotation.NonNull;
-
-import com.facebook.react.bridge.Arguments;
-import com.facebook.react.bridge.Promise;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.bridge.ReactContext;
-import com.facebook.react.bridge.ReactContextBaseJavaModule;
-import com.facebook.react.bridge.ReactMethod;
-import com.facebook.react.bridge.ReadableArray;
-import com.facebook.react.bridge.ReadableMap;
-import com.facebook.react.bridge.WritableArray;
-import com.facebook.react.bridge.WritableMap;
-
-import org.jaudiotagger.audio.AudioFile;
-import org.jaudiotagger.audio.AudioFileIO;
-import org.jaudiotagger.tag.FieldKey;
-import org.jaudiotagger.tag.Tag;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-
-public class Mp3UtilModule extends ReactContextBaseJavaModule {
- private static ReactApplicationContext reactContext;
-
- public Mp3UtilModule(ReactApplicationContext context) {
- super(context);
- reactContext = context;
- }
-
- @NonNull
- @Override
- public String getName() {
- return "Mp3Util";
- }
-
- private boolean isContentUri(Uri uri) {
- if (uri != null) {
- String scheme = uri.getScheme();
- return scheme != null && scheme.equalsIgnoreCase("content");
- }
- return false;
- }
-
- @ReactMethod
- public void getBasicMeta(String filePath, Promise promise) {
- try {
- Uri uri = Uri.parse(filePath);
- MediaMetadataRetriever mmr = new MediaMetadataRetriever();
- if (isContentUri(uri)) {
- mmr.setDataSource(getReactApplicationContext(), uri);
- } else {
- mmr.setDataSource(filePath);
- }
- // b站源部分直接转格式的mp3文件好像有问题 0x08000
- WritableMap properties = Arguments.createMap();
- properties.putString("duration", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
- properties.putString("bitrate", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE));
- properties.putString("artist", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST));
- properties.putString("author", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_AUTHOR));
- properties.putString("album", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM));
- properties.putString("title", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE));
- properties.putString("date", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE));
- properties.putString("year", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR));
- promise.resolve(properties);
- } catch (Exception e) {
- promise.reject("Exception", e.getMessage());
- }
-
- }
-
- @ReactMethod
- public void getMediaMeta(ReadableArray filePaths, Promise promise) {
- WritableArray metas = Arguments.createArray();
- MediaMetadataRetriever mmr = new MediaMetadataRetriever();
- for (int i = 0; i < filePaths.size(); ++i) {
- try {
- String filePath = filePaths.getString(i);
- Uri uri = Uri.parse(filePath);
-
- if (isContentUri(uri)) {
- mmr.setDataSource(getReactApplicationContext(), uri);
- } else {
- mmr.setDataSource(filePath);
- }
- // b站源部分直接转格式的mp3文件好像有问题 0x08000
-
- WritableMap properties = Arguments.createMap();
- properties.putString("duration", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION));
- properties.putString("bitrate", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE));
- properties.putString("artist", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST));
- properties.putString("author", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_AUTHOR));
- properties.putString("album", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM));
- properties.putString("title", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE));
- properties.putString("date", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE));
- properties.putString("year", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR));
- metas.pushMap(properties);
-
- } catch (Exception e) {
- metas.pushNull();
- }
- }
- try {
- mmr.release();
- } catch (Exception ignored) {
- }
- promise.resolve(metas);
-
- }
-
-
- // 读取内置的封面图,直接返回临时文件路径
- @ReactMethod
- public void getMediaCoverImg(String filePath, Promise promise) {
- int pathHashCode;
- try {
- File file = new File(filePath);
- if (!file.exists()) {
- promise.reject("File not exist", "File not exist");
- return;
- }
- // 路径的hashcode就够了
- pathHashCode = file.hashCode();
- if (pathHashCode == 0) {
- promise.resolve(null);
- return;
- }
- // 判断缓存是否存在,如果存在直接返回
- File cacheDir = reactContext.getCacheDir();
- File coverFile = new File(cacheDir, "image_manager_disk_cache/" + pathHashCode + ".jpg");
- if (coverFile.exists()) {
- promise.resolve(coverFile.toURI().toString());
- return;
- }
- MediaMetadataRetriever mmr = new MediaMetadataRetriever();
- mmr.setDataSource(filePath);
- byte[] coverImg = mmr.getEmbeddedPicture();
- if (coverImg != null) {
- Bitmap bitmap = BitmapFactory.decodeByteArray(coverImg, 0, coverImg.length);
- // 存储到本地路径
- FileOutputStream outputStream = new FileOutputStream(coverFile);
- bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
- outputStream.flush();
- outputStream.close();
- promise.resolve(coverFile.toURI().toString());
- } else {
-
- promise.resolve(null);
- }
- mmr.release();
- } catch (Exception ignored) {
- promise.reject("Error", "Got error");
- }
-
- }
-
-
- // 读取歌词
- @ReactMethod
- public void getLyric(String filePath, Promise promise) {
- try {
- File file = new File(filePath);
- if (file.exists()) {
- AudioFile audioFile = AudioFileIO.read(file);
- Tag tag = audioFile.getTag();
- String lrc = tag.getFirst(FieldKey.LYRICS);
- promise.resolve(lrc);
- } else {
- throw new IOException("File not found");
- }
-
- } catch (Exception e) {
- promise.reject("Error", e.getMessage());
- }
- }
-
- @ReactMethod
- public void setMediaTag(String filePath, ReadableMap meta, Promise promise) {
- try {
- File file = new File(filePath);
- if (file.exists()) {
- AudioFile audioFile = AudioFileIO.read(file);
- Tag tag = audioFile.getTag();
- String title = meta.getString("title");
- String artist = meta.getString("artist");
- String album = meta.getString("album");
- String lyric = meta.getString("lyric");
- String comment = meta.getString("comment");
- if (title != null) {
- tag.setField(FieldKey.TITLE, title);
- }
- if (artist != null) {
- tag.setField(FieldKey.ARTIST, artist);
- }
- if (album != null) {
- tag.setField(FieldKey.ALBUM, album);
- }
- if(lyric != null) {
- tag.setField(FieldKey.LYRICS, lyric);
- }
-
- tag.setField(FieldKey.COMMENT, comment);
- audioFile.commit();
- } else {
- promise.reject("Error", "File Not Exist");
- }
- promise.resolve(true);
- } catch (Exception e) {
- promise.reject("Error", e.getMessage());
- }
- }
-
- @ReactMethod
- public void getMediaTag(String filePath, Promise promise) {
- try {
- File file = new File(filePath);
- if (file.exists()) {
- AudioFile audioFile = AudioFileIO.read(file);
- Tag tag = audioFile.getTag();
- String title = tag.getFirst(FieldKey.TITLE);
- String artist = tag.getFirst(FieldKey.ARTIST);
- String album = tag.getFirst(FieldKey.ALBUM);
- String lyric = tag.getFirst(FieldKey.LYRICS);
- String comment = tag.getFirst(FieldKey.COMMENT);
-
- WritableMap properties = Arguments.createMap();
- properties.putString("title", title);
- properties.putString("artist", artist);
- properties.putString("album", album);
- properties.putString("lyric", lyric);
- properties.putString("comment", comment);
- promise.resolve(properties);
- } else{
- promise.reject("Error", "File Not Found");
- }
- } catch (Exception e) {
- promise.reject("Error", e.getMessage());
- }
- }
-}
diff --git a/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilModule.kt b/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilModule.kt
new file mode 100644
index 00000000..e5d7366e
--- /dev/null
+++ b/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilModule.kt
@@ -0,0 +1,190 @@
+package `fun`.upup.musicfree.mp3Util
+
+import android.graphics.Bitmap
+import android.graphics.BitmapFactory
+import android.media.MediaMetadataRetriever
+import android.net.Uri
+import com.facebook.react.bridge.*
+import org.jaudiotagger.audio.AudioFileIO
+import org.jaudiotagger.tag.FieldKey
+import java.io.File
+import java.io.FileOutputStream
+import java.io.IOException
+
+class Mp3UtilModule(private val reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) {
+
+ override fun getName() = "Mp3Util"
+
+ private fun isContentUri(uri: Uri?): Boolean {
+ return uri?.scheme?.equals("content", ignoreCase = true) == true
+ }
+
+ @ReactMethod
+ fun getBasicMeta(filePath: String, promise: Promise) {
+ try {
+ val uri = Uri.parse(filePath)
+ val mmr = MediaMetadataRetriever()
+ if (isContentUri(uri)) {
+ mmr.setDataSource(reactApplicationContext, uri)
+ } else {
+ mmr.setDataSource(filePath)
+ }
+
+ val properties = Arguments.createMap().apply {
+ putString("duration", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION))
+ putString("bitrate", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE))
+ putString("artist", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST))
+ putString("author", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_AUTHOR))
+ putString("album", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM))
+ putString("title", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE))
+ putString("date", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE))
+ putString("year", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR))
+ }
+ promise.resolve(properties)
+ } catch (e: Exception) {
+ promise.reject("Exception", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun getMediaMeta(filePaths: ReadableArray, promise: Promise) {
+ val metas = Arguments.createArray()
+ val mmr = MediaMetadataRetriever()
+ for (i in 0 until filePaths.size()) {
+ try {
+ val filePath = filePaths.getString(i)
+ val uri = Uri.parse(filePath)
+
+ if (isContentUri(uri)) {
+ mmr.setDataSource(reactApplicationContext, uri)
+ } else {
+ mmr.setDataSource(filePath)
+ }
+
+ val properties = Arguments.createMap().apply {
+ putString("duration", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION))
+ putString("bitrate", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE))
+ putString("artist", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST))
+ putString("author", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_AUTHOR))
+ putString("album", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM))
+ putString("title", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE))
+ putString("date", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE))
+ putString("year", mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR))
+ }
+ metas.pushMap(properties)
+ } catch (e: Exception) {
+ metas.pushNull()
+ }
+ }
+ try {
+ mmr.release()
+ } catch (ignored: Exception) {
+ }
+ promise.resolve(metas)
+ }
+
+
+ @ReactMethod
+ fun getMediaCoverImg(filePath: String, promise: Promise) {
+ try {
+ val file = File(filePath)
+ if (!file.exists()) {
+ promise.reject("File not exist", "File not exist")
+ return
+ }
+
+ val pathHashCode = file.hashCode()
+ if (pathHashCode == 0) {
+ promise.resolve(null)
+ return
+ }
+
+ val cacheDir = reactContext.cacheDir
+ val coverFile = File(cacheDir, "image_manager_disk_cache/$pathHashCode.jpg")
+ if (coverFile.exists()) {
+ promise.resolve(coverFile.toURI().toString())
+ return
+ }
+
+ val mmr = MediaMetadataRetriever()
+ mmr.setDataSource(filePath)
+ val coverImg = mmr.embeddedPicture
+ if (coverImg != null) {
+ val bitmap = BitmapFactory.decodeByteArray(coverImg, 0, coverImg.size)
+ FileOutputStream(coverFile).use { outputStream ->
+ bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream)
+ outputStream.flush()
+ }
+ promise.resolve(coverFile.toURI().toString())
+ } else {
+ promise.resolve(null)
+ }
+ mmr.release()
+ } catch (ignored: Exception) {
+ promise.reject("Error", "Got error")
+ }
+ }
+
+ @ReactMethod
+ fun getLyric(filePath: String, promise: Promise) {
+ try {
+ val file = File(filePath)
+ if (file.exists()) {
+ val audioFile = AudioFileIO.read(file)
+ val tag = audioFile.tag
+ val lrc = tag.getFirst(FieldKey.LYRICS)
+ promise.resolve(lrc)
+ } else {
+ throw IOException("File not found")
+ }
+ } catch (e: Exception) {
+ promise.reject("Error", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun setMediaTag(filePath: String, meta: ReadableMap, promise: Promise) {
+ try {
+ val file = File(filePath)
+ if (file.exists()) {
+ val audioFile = AudioFileIO.read(file)
+ val tag = audioFile.tag
+ meta.getString("title")?.let { tag.setField(FieldKey.TITLE, it) }
+ meta.getString("artist")?.let { tag.setField(FieldKey.ARTIST, it) }
+ meta.getString("album")?.let { tag.setField(FieldKey.ALBUM, it) }
+ meta.getString("lyric")?.let { tag.setField(FieldKey.LYRICS, it) }
+ meta.getString("comment")?.let { tag.setField(FieldKey.COMMENT, it) }
+ audioFile.commit()
+ promise.resolve(true)
+ } else {
+ promise.reject("Error", "File Not Exist")
+ }
+ } catch (e: Exception) {
+ promise.reject("Error", e.message)
+ }
+ }
+
+ @ReactMethod
+ fun getMediaTag(filePath: String, promise: Promise) {
+ try {
+ val file = File(filePath)
+ if (file.exists()) {
+ val audioFile = AudioFileIO.read(file)
+ val tag = audioFile.tag
+
+ val properties = Arguments.createMap().apply {
+ putString("title", tag.getFirst(FieldKey.TITLE))
+ putString("artist", tag.getFirst(FieldKey.ARTIST))
+ putString("album", tag.getFirst(FieldKey.ALBUM))
+ putString("lyric", tag.getFirst(FieldKey.LYRICS))
+ putString("comment", tag.getFirst(FieldKey.COMMENT))
+ }
+ promise.resolve(properties)
+ } else {
+ promise.reject("Error", "File Not Found")
+ }
+ } catch (e: Exception) {
+ promise.reject("Error", e.message)
+ }
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilPackage.java b/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilPackage.java
deleted file mode 100644
index a9a5a52d..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilPackage.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package fun.upup.musicfree.mp3Util;
-
-import com.facebook.react.ReactPackage;
-import com.facebook.react.bridge.NativeModule;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.uimanager.ViewManager;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-public class Mp3UtilPackage implements ReactPackage {
-
- @Override
- public List createViewManagers(ReactApplicationContext reactContext) {
- return Collections.emptyList();
- }
-
- @Override
- public List createNativeModules(
- ReactApplicationContext reactContext) {
- List modules = new ArrayList<>();
-
- modules.add(new Mp3UtilModule(reactContext));
-
- return modules;
- }
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilPackage.kt b/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilPackage.kt
new file mode 100644
index 00000000..25de0fa5
--- /dev/null
+++ b/android/app/src/main/java/fun/upup/musicfree/mp3Util/Mp3UtilPackage.kt
@@ -0,0 +1,19 @@
+package `fun`.upup.musicfree.mp3Util
+
+import android.view.View
+import com.facebook.react.ReactPackage
+import com.facebook.react.bridge.NativeModule
+import com.facebook.react.bridge.ReactApplicationContext
+import com.facebook.react.uimanager.ReactShadowNode
+import com.facebook.react.uimanager.ViewManager
+
+class Mp3UtilPackage : ReactPackage {
+
+ override fun createViewManagers(
+ reactContext: ReactApplicationContext
+ ): MutableList>> = mutableListOf()
+
+ override fun createNativeModules(
+ reactContext: ReactApplicationContext
+ ): MutableList = listOf(Mp3UtilModule(reactContext)).toMutableList()
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/newarchitecture/MainApplicationReactNativeHost.java b/android/app/src/main/java/fun/upup/musicfree/newarchitecture/MainApplicationReactNativeHost.java
deleted file mode 100644
index 32223c94..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/newarchitecture/MainApplicationReactNativeHost.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package fun.upup.musicfree.newarchitecture;
-
-import android.app.Application;
-import androidx.annotation.NonNull;
-import com.facebook.react.PackageList;
-import com.facebook.react.ReactInstanceManager;
-import com.facebook.react.ReactNativeHost;
-import com.facebook.react.ReactPackage;
-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
-import com.facebook.react.bridge.JSIModulePackage;
-import com.facebook.react.bridge.JSIModuleProvider;
-import com.facebook.react.bridge.JSIModuleSpec;
-import com.facebook.react.bridge.JSIModuleType;
-import com.facebook.react.bridge.JavaScriptContextHolder;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.bridge.UIManager;
-import com.facebook.react.fabric.ComponentFactory;
-import com.facebook.react.fabric.CoreComponentsRegistry;
-import com.facebook.react.fabric.FabricJSIModuleProvider;
-import com.facebook.react.fabric.ReactNativeConfig;
-import com.facebook.react.uimanager.ViewManagerRegistry;
-import fun.upup.musicfree.BuildConfig;
-import fun.upup.musicfree.newarchitecture.components.MainComponentsRegistry;
-import fun.upup.musicfree.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both
- * TurboModule delegates and the Fabric Renderer.
- *
- * Please note that this class is used ONLY if you opt-in for the New Architecture (see the
- * `newArchEnabled` property). Is ignored otherwise.
- */
-public class MainApplicationReactNativeHost extends ReactNativeHost {
- public MainApplicationReactNativeHost(Application application) {
- super(application);
- }
-
- @Override
- public boolean getUseDeveloperSupport() {
- return BuildConfig.DEBUG;
- }
-
- @Override
- protected List getPackages() {
- List packages = new PackageList(this).getPackages();
- // Packages that cannot be autolinked yet can be added manually here, for example:
- // packages.add(new MyReactNativePackage());
- // TurboModules must also be loaded here providing a valid TurboReactPackage implementation:
- // packages.add(new TurboReactPackage() { ... });
- // If you have custom Fabric Components, their ViewManagers should also be loaded here
- // inside a ReactPackage.
- return packages;
- }
-
- @Override
- protected String getJSMainModuleName() {
- return "index";
- }
-
- @NonNull
- @Override
- protected ReactPackageTurboModuleManagerDelegate.Builder
- getReactPackageTurboModuleManagerDelegateBuilder() {
- // Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary
- // for the new architecture and to use TurboModules correctly.
- return new MainApplicationTurboModuleManagerDelegate.Builder();
- }
-
- @Override
- protected JSIModulePackage getJSIModulePackage() {
- return new JSIModulePackage() {
- @Override
- public List getJSIModules(
- final ReactApplicationContext reactApplicationContext,
- final JavaScriptContextHolder jsContext) {
- final List specs = new ArrayList<>();
-
- // Here we provide a new JSIModuleSpec that will be responsible of providing the
- // custom Fabric Components.
- specs.add(
- new JSIModuleSpec() {
- @Override
- public JSIModuleType getJSIModuleType() {
- return JSIModuleType.UIManager;
- }
-
- @Override
- public JSIModuleProvider getJSIModuleProvider() {
- final ComponentFactory componentFactory = new ComponentFactory();
- CoreComponentsRegistry.register(componentFactory);
-
- // Here we register a Components Registry.
- // The one that is generated with the template contains no components
- // and just provides you the one from React Native core.
- MainComponentsRegistry.register(componentFactory);
-
- final ReactInstanceManager reactInstanceManager = getReactInstanceManager();
-
- ViewManagerRegistry viewManagerRegistry =
- new ViewManagerRegistry(
- reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));
-
- return new FabricJSIModuleProvider(
- reactApplicationContext,
- componentFactory,
- ReactNativeConfig.DEFAULT_CONFIG,
- viewManagerRegistry);
- }
- });
- return specs;
- }
- };
- }
-}
diff --git a/android/app/src/main/java/fun/upup/musicfree/newarchitecture/components/MainComponentsRegistry.java b/android/app/src/main/java/fun/upup/musicfree/newarchitecture/components/MainComponentsRegistry.java
deleted file mode 100644
index d059cc41..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/newarchitecture/components/MainComponentsRegistry.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package fun.upup.musicfree.newarchitecture.components;
-
-import com.facebook.jni.HybridData;
-import com.facebook.proguard.annotations.DoNotStrip;
-import com.facebook.react.fabric.ComponentFactory;
-import com.facebook.soloader.SoLoader;
-
-/**
- * Class responsible to load the custom Fabric Components. This class has native methods and needs a
- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/
- * folder for you).
- *
- * Please note that this class is used ONLY if you opt-in for the New Architecture (see the
- * `newArchEnabled` property). Is ignored otherwise.
- */
-@DoNotStrip
-public class MainComponentsRegistry {
- static {
- SoLoader.loadLibrary("fabricjni");
- }
-
- @DoNotStrip private final HybridData mHybridData;
-
- @DoNotStrip
- private native HybridData initHybrid(ComponentFactory componentFactory);
-
- @DoNotStrip
- private MainComponentsRegistry(ComponentFactory componentFactory) {
- mHybridData = initHybrid(componentFactory);
- }
-
- @DoNotStrip
- public static MainComponentsRegistry register(ComponentFactory componentFactory) {
- return new MainComponentsRegistry(componentFactory);
- }
-}
diff --git a/android/app/src/main/java/fun/upup/musicfree/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/android/app/src/main/java/fun/upup/musicfree/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java
deleted file mode 100644
index 574c0944..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package fun.upup.musicfree.newarchitecture.modules;
-
-import com.facebook.jni.HybridData;
-import com.facebook.react.ReactPackage;
-import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.soloader.SoLoader;
-import java.util.List;
-
-/**
- * Class responsible to load the TurboModules. This class has native methods and needs a
- * corresponding C++ implementation/header file to work correctly (already placed inside the jni/
- * folder for you).
- *
- *
Please note that this class is used ONLY if you opt-in for the New Architecture (see the
- * `newArchEnabled` property). Is ignored otherwise.
- */
-public class MainApplicationTurboModuleManagerDelegate
- extends ReactPackageTurboModuleManagerDelegate {
-
- private static volatile boolean sIsSoLibraryLoaded;
-
- protected MainApplicationTurboModuleManagerDelegate(
- ReactApplicationContext reactApplicationContext, List packages) {
- super(reactApplicationContext, packages);
- }
-
- protected native HybridData initHybrid();
-
- native boolean canCreateTurboModule(String moduleName);
-
- public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {
- protected MainApplicationTurboModuleManagerDelegate build(
- ReactApplicationContext context, List packages) {
- return new MainApplicationTurboModuleManagerDelegate(context, packages);
- }
- }
-
- @Override
- protected synchronized void maybeLoadOtherSoLibraries() {
- if (!sIsSoLibraryLoaded) {
- // If you change the name of your application .so file in the Android.mk file,
- // make sure you update the name here as well.
- SoLoader.loadLibrary("musicfree_appmodules");
- sIsSoLibraryLoaded = true;
- }
- }
-}
diff --git a/android/app/src/main/java/fun/upup/musicfree/utils/UtilsModule.java b/android/app/src/main/java/fun/upup/musicfree/utils/UtilsModule.java
deleted file mode 100644
index a6c464a1..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/utils/UtilsModule.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package fun.upup.musicfree.utils;
-
-import android.Manifest;
-import android.app.Activity;
-import android.app.ActivityManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Environment;
-import android.provider.Settings;
-
-import androidx.annotation.NonNull;
-import androidx.core.app.ActivityCompat;
-import androidx.core.content.ContextCompat;
-
-import com.facebook.react.bridge.Promise;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.bridge.ReactContextBaseJavaModule;
-import com.facebook.react.bridge.ReactMethod;
-
-import java.util.List;
-
-
-public class UtilsModule extends ReactContextBaseJavaModule {
- private static ReactApplicationContext reactContext;
-
-
- public UtilsModule(ReactApplicationContext context) {
- super(context);
- reactContext = context;
- }
-
- @NonNull
- @Override
- public String getName() {
- return "NativeUtils";
- }
-
-
- @ReactMethod
- public void exitApp() {
- Activity activity = reactContext.getCurrentActivity();
- if (activity != null) {
- activity.finishAndRemoveTask();
- }
- android.os.Process.killProcess(android.os.Process.myPid());
- System.exit(0);
- }
-
-
- @ReactMethod
- public void checkStoragePermission(Promise promise){
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
- if (Environment.isExternalStorageManager()) {
- promise.resolve(true);
- } else {
- promise.resolve(false);
- }
- } else {
- if (ContextCompat.checkSelfPermission(reactContext, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(reactContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
- promise.resolve(true);
- } else {
- promise.resolve(false);
- }
- }
- promise.resolve(false);
- }
-
- @ReactMethod
- public void requestStoragePermission() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
- Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
- intent.setData(Uri.parse("package:" + reactContext.getPackageName()));
- Activity currentActivity = getCurrentActivity();
- if (currentActivity != null) {
- currentActivity.startActivity(intent);
- }
- } else {
- Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
- intent.setData(Uri.parse("package:" + reactContext.getPackageName()));
- Activity currentActivity = getCurrentActivity();
- if (currentActivity != null) {
- currentActivity.startActivity(intent);
- }
- }
- }
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/utils/UtilsModule.kt b/android/app/src/main/java/fun/upup/musicfree/utils/UtilsModule.kt
new file mode 100644
index 00000000..b7a73fcc
--- /dev/null
+++ b/android/app/src/main/java/fun/upup/musicfree/utils/UtilsModule.kt
@@ -0,0 +1,54 @@
+package `fun`.upup.musicfree.utils; // replace your-apps-package-name with your app’s package name
+import android.Manifest
+import android.content.Intent
+import android.content.pm.PackageManager
+import android.net.Uri
+import android.os.Build
+import android.os.Environment
+import android.provider.Settings
+import androidx.core.content.ContextCompat
+import com.facebook.react.bridge.Promise
+import com.facebook.react.bridge.ReactApplicationContext
+import com.facebook.react.bridge.ReactContextBaseJavaModule
+import com.facebook.react.bridge.ReactMethod
+import kotlin.system.exitProcess
+
+class UtilsModule(context: ReactApplicationContext) : ReactContextBaseJavaModule(context) {
+
+ private val reactContext: ReactApplicationContext = context;
+
+ override fun getName() = "NativeUtils"
+
+ @ReactMethod
+ fun exitApp() {
+ val activity = reactContext.currentActivity
+ activity?.finishAndRemoveTask()
+ android.os.Process.killProcess(android.os.Process.myPid())
+ exitProcess(0)
+ }
+
+ @ReactMethod
+ fun checkStoragePermission(promise: Promise) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ promise.resolve(Environment.isExternalStorageManager())
+ } else {
+ val readPermission = ContextCompat.checkSelfPermission(reactContext, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
+ val writePermission = ContextCompat.checkSelfPermission(reactContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
+ promise.resolve(readPermission && writePermission)
+ }
+ }
+
+ @ReactMethod
+ fun requestStoragePermission() {
+ val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION).apply {
+ data = Uri.parse("package:${reactContext.packageName}")
+ }
+ } else {
+ Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {
+ data = Uri.parse("package:${reactContext.packageName}")
+ }
+ }
+ reactContext.currentActivity?.startActivity(intent)
+ }
+}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/utils/UtilsPackage.java b/android/app/src/main/java/fun/upup/musicfree/utils/UtilsPackage.java
deleted file mode 100644
index b5220bcb..00000000
--- a/android/app/src/main/java/fun/upup/musicfree/utils/UtilsPackage.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package fun.upup.musicfree.utils;
-
-import com.facebook.react.ReactPackage;
-import com.facebook.react.bridge.NativeModule;
-import com.facebook.react.bridge.ReactApplicationContext;
-import com.facebook.react.uimanager.ViewManager;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-public class UtilsPackage implements ReactPackage {
-
- @Override
- public List createViewManagers(ReactApplicationContext reactContext) {
- return Collections.emptyList();
- }
-
- @Override
- public List createNativeModules(
- ReactApplicationContext reactContext) {
- List modules = new ArrayList<>();
-
- modules.add(new UtilsModule(reactContext));
-
- return modules;
- }
-
-}
\ No newline at end of file
diff --git a/android/app/src/main/java/fun/upup/musicfree/utils/UtilsPackage.kt b/android/app/src/main/java/fun/upup/musicfree/utils/UtilsPackage.kt
new file mode 100644
index 00000000..ecf56213
--- /dev/null
+++ b/android/app/src/main/java/fun/upup/musicfree/utils/UtilsPackage.kt
@@ -0,0 +1,19 @@
+package `fun`.upup.musicfree.utils
+
+import android.view.View
+import com.facebook.react.ReactPackage
+import com.facebook.react.bridge.NativeModule
+import com.facebook.react.bridge.ReactApplicationContext
+import com.facebook.react.uimanager.ReactShadowNode
+import com.facebook.react.uimanager.ViewManager
+
+class UtilsPackage : ReactPackage {
+
+ override fun createViewManagers(
+ reactContext: ReactApplicationContext
+ ): MutableList>> = mutableListOf()
+
+ override fun createNativeModules(
+ reactContext: ReactApplicationContext
+ ): MutableList = listOf(UtilsModule(reactContext)).toMutableList()
+}
\ No newline at end of file
diff --git a/android/app/src/main/jni/Android.mk b/android/app/src/main/jni/Android.mk
deleted file mode 100644
index 0664b4e3..00000000
--- a/android/app/src/main/jni/Android.mk
+++ /dev/null
@@ -1,48 +0,0 @@
-THIS_DIR := $(call my-dir)
-
-include $(REACT_ANDROID_DIR)/Android-prebuilt.mk
-
-# If you wish to add a custom TurboModule or Fabric component in your app you
-# will have to include the following autogenerated makefile.
-# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk
-include $(CLEAR_VARS)
-
-LOCAL_PATH := $(THIS_DIR)
-
-# You can customize the name of your application .so file here.
-LOCAL_MODULE := musicfree_appmodules
-
-LOCAL_C_INCLUDES := $(LOCAL_PATH)
-LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
-LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
-
-# If you wish to add a custom TurboModule or Fabric component in your app you
-# will have to uncomment those lines to include the generated source
-# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)
-#
-# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
-# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)
-# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
-
-# Here you should add any native library you wish to depend on.
-LOCAL_SHARED_LIBRARIES := \
- libfabricjni \
- libfbjni \
- libfolly_runtime \
- libglog \
- libjsi \
- libreact_codegen_rncore \
- libreact_debug \
- libreact_nativemodule_core \
- libreact_render_componentregistry \
- libreact_render_core \
- libreact_render_debug \
- libreact_render_graphics \
- librrc_view \
- libruntimeexecutor \
- libturbomodulejsijni \
- libyoga
-
-LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/android/app/src/main/jni/MainApplicationModuleProvider.cpp
deleted file mode 100644
index 0ac23cc6..00000000
--- a/android/app/src/main/jni/MainApplicationModuleProvider.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "MainApplicationModuleProvider.h"
-
-#include
-
-namespace facebook {
-namespace react {
-
-std::shared_ptr MainApplicationModuleProvider(
- const std::string moduleName,
- const JavaTurboModule::InitParams ¶ms) {
- // Here you can provide your own module provider for TurboModules coming from
- // either your application or from external libraries. The approach to follow
- // is similar to the following (for a library called `samplelibrary`:
- //
- // auto module = samplelibrary_ModuleProvider(moduleName, params);
- // if (module != nullptr) {
- // return module;
- // }
- // return rncore_ModuleProvider(moduleName, params);
- return rncore_ModuleProvider(moduleName, params);
-}
-
-} // namespace react
-} // namespace facebook
diff --git a/android/app/src/main/jni/MainApplicationModuleProvider.h b/android/app/src/main/jni/MainApplicationModuleProvider.h
deleted file mode 100644
index 0fa43fa6..00000000
--- a/android/app/src/main/jni/MainApplicationModuleProvider.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-#include
-#include
-
-#include
-
-namespace facebook {
-namespace react {
-
-std::shared_ptr MainApplicationModuleProvider(
- const std::string moduleName,
- const JavaTurboModule::InitParams ¶ms);
-
-} // namespace react
-} // namespace facebook
diff --git a/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp
deleted file mode 100644
index dbbdc3d1..00000000
--- a/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "MainApplicationTurboModuleManagerDelegate.h"
-#include "MainApplicationModuleProvider.h"
-
-namespace facebook {
-namespace react {
-
-jni::local_ref
-MainApplicationTurboModuleManagerDelegate::initHybrid(
- jni::alias_ref) {
- return makeCxxInstance();
-}
-
-void MainApplicationTurboModuleManagerDelegate::registerNatives() {
- registerHybrid({
- makeNativeMethod(
- "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid),
- makeNativeMethod(
- "canCreateTurboModule",
- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),
- });
-}
-
-std::shared_ptr
-MainApplicationTurboModuleManagerDelegate::getTurboModule(
- const std::string name,
- const std::shared_ptr jsInvoker) {
- // Not implemented yet: provide pure-C++ NativeModules here.
- return nullptr;
-}
-
-std::shared_ptr
-MainApplicationTurboModuleManagerDelegate::getTurboModule(
- const std::string name,
- const JavaTurboModule::InitParams ¶ms) {
- return MainApplicationModuleProvider(name, params);
-}
-
-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(
- std::string name) {
- return getTurboModule(name, nullptr) != nullptr ||
- getTurboModule(name, {.moduleName = name}) != nullptr;
-}
-
-} // namespace react
-} // namespace facebook
diff --git a/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h
deleted file mode 100644
index 0c6d3fd5..00000000
--- a/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#include
-#include
-
-#include
-#include
-
-namespace facebook {
-namespace react {
-
-class MainApplicationTurboModuleManagerDelegate
- : public jni::HybridClass<
- MainApplicationTurboModuleManagerDelegate,
- TurboModuleManagerDelegate> {
- public:
- // Adapt it to the package you used for your Java class.
- static constexpr auto kJavaDescriptor =
- "Lcom/musicfree/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;";
-
- static jni::local_ref initHybrid(jni::alias_ref);
-
- static void registerNatives();
-
- std::shared_ptr getTurboModule(
- const std::string name,
- const std::shared_ptr jsInvoker) override;
- std::shared_ptr getTurboModule(
- const std::string name,
- const JavaTurboModule::InitParams ¶ms) override;
-
- /**
- * Test-only method. Allows user to verify whether a TurboModule can be
- * created by instances of this class.
- */
- bool canCreateTurboModule(std::string name);
-};
-
-} // namespace react
-} // namespace facebook
diff --git a/android/app/src/main/jni/MainComponentsRegistry.cpp b/android/app/src/main/jni/MainComponentsRegistry.cpp
deleted file mode 100644
index 8f7edffd..00000000
--- a/android/app/src/main/jni/MainComponentsRegistry.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "MainComponentsRegistry.h"
-
-#include
-#include
-#include
-#include
-
-namespace facebook {
-namespace react {
-
-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
-
-std::shared_ptr
-MainComponentsRegistry::sharedProviderRegistry() {
- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
-
- // Custom Fabric Components go here. You can register custom
- // components coming from your App or from 3rd party libraries here.
- //
- // providerRegistry->add(concreteComponentDescriptorProvider<
- // AocViewerComponentDescriptor>());
- return providerRegistry;
-}
-
-jni::local_ref
-MainComponentsRegistry::initHybrid(
- jni::alias_ref,
- ComponentFactory *delegate) {
- auto instance = makeCxxInstance(delegate);
-
- auto buildRegistryFunction =
- [](EventDispatcher::Weak const &eventDispatcher,
- ContextContainer::Shared const &contextContainer)
- -> ComponentDescriptorRegistry::Shared {
- auto registry = MainComponentsRegistry::sharedProviderRegistry()
- ->createComponentDescriptorRegistry(
- {eventDispatcher, contextContainer});
-
- auto mutableRegistry =
- std::const_pointer_cast(registry);
-
- mutableRegistry->setFallbackComponentDescriptor(
- std::make_shared(
- ComponentDescriptorParameters{
- eventDispatcher, contextContainer, nullptr}));
-
- return registry;
- };
-
- delegate->buildRegistryFunction = buildRegistryFunction;
- return instance;
-}
-
-void MainComponentsRegistry::registerNatives() {
- registerHybrid({
- makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid),
- });
-}
-
-} // namespace react
-} // namespace facebook
diff --git a/android/app/src/main/jni/MainComponentsRegistry.h b/android/app/src/main/jni/MainComponentsRegistry.h
deleted file mode 100644
index ce8856db..00000000
--- a/android/app/src/main/jni/MainComponentsRegistry.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include
-#include
-#include
-#include
-
-namespace facebook {
-namespace react {
-
-class MainComponentsRegistry
- : public facebook::jni::HybridClass {
- public:
- // Adapt it to the package you used for your Java class.
- constexpr static auto kJavaDescriptor =
- "Lcom/musicfree/newarchitecture/components/MainComponentsRegistry;";
-
- static void registerNatives();
-
- MainComponentsRegistry(ComponentFactory *delegate);
-
- private:
- static std::shared_ptr
- sharedProviderRegistry();
-
- static jni::local_ref initHybrid(
- jni::alias_ref,
- ComponentFactory *delegate);
-};
-
-} // namespace react
-} // namespace facebook
diff --git a/android/app/src/main/jni/OnLoad.cpp b/android/app/src/main/jni/OnLoad.cpp
deleted file mode 100644
index c569b6e8..00000000
--- a/android/app/src/main/jni/OnLoad.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-#include
-#include "MainApplicationTurboModuleManagerDelegate.h"
-#include "MainComponentsRegistry.h"
-
-JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
- return facebook::jni::initialize(vm, [] {
- facebook::react::MainApplicationTurboModuleManagerDelegate::
- registerNatives();
- facebook::react::MainComponentsRegistry::registerNatives();
- });
-}
diff --git a/android/app/src/main/musicfree_logo-playstore.png b/android/app/src/main/musicfree_logo-playstore.png
deleted file mode 100644
index 3b21684c..00000000
Binary files a/android/app/src/main/musicfree_logo-playstore.png and /dev/null differ
diff --git a/android/app/src/main/musicfree_logo_1-playstore.png b/android/app/src/main/musicfree_logo_1-playstore.png
deleted file mode 100644
index 213604a8..00000000
Binary files a/android/app/src/main/musicfree_logo_1-playstore.png and /dev/null differ
diff --git a/android/app/src/main/res/drawable-v24/musicfree_logo_1_foreground.xml b/android/app/src/main/res/drawable-v24/musicfree_logo_1_foreground.xml
deleted file mode 100644
index d790786b..00000000
--- a/android/app/src/main/res/drawable-v24/musicfree_logo_1_foreground.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android/app/src/main/res/drawable/rn_edit_text_material.xml b/android/app/src/main/res/drawable/rn_edit_text_material.xml
index f35d9962..5c25e728 100644
--- a/android/app/src/main/res/drawable/rn_edit_text_material.xml
+++ b/android/app/src/main/res/drawable/rn_edit_text_material.xml
@@ -17,10 +17,11 @@
android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
android:insetTop="@dimen/abc_edit_text_inset_top_material"
- android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
+ android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"
+ >
-
\ No newline at end of file
diff --git a/android/app/src/main/res/values/musicfree_logo_background.xml b/android/app/src/main/res/values/ic_launcher_background.xml
similarity index 51%
rename from android/app/src/main/res/values/musicfree_logo_background.xml
rename to android/app/src/main/res/values/ic_launcher_background.xml
index 109cbd22..cfa9be08 100644
--- a/android/app/src/main/res/values/musicfree_logo_background.xml
+++ b/android/app/src/main/res/values/ic_launcher_background.xml
@@ -1,4 +1,4 @@
-
-
- #FEFDFD
+
+
+ #FFFFFF
\ No newline at end of file
diff --git a/android/app/src/main/res/values/musicfree_logo_1_background.xml b/android/app/src/main/res/values/musicfree_logo_1_background.xml
deleted file mode 100644
index f236b946..00000000
--- a/android/app/src/main/res/values/musicfree_logo_1_background.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- #F1F2F3
-
\ No newline at end of file
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
index 1280cb6a..4595d9c8 100644
--- a/android/app/src/main/res/values/styles.xml
+++ b/android/app/src/main/res/values/styles.xml
@@ -1,14 +1,10 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/android/build.gradle b/android/build.gradle
index ace7fb2d..f536a792 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,69 +1,21 @@
-import org.apache.tools.ant.taskdefs.condition.Os
-
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
buildscript {
ext {
- buildToolsVersion = "31.0.0"
- minSdkVersion = 21
- compileSdkVersion = 33
- targetSdkVersion = 30
-
- if (System.properties['os.arch'] == "aarch64") {
- // For M1 Users we need to use the NDK 24 which added support for aarch64
- ndkVersion = "24.0.8215888"
- } else {
- // Otherwise we default to the side-by-side NDK version from AGP.
- ndkVersion = "21.4.7075529"
- }
+ buildToolsVersion = "34.0.0"
+ minSdkVersion = 23
+ compileSdkVersion = 34
+ targetSdkVersion = 34
+ ndkVersion = "26.1.10909125"
+ kotlinVersion = "1.9.22"
}
repositories {
google()
mavenCentral()
}
dependencies {
- classpath('com.android.tools.build:gradle:7.1.2')
+ classpath("com.android.tools.build:gradle")
classpath("com.facebook.react:react-native-gradle-plugin")
- classpath("de.undercouch:gradle-download-task:5.0.1")
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
+ classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
}
}
-allprojects {
- repositories {
- // https://github.com/facebook/react-native/issues/35210
- exclusiveContent {
- // We get React Native's Android binaries exclusively through npm,
- // from a local Maven repo inside node_modules/react-native/.
- // (The use of exclusiveContent prevents looking elsewhere like Maven Central
- // and potentially getting a wrong version.)
- filter {
- includeGroup "com.facebook.react"
- }
- forRepository {
- maven {
- url "$rootDir/../node_modules/react-native/android"
- }
- }
- }
- maven {
- // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
- url("$rootDir/../node_modules/react-native/android")
- }
- maven {
- // Android JSC is installed from npm
- url("$rootDir/../node_modules/jsc-android/dist")
- }
- mavenCentral {
- // We don't want to fetch react-native from Maven Central as there are
- // older versions over there.
- content {
- excludeGroup "com.facebook.react"
- }
- }
- google()
- maven { url 'https://maven.aliyun.com/repository/jcenter' }
- maven { url 'https://www.jitpack.io' }
- }
-}
+apply plugin: "com.facebook.react.rootproject"
diff --git a/android/gradle.properties b/android/gradle.properties
index 5267d916..a46a5b90 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -24,9 +24,6 @@ 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
@@ -39,4 +36,6 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
# are providing them.
newArchEnabled=false
-AsyncStorage_db_size_in_MB=20
\ No newline at end of file
+# 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/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar
index 7454180f..7f93135c 100644
Binary files a/android/gradle/wrapper/gradle-wrapper.jar and b/android/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 669386b8..e6aba251 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip
+networkTimeout=10000
+validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/android/gradlew b/android/gradlew
index 1b6c7873..1aa94a42 100644
--- a/android/gradlew
+++ b/android/gradlew
@@ -55,7 +55,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# 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/.
@@ -80,13 +80,11 @@ do
esac
done
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
+# This is normally unused
+# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
-
-# 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"'
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -133,22 +131,29 @@ 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.
+ if ! command -v java >/dev/null 2>&1
+ then
+ 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
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=SC2039,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=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -193,11 +198,15 @@ if "$cygwin" || "$msys" ; then
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.
+
+# 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"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
@@ -205,6 +214,12 @@ set -- \
org.gradle.wrapper.GradleWrapperMain \
"$@"
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+ die "xargs is not available"
+fi
+
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
diff --git a/android/gradlew.bat b/android/gradlew.bat
index 107acd32..7101f8e4 100644
--- a/android/gradlew.bat
+++ b/android/gradlew.bat
@@ -1,89 +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=.
-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%" == "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%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@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. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+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/android/settings.gradle b/android/settings.gradle
index 03ed0b5b..b6f18a48 100644
--- a/android/settings.gradle
+++ b/android/settings.gradle
@@ -1,14 +1,7 @@
-rootProject.name = 'MusicFree'
-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')
-
-if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") {
- include(":ReactAndroid")
- project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid')
- include(":ReactAndroid:hermes-engine")
- project(":ReactAndroid:hermes-engine").projectDir = file('../node_modules/react-native/ReactAndroid/hermes-engine')
-}
-
-include ':react-native-fs'
-project(':react-native-fs').projectDir = new File(settingsDir, '../node_modules/react-native-fs/android')
\ No newline at end of file
+rootProject.name = 'MusicFree'
+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')
+
+apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle")
+useExpoModules()
\ No newline at end of file
diff --git a/app.json b/app.json
index 97e158b1..84cf5b02 100644
--- a/app.json
+++ b/app.json
@@ -1,4 +1,4 @@
{
"name": "MusicFree",
- "displayName": "Music Free"
-}
\ No newline at end of file
+ "displayName": "MusicFree"
+}
diff --git a/assets/bootsplash_logo.png b/assets/bootsplash_logo.png
deleted file mode 100644
index 5c5ab2d4..00000000
Binary files a/assets/bootsplash_logo.png and /dev/null differ
diff --git a/assets/bootsplash_logo@1,5x.png b/assets/bootsplash_logo@1,5x.png
deleted file mode 100644
index c66a3ee0..00000000
Binary files a/assets/bootsplash_logo@1,5x.png and /dev/null differ
diff --git a/assets/bootsplash_logo@2x.png b/assets/bootsplash_logo@2x.png
deleted file mode 100644
index 0a0fd56a..00000000
Binary files a/assets/bootsplash_logo@2x.png and /dev/null differ
diff --git a/assets/bootsplash_logo@3x.png b/assets/bootsplash_logo@3x.png
deleted file mode 100644
index b26292bf..00000000
Binary files a/assets/bootsplash_logo@3x.png and /dev/null differ
diff --git a/assets/bootsplash_logo@4x.png b/assets/bootsplash_logo@4x.png
deleted file mode 100644
index 9fb4f2e1..00000000
Binary files a/assets/bootsplash_logo@4x.png and /dev/null differ
diff --git a/babel.config.js b/babel.config.js
index 078dbe17..f75f2022 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -1,5 +1,5 @@
module.exports = {
- presets: ['module:metro-react-native-babel-preset'],
+ presets: ['module:@react-native/babel-preset'],
plugins: [
[
'module-resolver',
@@ -12,4 +12,9 @@ module.exports = {
],
'react-native-reanimated/plugin',
],
+ env: {
+ production: {
+ plugins: ['transform-remove-console'],
+ },
+ },
};
diff --git a/changelog.md b/changelog.md
index f952c4c3..2868452a 100644
--- a/changelog.md
+++ b/changelog.md
@@ -1,230 +1,230 @@
-`2024.3.31 v0.3.0`
-本次更新优化了存储方式,更新到此版本后,歌单会自动转化为新的存储方式;安装新版本后再回退到老版本会导致歌单清空,虽然测试下来没啥问题,但是请谨慎升级Orz
-备用链接:https://pan.baidu.com/s/1HmbHlh3vTcSyVXcOs-7kTA?pwd=saku 提取码: saku
-1. 【功能】历史播放记录支持批量编辑
-2. 【功能】歌单内支持按照加入时间排序
-3. 【功能】新增设置“本地歌单添加歌曲顺序”,在歌单内添加歌曲时可以加到歌单开头
-4. 【功能】首页新建歌单旁边新增“导入歌单”按钮,点击时会自动寻找具有导入歌单功能的插件,并拉起导入浮层
-5. 【功能】设置项中新增“自动换源”功能,当插件失效/无法获取播放链接时,会自动尝试更换其他源的同名歌曲
-6. 【优化】尝试优化了软件启动时间,应该有点作用
-7. 【优化】更新了存储方式,现在单个歌单可以存储大于10000首歌曲;
-8. 【优化】调整未开启“允许使用移动网络播放”开关时的样式表现
-9. 【优化】优化了设置页的样式
-10. 【优化】微调歌词详情页的布局
-11. 【修复】修复打开弹窗时,点击返回按钮不关闭弹窗的问题
-12. 【修复】修复启动软件时播放模式错误的问题
-13. 【修复】修复搜索结果页特定情况下白屏的问题
-
-`2024.1.21 v0.2.0`
-1. 【功能】支持 Webdav 备份 & 播放
-2. 【功能】插件支持显示作者
-3. 【功能】插件榜单详情支持分页
-4. 【功能】首页&歌词页样式改版:新增歌词进度调整、歌词大小调整、歌词翻译、自动搜索歌词
-5. 【功能】新增收藏歌单功能
-6. 【功能】侧边栏新增“权限管理”设置
-7. 【功能】音乐播放栏支持左右滑动切歌(可能会闪一下,后续修掉)
-8. 【功能】新增 “通知栏显示关闭按钮” 设置
-9. 【优化】重构播放、数据存储逻辑
-10. 【优化】统一浮层、toast样式
-11. 【优化】去除插件URL必须以.js结尾的限制
-12. 【修复】修改无限列表到底不触发onEndReached的问题 (感谢 @282931)
-13. 【修复】修复标题栏背景色透明度不生效的问题
-14. 【修复】修复播放记录退出后被清空的问题
-15. 【修复】修复部分情况下深色模式异常的问题
-16. 【其他】这次安装包备用链接发到百度网盘了:https://pan.baidu.com/s/1H360C0MqejKXS67XwMqgPw?pwd=6666 提取码6666
-
-
-`2023.11.24 v0.1.2-alpha.0`
-1. 【功能】新增桌面歌词功能,可在设置页开启(开启之前需要去手机设置授予悬浮窗权限)
-2. 【功能】可以使用 MusicFree 打开本地 .js 或 .mp3 文件;其中 .js 文件会被当作插件安装; .mp3 文件会直接播放
-3. 【功能】新增插件设置:打开软件时自动更新插件、安装插件时不校验版本
-4. 【功能】新增播放设置:打开软件时自动播放歌曲
-5. 【功能】插件页新增开关,可以控制是否在榜单、热门歌单、搜索结果中展示对应插件的结果
-6. 【功能】插件协议新增 “用户变量” ,可以在插件中获取 APP 输入的配置(可以由此实现自建音乐源的插件/webdav源插件,但是还没写)
-7. 【优化】下载单曲支持选择音质
-8. 【优化】新增“关联歌词方式”设置,如果设置为“输入歌曲ID”,则会恢复老版本关联歌词,即输入ID关联歌词
-9. 【优化】侧边栏新增“返回桌面”按钮
-10. 【修复】修复榜单、推荐歌单、搜索歌词页白屏闪退的问题 (感谢 @282931)
-11. 【修复】修复自定义背景模糊度和透明度无法设置为 0 的问题 (感谢 @282931)
-12. 【修复】修复浅色主题状态栏表现错误的问题
-13. 【修复】修复歌单批量编辑无法删除的问题
-14. 【修复】修复无法恢复桌面版导出的歌单的问题
-
-`2023.10.15 v0.1.1-alpha.0`
-1. 【功能】音源支持m3u8 (桌面版下个版本支持m3u8)
-2. 【功能】增加歌曲详情页屏幕常亮的设置
-3. 【功能】重构主题相关功能,增加「跟随系统深色设置」选项;调整大部分样式,移除第三方UI库
-4. 【功能】插件页增加「插件批量更新」的功能
-5. 【功能】取消原「歌词关联」的逻辑,修改为拉起「歌词搜索」浮层
-6. 【优化】增加了一些无障碍属性
-7. 【修复】修复部分场景下无法保存歌单的问题
-8. 【修复】修复部分场景下重启之后无法播放歌曲的问题
-9. 【插件】部分插件更新,侧边栏更新插件即可
-
-`2023.8.13 v0.1.0-alpha.10`
-1. 【功能】当前音乐无歌词时可以在歌词页搜索歌词
-2. 【优化】调整右上角弹出气泡的位置
-3. 【优化】增加打开歌曲详情页时的默认表现设置
-4. 【优化】修复进入歌词页时候显示跳变的问题
-5. 【插件】插件协议更新,更新后可以配置某插件不出现在特定的搜索结果页下
-6. 【插件】部分插件更新,侧边栏更新插件即可
-
-`2023.6.26 v0.1.0-alpha.9`
-1. 【功能】新增搜索歌单功能
-2. 【功能】新增播放记录功能
-3. 【优化】加了一些无障碍适配
-4. 【插件】部分插件更新,侧边栏更新插件即可
-
-`2023.6.4 v0.1.0-alpha.8`
-1. 【功能】新增“推荐歌单”功能,需要配合支持该功能的插件使用
-2. 【功能】导入本地文件时增加“全选”按钮
-3. 【优化】修改“保存专辑封面”时的提示文案
-4. 【修复】修复当目标歌曲在播放列表内时,添加到下一首播放无效的问题
-5. 【插件】部分插件更新,侧边栏更新插件即可
-
-`2023.5.21 v0.1.0-alpha.7`
-1. 【功能】歌单页新增“播放全部”按钮
-2. 【功能】歌曲播放页中,长按专辑封面可保存到本地
-3. 【功能】歌单页新增“歌单排序”功能
-4. 【插件】b站插件作者页API变动,侧边栏更新插件即可
-
-`2023.5.3 v0.1.0-alpha.6`
-小小拖更一下~
-1. 【功能】歌单内搜索时支持英文大小写模糊搜索
-2. 【修复】修复首次进入时歌曲可能无法正常播放的问题
-
-`2023.3.26 v0.1.0-alpha.5`
-1. 【功能】更新弹窗新增“跳过此版本”的复选框
-2. 【功能】侧边栏-基本设置-开发选项中新增“查看错误日志”的选项,点击会弹出错误日志的弹窗
-3. 【修复】修复输入框被软键盘遮挡的问题
-4. 【优化】优化了定时关闭的样式
-5. 【文档】文档中更新了插件的制作教程。文档地址:http://musicfree.upup.fun
-
-`2023.3.19 v0.1.0-alpha.4`
-1. 【功能】适配横屏设备
-2. 【功能】新建歌单时添加默认歌单名;从专辑/榜单批量添加到新歌单时,默认以专辑名/榜单名为新歌单名
-3. 【修复】修复设备有虚拟按键时,浮层会被遮挡的问题
-4. 【修复】修复拖拽歌词时部分情况下时间异常的问题
-5. 【修复】调整下载失败时的提示文案
-6. 【插件】部分插件有更新,可以从侧边栏更新
-
-`2023.2.26 v0.1.0-alpha.3`
-1. 【功能】专辑列表支持分页,需要配合插件更新;
-2. 【优化】去掉了全面屏手机界面下方的小白条;
-3. 【优化】调整拖拽歌词时标识线的对齐范围;调整歌词拖到最底端时的逻辑;
-4. 【优化】调整下载歌曲时的文件名;
-5. 【优化】导入歌曲时的提示文案增加滚动;
-6. 【修复】修复特殊情况下歌曲中断后可能恢复到错误状态的问题(未验证);
-7. 【插件】个别插件有更新,可以去侧边栏更新订阅。
-
-`2023.2.13 v0.1.0-alpha.2`
-1. 【功能】备份&恢复:可以把本地的歌单和插件备份到一个json文件中,也可以从本地文件或网络上恢复插件和歌单。
-2. 【修复】修复部分情况下后台播放切换歌曲时暂停的问题
-3. 【修复】修复部分场景无法下载的问题
-4. 【修复】修复部分场景无法删除本地文件的问题
-5. 【优化】简单优化了下歌单列表
-6. 【调试】调试面板现在可以打印出插件中的console语句
-
-`2023.1.27 v0.1.0-alpha.1`
-1. !!!【功能】插件更新,升级到新版本之后原有插件完全不兼容;更新后卸载原有插件,然后更新订阅即可(具体看公众号示例)
-2. 【功能】新增功能“倍速播放”
-3. 【功能】重写了插件订阅的逻辑,现在应该会更合理一点点
-4. 【功能】删除本地文件之前增加二次确认提醒
-5. 【功能】增加了一些无关紧要的分享
-6. 【样式】换了个logo,丑的更直白一些
-7. 【样式】调整了一些样式(如播放页的模糊和透明度、歌词样式等)
-8. 【样式】专辑描述文字默认6行,点击可以展开或折叠
-9. 【修复】修复部分情况下无法下载的问题
-10. 【插件】大量插件有更新,更新到此版本后更新订阅即可
-
-`2023.1.8 v0.0.1-alpha.13`
-1. 【功能】主页入口增加“榜单”
-2. 【功能】歌单页新增“编辑歌单信息”,可以修改歌单名称和歌单封面
-3. 【修复】修复了一个会导致播放音乐时拖拽排序卡顿的问题,做了一些其他优化
-4. 【插件】部分插件有更新,可以在侧边栏更新
-
-`2022.12.25 v0.0.1-alpha.12`
-1. 【功能】增加“单击搜索结果中单曲tab”时的行为配置
-2. 【功能】增加调试配置及调试面板,可用于查看插件的错误信息
-3. 【修复】修复部分情况下本地音乐中断时无法继续播放的问题
-4. 【修复】尝试修复扫描本地音乐,音乐文件太多时可能卡死的问题
-
-`2022.12.11 v0.0.1-alpha.11`
-1. 【功能】完善音质功能
-2. 【功能】更新下载功能,支持根据音质下载文件;修复一些小问题
-3. 【功能】新增播放时被打断的设置,可设置为暂停或者暂时降低音量
-4. 【优化】调整侧边栏样式,侧边栏新增“定时关闭”功能
-5. 【优化】本地音乐读取歌词时,会自动读取同目录下的同名lrc文件作为歌词
-6. 【修复】修复安装插件时误弹安装失败提示的问题
-7. 【修复】修复部分情况下本地文件删除失败的问题
-8. 【修复】修复本地音乐在通知栏不显示音乐标题的问题
-9. 【插件】示例插件仓库中migu有更新(支持音质),需要可自行更新
-
-`2022.12.4 v0.0.1-alpha.10`
-1. 【功能】支持自定义下载路径
-2. 【功能】支持插件排序(也就是搜索结果的排序)
-3. 【功能】增加音质相关的配置
-4. 【优化】弹窗、浮层的性能优化,页面嵌套较深时卡顿的情况应该会好一点
-5. 【优化】拖拽排序,比上个版本手感应该会好一点
-6. 【修复】修复在歌词页清空播放列表时白屏的问题
-
-`2022.11.20 v0.0.1-alpha.9`
-1. 【功能】本地音乐读取内嵌歌词
-2. 【功能】批量编辑页新增了凑合能用的拖拽排序
-3. 【功能】歌曲详情浮层新增凑合能用的定时关闭
-4. 【功能】添加到歌单时可以新建歌单
-5. 【功能】本地音乐扫描支持外置sd卡;支持导入aac格式
-6. 【优化】优化播放列表浮层拉起时的锚定
-7. 【修复】修复更新弹窗无法滚动的问题
-8. 【修复】修复安卓12状态栏概率不沉浸的问题
-9. 【修复】修复安卓12、13播一首就停的问题
-10. 【插件】示例插件有更新,可以删掉原有插件重新导入
-
-`2022.11.13 v0.0.1-alpha.8`
-1. 【功能】侧边栏插件设置新增“订阅插件”功能,订阅之后直接点击“更新插件”即可更新,不需要清空重装了
-2. 【功能】本地音乐读取内置封面
-3. 【功能】本地音乐歌单支持批量删除(不删除源文件)
-4. 【优化】重写导入本地音乐的逻辑,支持多选文件夹;修复部分机型重启应用时本地音乐消失的问题(可能需要删除后重新导入);支持导入flac,wav,wav,m4a,ogg等格式
-5. 【优化】重写播放列表浮层,拉起时会锚定到当前正在播放的歌曲
-6. 【优化】调整部分逻辑,可能会减少音频卡顿时卡死的情况
-7. 【修复】修复歌曲详情页进度条不连续的问题
-8. 【修复】修复某些情况下无法关联歌词的问题
-9. 【修复】修复正在播放的歌曲无歌词时,进入歌词页白屏的问题
-10. 【插件】示例插件有更新,可以删掉原有插件重新导入
-
-`2022.10.30 v0.0.1-alpha.7`
-1. 新增功能:历史记录一键清空
-2. 新增功能:歌手页、本地歌单页支持批量编辑
-3. 修复移动网络下无法播放本地音乐的问题
-4. 样式优化&修复:toast提示显示异常、侧边栏样式优化、歌单内序号显示不全、【关于】页无法滑动
-5. 之前使用的拖拽排序组件在列表较大时有很严重的性能问题,会导致卡顿甚至白屏,因此批量编辑页暂时去掉了拖拽排序,后续会重新加上
-
-`2022.10.22 v0.0.1-alpha.6`
-1. 重要!! v0.0.1-alpha.5以前的版本无法通过app正常更新,请在gitee/github发布页下载最新版本(v0.0.1-alpha.6),或QQ群自取;
-2. 导入本地音乐时,如果未识别本地音乐文件,则会使用文件名作为音乐名;
-3. 自建歌单、专辑详情页增加批量选择功能,可点击右上角查看(歌曲较多时可能有点卡,后续优化);使用方式:选中歌曲可进行下一首播放/加入歌单/下载/删除,长按拖动进行排序;删除/排序后点击保存按钮方可生效
-4. 调整歌单内歌曲编号字体大小;
-
-`2022.10.16 v0.0.1-alpha.5`
-1. 新增功能:导入本地音乐文件
-2. 从网络源安装的插件可在插件页直接更新
-3. 调整下载逻辑
-
-`2022.10.06 v0.0.1-alpha.4`
-1. 修复专辑详情页没有loading的问题
-2. 为插件新增Cookie管理器
-3. 优化播放页的显示
-4. 新增一键卸载全部插件的功能
-
-`2022.10.04 v0.0.1-alpha.3`
-1. 修复设置页无法滚动的问题
-2. 修复播放结束时可能暂停的问题
-
-`2022.10.03 v0.0.1-alpha.2`
-1. 插件协议更新,需要重新安装插件
-2. 支持批量导入插件
-3. 新增清空播放列表功能
-4. 优化搜索结果面板和播放专辑逻辑
-
-`2022.10.02`
-测试版本出现啦!撒花
+`2024.3.31 v0.3.0`
+本次更新优化了存储方式,更新到此版本后,歌单会自动转化为新的存储方式;安装新版本后再回退到老版本会导致歌单清空,虽然测试下来没啥问题,但是请谨慎升级Orz
+备用链接:https://pan.baidu.com/s/1HmbHlh3vTcSyVXcOs-7kTA?pwd=saku 提取码: saku
+1. 【功能】历史播放记录支持批量编辑
+2. 【功能】歌单内支持按照加入时间排序
+3. 【功能】新增设置“本地歌单添加歌曲顺序”,在歌单内添加歌曲时可以加到歌单开头
+4. 【功能】首页新建歌单旁边新增“导入歌单”按钮,点击时会自动寻找具有导入歌单功能的插件,并拉起导入浮层
+5. 【功能】设置项中新增“自动换源”功能,当插件失效/无法获取播放链接时,会自动尝试更换其他源的同名歌曲
+6. 【优化】尝试优化了软件启动时间,应该有点作用
+7. 【优化】更新了存储方式,现在单个歌单可以存储大于10000首歌曲;
+8. 【优化】调整未开启“允许使用移动网络播放”开关时的样式表现
+9. 【优化】优化了设置页的样式
+10. 【优化】微调歌词详情页的布局
+11. 【修复】修复打开弹窗时,点击返回按钮不关闭弹窗的问题
+12. 【修复】修复启动软件时播放模式错误的问题
+13. 【修复】修复搜索结果页特定情况下白屏的问题
+
+`2024.1.21 v0.2.0`
+1. 【功能】支持 Webdav 备份 & 播放
+2. 【功能】插件支持显示作者
+3. 【功能】插件榜单详情支持分页
+4. 【功能】首页&歌词页样式改版:新增歌词进度调整、歌词大小调整、歌词翻译、自动搜索歌词
+5. 【功能】新增收藏歌单功能
+6. 【功能】侧边栏新增“权限管理”设置
+7. 【功能】音乐播放栏支持左右滑动切歌(可能会闪一下,后续修掉)
+8. 【功能】新增 “通知栏显示关闭按钮” 设置
+9. 【优化】重构播放、数据存储逻辑
+10. 【优化】统一浮层、toast样式
+11. 【优化】去除插件URL必须以.js结尾的限制
+12. 【修复】修改无限列表到底不触发onEndReached的问题 (感谢 @282931)
+13. 【修复】修复标题栏背景色透明度不生效的问题
+14. 【修复】修复播放记录退出后被清空的问题
+15. 【修复】修复部分情况下深色模式异常的问题
+16. 【其他】这次安装包备用链接发到百度网盘了:https://pan.baidu.com/s/1H360C0MqejKXS67XwMqgPw?pwd=6666 提取码6666
+
+
+`2023.11.24 v0.1.2-alpha.0`
+1. 【功能】新增桌面歌词功能,可在设置页开启(开启之前需要去手机设置授予悬浮窗权限)
+2. 【功能】可以使用 MusicFree 打开本地 .js 或 .mp3 文件;其中 .js 文件会被当作插件安装; .mp3 文件会直接播放
+3. 【功能】新增插件设置:打开软件时自动更新插件、安装插件时不校验版本
+4. 【功能】新增播放设置:打开软件时自动播放歌曲
+5. 【功能】插件页新增开关,可以控制是否在榜单、热门歌单、搜索结果中展示对应插件的结果
+6. 【功能】插件协议新增 “用户变量” ,可以在插件中获取 APP 输入的配置(可以由此实现自建音乐源的插件/webdav源插件,但是还没写)
+7. 【优化】下载单曲支持选择音质
+8. 【优化】新增“关联歌词方式”设置,如果设置为“输入歌曲ID”,则会恢复老版本关联歌词,即输入ID关联歌词
+9. 【优化】侧边栏新增“返回桌面”按钮
+10. 【修复】修复榜单、推荐歌单、搜索歌词页白屏闪退的问题 (感谢 @282931)
+11. 【修复】修复自定义背景模糊度和透明度无法设置为 0 的问题 (感谢 @282931)
+12. 【修复】修复浅色主题状态栏表现错误的问题
+13. 【修复】修复歌单批量编辑无法删除的问题
+14. 【修复】修复无法恢复桌面版导出的歌单的问题
+
+`2023.10.15 v0.1.1-alpha.0`
+1. 【功能】音源支持m3u8 (桌面版下个版本支持m3u8)
+2. 【功能】增加歌曲详情页屏幕常亮的设置
+3. 【功能】重构主题相关功能,增加「跟随系统深色设置」选项;调整大部分样式,移除第三方UI库
+4. 【功能】插件页增加「插件批量更新」的功能
+5. 【功能】取消原「歌词关联」的逻辑,修改为拉起「歌词搜索」浮层
+6. 【优化】增加了一些无障碍属性
+7. 【修复】修复部分场景下无法保存歌单的问题
+8. 【修复】修复部分场景下重启之后无法播放歌曲的问题
+9. 【插件】部分插件更新,侧边栏更新插件即可
+
+`2023.8.13 v0.1.0-alpha.10`
+1. 【功能】当前音乐无歌词时可以在歌词页搜索歌词
+2. 【优化】调整右上角弹出气泡的位置
+3. 【优化】增加打开歌曲详情页时的默认表现设置
+4. 【优化】修复进入歌词页时候显示跳变的问题
+5. 【插件】插件协议更新,更新后可以配置某插件不出现在特定的搜索结果页下
+6. 【插件】部分插件更新,侧边栏更新插件即可
+
+`2023.6.26 v0.1.0-alpha.9`
+1. 【功能】新增搜索歌单功能
+2. 【功能】新增播放记录功能
+3. 【优化】加了一些无障碍适配
+4. 【插件】部分插件更新,侧边栏更新插件即可
+
+`2023.6.4 v0.1.0-alpha.8`
+1. 【功能】新增“推荐歌单”功能,需要配合支持该功能的插件使用
+2. 【功能】导入本地文件时增加“全选”按钮
+3. 【优化】修改“保存专辑封面”时的提示文案
+4. 【修复】修复当目标歌曲在播放列表内时,添加到下一首播放无效的问题
+5. 【插件】部分插件更新,侧边栏更新插件即可
+
+`2023.5.21 v0.1.0-alpha.7`
+1. 【功能】歌单页新增“播放全部”按钮
+2. 【功能】歌曲播放页中,长按专辑封面可保存到本地
+3. 【功能】歌单页新增“歌单排序”功能
+4. 【插件】b站插件作者页API变动,侧边栏更新插件即可
+
+`2023.5.3 v0.1.0-alpha.6`
+小小拖更一下~
+1. 【功能】歌单内搜索时支持英文大小写模糊搜索
+2. 【修复】修复首次进入时歌曲可能无法正常播放的问题
+
+`2023.3.26 v0.1.0-alpha.5`
+1. 【功能】更新弹窗新增“跳过此版本”的复选框
+2. 【功能】侧边栏-基本设置-开发选项中新增“查看错误日志”的选项,点击会弹出错误日志的弹窗
+3. 【修复】修复输入框被软键盘遮挡的问题
+4. 【优化】优化了定时关闭的样式
+5. 【文档】文档中更新了插件的制作教程。文档地址:http://musicfree.upup.fun
+
+`2023.3.19 v0.1.0-alpha.4`
+1. 【功能】适配横屏设备
+2. 【功能】新建歌单时添加默认歌单名;从专辑/榜单批量添加到新歌单时,默认以专辑名/榜单名为新歌单名
+3. 【修复】修复设备有虚拟按键时,浮层会被遮挡的问题
+4. 【修复】修复拖拽歌词时部分情况下时间异常的问题
+5. 【修复】调整下载失败时的提示文案
+6. 【插件】部分插件有更新,可以从侧边栏更新
+
+`2023.2.26 v0.1.0-alpha.3`
+1. 【功能】专辑列表支持分页,需要配合插件更新;
+2. 【优化】去掉了全面屏手机界面下方的小白条;
+3. 【优化】调整拖拽歌词时标识线的对齐范围;调整歌词拖到最底端时的逻辑;
+4. 【优化】调整下载歌曲时的文件名;
+5. 【优化】导入歌曲时的提示文案增加滚动;
+6. 【修复】修复特殊情况下歌曲中断后可能恢复到错误状态的问题(未验证);
+7. 【插件】个别插件有更新,可以去侧边栏更新订阅。
+
+`2023.2.13 v0.1.0-alpha.2`
+1. 【功能】备份&恢复:可以把本地的歌单和插件备份到一个json文件中,也可以从本地文件或网络上恢复插件和歌单。
+2. 【修复】修复部分情况下后台播放切换歌曲时暂停的问题
+3. 【修复】修复部分场景无法下载的问题
+4. 【修复】修复部分场景无法删除本地文件的问题
+5. 【优化】简单优化了下歌单列表
+6. 【调试】调试面板现在可以打印出插件中的console语句
+
+`2023.1.27 v0.1.0-alpha.1`
+1. !!!【功能】插件更新,升级到新版本之后原有插件完全不兼容;更新后卸载原有插件,然后更新订阅即可(具体看公众号示例)
+2. 【功能】新增功能“倍速播放”
+3. 【功能】重写了插件订阅的逻辑,现在应该会更合理一点点
+4. 【功能】删除本地文件之前增加二次确认提醒
+5. 【功能】增加了一些无关紧要的分享
+6. 【样式】换了个logo,丑的更直白一些
+7. 【样式】调整了一些样式(如播放页的模糊和透明度、歌词样式等)
+8. 【样式】专辑描述文字默认6行,点击可以展开或折叠
+9. 【修复】修复部分情况下无法下载的问题
+10. 【插件】大量插件有更新,更新到此版本后更新订阅即可
+
+`2023.1.8 v0.0.1-alpha.13`
+1. 【功能】主页入口增加“榜单”
+2. 【功能】歌单页新增“编辑歌单信息”,可以修改歌单名称和歌单封面
+3. 【修复】修复了一个会导致播放音乐时拖拽排序卡顿的问题,做了一些其他优化
+4. 【插件】部分插件有更新,可以在侧边栏更新
+
+`2022.12.25 v0.0.1-alpha.12`
+1. 【功能】增加“单击搜索结果中单曲tab”时的行为配置
+2. 【功能】增加调试配置及调试面板,可用于查看插件的错误信息
+3. 【修复】修复部分情况下本地音乐中断时无法继续播放的问题
+4. 【修复】尝试修复扫描本地音乐,音乐文件太多时可能卡死的问题
+
+`2022.12.11 v0.0.1-alpha.11`
+1. 【功能】完善音质功能
+2. 【功能】更新下载功能,支持根据音质下载文件;修复一些小问题
+3. 【功能】新增播放时被打断的设置,可设置为暂停或者暂时降低音量
+4. 【优化】调整侧边栏样式,侧边栏新增“定时关闭”功能
+5. 【优化】本地音乐读取歌词时,会自动读取同目录下的同名lrc文件作为歌词
+6. 【修复】修复安装插件时误弹安装失败提示的问题
+7. 【修复】修复部分情况下本地文件删除失败的问题
+8. 【修复】修复本地音乐在通知栏不显示音乐标题的问题
+9. 【插件】示例插件仓库中migu有更新(支持音质),需要可自行更新
+
+`2022.12.4 v0.0.1-alpha.10`
+1. 【功能】支持自定义下载路径
+2. 【功能】支持插件排序(也就是搜索结果的排序)
+3. 【功能】增加音质相关的配置
+4. 【优化】弹窗、浮层的性能优化,页面嵌套较深时卡顿的情况应该会好一点
+5. 【优化】拖拽排序,比上个版本手感应该会好一点
+6. 【修复】修复在歌词页清空播放列表时白屏的问题
+
+`2022.11.20 v0.0.1-alpha.9`
+1. 【功能】本地音乐读取内嵌歌词
+2. 【功能】批量编辑页新增了凑合能用的拖拽排序
+3. 【功能】歌曲详情浮层新增凑合能用的定时关闭
+4. 【功能】添加到歌单时可以新建歌单
+5. 【功能】本地音乐扫描支持外置sd卡;支持导入aac格式
+6. 【优化】优化播放列表浮层拉起时的锚定
+7. 【修复】修复更新弹窗无法滚动的问题
+8. 【修复】修复安卓12状态栏概率不沉浸的问题
+9. 【修复】修复安卓12、13播一首就停的问题
+10. 【插件】示例插件有更新,可以删掉原有插件重新导入
+
+`2022.11.13 v0.0.1-alpha.8`
+1. 【功能】侧边栏插件设置新增“订阅插件”功能,订阅之后直接点击“更新插件”即可更新,不需要清空重装了
+2. 【功能】本地音乐读取内置封面
+3. 【功能】本地音乐歌单支持批量删除(不删除源文件)
+4. 【优化】重写导入本地音乐的逻辑,支持多选文件夹;修复部分机型重启应用时本地音乐消失的问题(可能需要删除后重新导入);支持导入flac,wav,wav,m4a,ogg等格式
+5. 【优化】重写播放列表浮层,拉起时会锚定到当前正在播放的歌曲
+6. 【优化】调整部分逻辑,可能会减少音频卡顿时卡死的情况
+7. 【修复】修复歌曲详情页进度条不连续的问题
+8. 【修复】修复某些情况下无法关联歌词的问题
+9. 【修复】修复正在播放的歌曲无歌词时,进入歌词页白屏的问题
+10. 【插件】示例插件有更新,可以删掉原有插件重新导入
+
+`2022.10.30 v0.0.1-alpha.7`
+1. 新增功能:历史记录一键清空
+2. 新增功能:歌手页、本地歌单页支持批量编辑
+3. 修复移动网络下无法播放本地音乐的问题
+4. 样式优化&修复:toast提示显示异常、侧边栏样式优化、歌单内序号显示不全、【关于】页无法滑动
+5. 之前使用的拖拽排序组件在列表较大时有很严重的性能问题,会导致卡顿甚至白屏,因此批量编辑页暂时去掉了拖拽排序,后续会重新加上
+
+`2022.10.22 v0.0.1-alpha.6`
+1. 重要!! v0.0.1-alpha.5以前的版本无法通过app正常更新,请在gitee/github发布页下载最新版本(v0.0.1-alpha.6),或QQ群自取;
+2. 导入本地音乐时,如果未识别本地音乐文件,则会使用文件名作为音乐名;
+3. 自建歌单、专辑详情页增加批量选择功能,可点击右上角查看(歌曲较多时可能有点卡,后续优化);使用方式:选中歌曲可进行下一首播放/加入歌单/下载/删除,长按拖动进行排序;删除/排序后点击保存按钮方可生效
+4. 调整歌单内歌曲编号字体大小;
+
+`2022.10.16 v0.0.1-alpha.5`
+1. 新增功能:导入本地音乐文件
+2. 从网络源安装的插件可在插件页直接更新
+3. 调整下载逻辑
+
+`2022.10.06 v0.0.1-alpha.4`
+1. 修复专辑详情页没有loading的问题
+2. 为插件新增Cookie管理器
+3. 优化播放页的显示
+4. 新增一键卸载全部插件的功能
+
+`2022.10.04 v0.0.1-alpha.3`
+1. 修复设置页无法滚动的问题
+2. 修复播放结束时可能暂停的问题
+
+`2022.10.03 v0.0.1-alpha.2`
+1. 插件协议更新,需要重新安装插件
+2. 支持批量导入插件
+3. 新增清空播放列表功能
+4. 优化搜索结果面板和播放专辑逻辑
+
+`2022.10.02`
+测试版本出现啦!撒花
diff --git a/generator/generate-assets.mjs b/generator/generate-assets.mjs
new file mode 100644
index 00000000..d5c8b7e5
--- /dev/null
+++ b/generator/generate-assets.mjs
@@ -0,0 +1,66 @@
+import fs from 'fs/promises';
+import path from 'path';
+import * as url from "node:url";
+
+
+function toCamelCase(str) {
+ // 将下划线和中划线统一替换为空格
+ let camelCaseStr = str.replace(/[-_]/g, ' ');
+
+ // 将每个单词的首字母大写,其余字母小写
+ camelCaseStr = camelCaseStr.split(' ').map(word => {
+ return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
+ }).join('');
+
+ return camelCaseStr;
+}
+
+// 读取所有的icon
+const basePath = path.resolve(url.fileURLToPath(import.meta.url), '../../src/assets/icons')
+
+// 读取所有的svg
+const icons = await fs.readdir(basePath)
+
+const assets = icons.map(it => ({
+ componentName: toCamelCase(it.slice(0, -path.extname(it).length)) + "Icon",
+ filePath: `@/assets/icons/${it}`,
+ name: it.slice(0, -path.extname(it).length)
+}))
+
+let scriptTemplate = `// This file is generated by generate-assets.mjs. DO NOT MODIFY.
+import {SvgProps} from 'react-native-svg';
+
+${assets.map(asset => `import ${asset.componentName} from '${asset.filePath}';`).join('\n')}
+
+export type IIconName = ${assets.map(asset => `'${asset.name}'`).join(' | ')};
+
+interface IProps extends SvgProps {
+ /** 图标名称 */
+ name: IIconName;
+ /** 图标大小 */
+ size?: number;
+}
+
+const iconMap = {
+${assets.map(asset => ` '${asset.name}': ${asset.componentName}`).join(',\n')}
+} as const;
+
+export default function Icon(props: IProps) {
+ const {name, size} = props;
+
+ const newProps = {
+ ...props,
+ width: props.width ?? size,
+ height: props.width ?? size
+ } as SvgProps;
+
+ const Component = iconMap[name];
+
+ return ;
+}
+`
+
+const targetPath = path.resolve(url.fileURLToPath(import.meta.url), '../../src/components/base/icon.tsx');
+await fs.writeFile(targetPath, scriptTemplate, 'utf8');
+
+console.log(`Generate Succeed. ${assets.length} assets.`)
\ No newline at end of file
diff --git a/index.js b/index.js
index 80e4a496..a97fbb76 100644
--- a/index.js
+++ b/index.js
@@ -3,9 +3,9 @@
*/
import {AppRegistry} from 'react-native';
-import Pages from './src/entry';
import {name as appName} from './app.json';
import TrackPlayer from 'react-native-track-player';
+import Pages from '@/entry';
AppRegistry.registerComponent(appName, () => Pages);
TrackPlayer.registerPlaybackService(() => require('./src/service/index'));
diff --git a/ios/MusicFree.xcodeproj/project.pbxproj b/ios/MusicFree.xcodeproj/project.pbxproj
index 194ce933..2c11377a 100644
--- a/ios/MusicFree.xcodeproj/project.pbxproj
+++ b/ios/MusicFree.xcodeproj/project.pbxproj
@@ -1,700 +1,688 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 54;
- objects = {
-
-/* Begin PBXBuildFile section */
- 00E356F31AD99517003FC87E /* MusicFreeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* MusicFreeTests.m */; };
- 0C80B921A6F3F58F76C31292 /* libPods-MusicFree.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-MusicFree.a */; };
- 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
- 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
- 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
- 7699B88040F8A987B510C191 /* libPods-MusicFree-MusicFreeTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-MusicFree-MusicFreeTests.a */; };
- 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
- remoteInfo = MusicFree;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 00E356EE1AD99517003FC87E /* MusicFreeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MusicFreeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
- 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- 00E356F21AD99517003FC87E /* MusicFreeTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MusicFreeTests.m; sourceTree = ""; };
- 13B07F961A680F5B00A75B9A /* MusicFree.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MusicFree.app; sourceTree = BUILT_PRODUCTS_DIR; };
- 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = MusicFree/AppDelegate.h; sourceTree = ""; };
- 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = MusicFree/AppDelegate.mm; sourceTree = ""; };
- 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = MusicFree/Images.xcassets; sourceTree = ""; };
- 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = MusicFree/Info.plist; sourceTree = ""; };
- 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = MusicFree/main.m; sourceTree = ""; };
- 19F6CBCC0A4E27FBF8BF4A61 /* libPods-MusicFree-MusicFreeTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-MusicFree-MusicFreeTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 3B4392A12AC88292D35C810B /* Pods-MusicFree.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MusicFree.debug.xcconfig"; path = "Target Support Files/Pods-MusicFree/Pods-MusicFree.debug.xcconfig"; sourceTree = ""; };
- 5709B34CF0A7D63546082F79 /* Pods-MusicFree.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MusicFree.release.xcconfig"; path = "Target Support Files/Pods-MusicFree/Pods-MusicFree.release.xcconfig"; sourceTree = ""; };
- 5B7EB9410499542E8C5724F5 /* Pods-MusicFree-MusicFreeTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MusicFree-MusicFreeTests.debug.xcconfig"; path = "Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests.debug.xcconfig"; sourceTree = ""; };
- 5DCACB8F33CDC322A6C60F78 /* libPods-MusicFree.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-MusicFree.a"; sourceTree = BUILT_PRODUCTS_DIR; };
- 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = MusicFree/LaunchScreen.storyboard; sourceTree = ""; };
- 89C6BE57DB24E9ADA2F236DE /* Pods-MusicFree-MusicFreeTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MusicFree-MusicFreeTests.release.xcconfig"; path = "Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests.release.xcconfig"; sourceTree = ""; };
- ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 00E356EB1AD99517003FC87E /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 7699B88040F8A987B510C191 /* libPods-MusicFree-MusicFreeTests.a in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 0C80B921A6F3F58F76C31292 /* libPods-MusicFree.a in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 00E356EF1AD99517003FC87E /* MusicFreeTests */ = {
- isa = PBXGroup;
- children = (
- 00E356F21AD99517003FC87E /* MusicFreeTests.m */,
- 00E356F01AD99517003FC87E /* Supporting Files */,
- );
- path = MusicFreeTests;
- sourceTree = "";
- };
- 00E356F01AD99517003FC87E /* Supporting Files */ = {
- isa = PBXGroup;
- children = (
- 00E356F11AD99517003FC87E /* Info.plist */,
- );
- name = "Supporting Files";
- sourceTree = "";
- };
- 13B07FAE1A68108700A75B9A /* MusicFree */ = {
- isa = PBXGroup;
- children = (
- 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
- 13B07FB01A68108700A75B9A /* AppDelegate.mm */,
- 13B07FB51A68108700A75B9A /* Images.xcassets */,
- 13B07FB61A68108700A75B9A /* Info.plist */,
- 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
- 13B07FB71A68108700A75B9A /* main.m */,
- );
- name = MusicFree;
- sourceTree = "";
- };
- 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
- 5DCACB8F33CDC322A6C60F78 /* libPods-MusicFree.a */,
- 19F6CBCC0A4E27FBF8BF4A61 /* libPods-MusicFree-MusicFreeTests.a */,
- );
- name = Frameworks;
- sourceTree = "";
- };
- 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
- isa = PBXGroup;
- children = (
- );
- name = Libraries;
- sourceTree = "";
- };
- 83CBB9F61A601CBA00E9B192 = {
- isa = PBXGroup;
- children = (
- 13B07FAE1A68108700A75B9A /* MusicFree */,
- 832341AE1AAA6A7D00B99B32 /* Libraries */,
- 00E356EF1AD99517003FC87E /* MusicFreeTests */,
- 83CBBA001A601CBA00E9B192 /* Products */,
- 2D16E6871FA4F8E400B85C8A /* Frameworks */,
- BBD78D7AC51CEA395F1C20DB /* Pods */,
- );
- indentWidth = 2;
- sourceTree = "";
- tabWidth = 2;
- usesTabs = 0;
- };
- 83CBBA001A601CBA00E9B192 /* Products */ = {
- isa = PBXGroup;
- children = (
- 13B07F961A680F5B00A75B9A /* MusicFree.app */,
- 00E356EE1AD99517003FC87E /* MusicFreeTests.xctest */,
- );
- name = Products;
- sourceTree = "";
- };
- BBD78D7AC51CEA395F1C20DB /* Pods */ = {
- isa = PBXGroup;
- children = (
- 3B4392A12AC88292D35C810B /* Pods-MusicFree.debug.xcconfig */,
- 5709B34CF0A7D63546082F79 /* Pods-MusicFree.release.xcconfig */,
- 5B7EB9410499542E8C5724F5 /* Pods-MusicFree-MusicFreeTests.debug.xcconfig */,
- 89C6BE57DB24E9ADA2F236DE /* Pods-MusicFree-MusicFreeTests.release.xcconfig */,
- );
- path = Pods;
- sourceTree = "";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 00E356ED1AD99517003FC87E /* MusicFreeTests */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "MusicFreeTests" */;
- buildPhases = (
- A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */,
- 00E356EA1AD99517003FC87E /* Sources */,
- 00E356EB1AD99517003FC87E /* Frameworks */,
- 00E356EC1AD99517003FC87E /* Resources */,
- C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */,
- F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */,
- );
- buildRules = (
- );
- dependencies = (
- 00E356F51AD99517003FC87E /* PBXTargetDependency */,
- );
- name = MusicFreeTests;
- productName = MusicFreeTests;
- productReference = 00E356EE1AD99517003FC87E /* MusicFreeTests.xctest */;
- productType = "com.apple.product-type.bundle.unit-test";
- };
- 13B07F861A680F5B00A75B9A /* MusicFree */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "MusicFree" */;
- buildPhases = (
- C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
- FD10A7F022414F080027D42C /* Start Packager */,
- 13B07F871A680F5B00A75B9A /* Sources */,
- 13B07F8C1A680F5B00A75B9A /* Frameworks */,
- 13B07F8E1A680F5B00A75B9A /* Resources */,
- 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
- 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
- E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = MusicFree;
- productName = MusicFree;
- productReference = 13B07F961A680F5B00A75B9A /* MusicFree.app */;
- productType = "com.apple.product-type.application";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 83CBB9F71A601CBA00E9B192 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- LastUpgradeCheck = 1210;
- TargetAttributes = {
- 00E356ED1AD99517003FC87E = {
- CreatedOnToolsVersion = 6.2;
- TestTargetID = 13B07F861A680F5B00A75B9A;
- };
- 13B07F861A680F5B00A75B9A = {
- LastSwiftMigration = 1120;
- };
- };
- };
- buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "MusicFree" */;
- compatibilityVersion = "Xcode 12.0";
- developmentRegion = en;
- hasScannedForEncodings = 0;
- knownRegions = (
- en,
- Base,
- );
- mainGroup = 83CBB9F61A601CBA00E9B192;
- productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 13B07F861A680F5B00A75B9A /* MusicFree */,
- 00E356ED1AD99517003FC87E /* MusicFreeTests */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 00E356EC1AD99517003FC87E /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 13B07F8E1A680F5B00A75B9A /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
- 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "$(SRCROOT)/.xcode.env.local",
- "$(SRCROOT)/.xcode.env",
- );
- name = "Bundle React Native code and images";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "set -e\n\nWITH_ENVIRONMENT=\"../node_modules/react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../node_modules/react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n";
- };
- 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-frameworks-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Embed Pods Frameworks";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-frameworks-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-frameworks.sh\"\n";
- showEnvVarsInLog = 0;
- };
- A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-MusicFree-MusicFreeTests-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
- C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-MusicFree-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
- C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Embed Pods Frameworks";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-frameworks.sh\"\n";
- showEnvVarsInLog = 0;
- };
- E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-resources-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Copy Pods Resources";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-resources-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-resources.sh\"\n";
- showEnvVarsInLog = 0;
- };
- F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-resources-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Copy Pods Resources";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-resources-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-resources.sh\"\n";
- showEnvVarsInLog = 0;
- };
- FD10A7F022414F080027D42C /* Start Packager */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- );
- name = "Start Packager";
- outputFileListPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
- showEnvVarsInLog = 0;
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 00E356EA1AD99517003FC87E /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 00E356F31AD99517003FC87E /* MusicFreeTests.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 13B07F871A680F5B00A75B9A /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
- 13B07FC11A68108700A75B9A /* main.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- 00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 13B07F861A680F5B00A75B9A /* MusicFree */;
- targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 00E356F61AD99517003FC87E /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-MusicFree-MusicFreeTests.debug.xcconfig */;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- INFOPLIST_FILE = MusicFreeTests/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 12.4;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- "@loader_path/Frameworks",
- );
- OTHER_LDFLAGS = (
- "-ObjC",
- "-lc++",
- "$(inherited)",
- );
- PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
- PRODUCT_NAME = "$(TARGET_NAME)";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MusicFree.app/MusicFree";
- };
- name = Debug;
- };
- 00E356F71AD99517003FC87E /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-MusicFree-MusicFreeTests.release.xcconfig */;
- buildSettings = {
- BUNDLE_LOADER = "$(TEST_HOST)";
- COPY_PHASE_STRIP = NO;
- INFOPLIST_FILE = MusicFreeTests/Info.plist;
- IPHONEOS_DEPLOYMENT_TARGET = 12.4;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- "@loader_path/Frameworks",
- );
- OTHER_LDFLAGS = (
- "-ObjC",
- "-lc++",
- "$(inherited)",
- );
- PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
- PRODUCT_NAME = "$(TARGET_NAME)";
- TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MusicFree.app/MusicFree";
- };
- name = Release;
- };
- 13B07F941A680F5B00A75B9A /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-MusicFree.debug.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 1;
- ENABLE_BITCODE = NO;
- INFOPLIST_FILE = MusicFree/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- OTHER_LDFLAGS = (
- "$(inherited)",
- "-ObjC",
- "-lc++",
- );
- PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
- PRODUCT_NAME = MusicFree;
- SWIFT_OPTIMIZATION_LEVEL = "-Onone";
- SWIFT_VERSION = 5.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Debug;
- };
- 13B07F951A680F5B00A75B9A /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-MusicFree.release.xcconfig */;
- buildSettings = {
- ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
- CLANG_ENABLE_MODULES = YES;
- CURRENT_PROJECT_VERSION = 1;
- INFOPLIST_FILE = MusicFree/Info.plist;
- LD_RUNPATH_SEARCH_PATHS = (
- "$(inherited)",
- "@executable_path/Frameworks",
- );
- OTHER_LDFLAGS = (
- "$(inherited)",
- "-ObjC",
- "-lc++",
- );
- PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
- PRODUCT_NAME = MusicFree;
- SWIFT_VERSION = 5.0;
- VERSIONING_SYSTEM = "apple-generic";
- };
- name = Release;
- };
- 83CBBA201A601CBA00E9B192 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "c++17";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- ENABLE_TESTABILITY = YES;
- "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_DYNAMIC_NO_PIC = NO;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_OPTIMIZATION_LEVEL = 0;
- GCC_PREPROCESSOR_DEFINITIONS = (
- "DEBUG=1",
- "$(inherited)",
- );
- GCC_SYMBOLS_PRIVATE_EXTERN = NO;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.4;
- LD_RUNPATH_SEARCH_PATHS = (
- /usr/lib/swift,
- "$(inherited)",
- );
- LIBRARY_SEARCH_PATHS = (
- "\"$(SDKROOT)/usr/lib/swift\"",
- "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
- "\"$(inherited)\"",
- );
- MTL_ENABLE_DEBUG_INFO = YES;
- ONLY_ACTIVE_ARCH = YES;
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "-DFOLLY_NO_CONFIG",
- "-DFOLLY_MOBILE=1",
- "-DFOLLY_USE_LIBCPP=1",
- );
- SDKROOT = iphoneos;
- };
- name = Debug;
- };
- 83CBBA211A601CBA00E9B192 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- ALWAYS_SEARCH_USER_PATHS = NO;
- CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
- CLANG_CXX_LANGUAGE_STANDARD = "c++17";
- CLANG_CXX_LIBRARY = "libc++";
- CLANG_ENABLE_MODULES = YES;
- CLANG_ENABLE_OBJC_ARC = YES;
- CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
- CLANG_WARN_BOOL_CONVERSION = YES;
- CLANG_WARN_COMMA = YES;
- CLANG_WARN_CONSTANT_CONVERSION = YES;
- CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
- CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
- CLANG_WARN_EMPTY_BODY = YES;
- CLANG_WARN_ENUM_CONVERSION = YES;
- CLANG_WARN_INFINITE_RECURSION = YES;
- CLANG_WARN_INT_CONVERSION = YES;
- CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
- CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
- CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
- CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
- CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
- CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
- CLANG_WARN_STRICT_PROTOTYPES = YES;
- CLANG_WARN_SUSPICIOUS_MOVE = YES;
- CLANG_WARN_UNREACHABLE_CODE = YES;
- CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
- COPY_PHASE_STRIP = YES;
- ENABLE_NS_ASSERTIONS = NO;
- ENABLE_STRICT_OBJC_MSGSEND = YES;
- "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
- GCC_C_LANGUAGE_STANDARD = gnu99;
- GCC_NO_COMMON_BLOCKS = YES;
- GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
- GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
- GCC_WARN_UNDECLARED_SELECTOR = YES;
- GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
- GCC_WARN_UNUSED_FUNCTION = YES;
- GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.4;
- LD_RUNPATH_SEARCH_PATHS = (
- /usr/lib/swift,
- "$(inherited)",
- );
- LIBRARY_SEARCH_PATHS = (
- "\"$(SDKROOT)/usr/lib/swift\"",
- "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
- "\"$(inherited)\"",
- );
- MTL_ENABLE_DEBUG_INFO = NO;
- OTHER_CPLUSPLUSFLAGS = (
- "$(OTHER_CFLAGS)",
- "-DFOLLY_NO_CONFIG",
- "-DFOLLY_MOBILE=1",
- "-DFOLLY_USE_LIBCPP=1",
- );
- SDKROOT = iphoneos;
- VALIDATE_PRODUCT = YES;
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "MusicFreeTests" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 00E356F61AD99517003FC87E /* Debug */,
- 00E356F71AD99517003FC87E /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "MusicFree" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 13B07F941A680F5B00A75B9A /* Debug */,
- 13B07F951A680F5B00A75B9A /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "MusicFree" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 83CBBA201A601CBA00E9B192 /* Debug */,
- 83CBBA211A601CBA00E9B192 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
-}
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 54;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 00E356F31AD99517003FC87E /* MusicFreeTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* MusicFreeTests.m */; };
+ 0C80B921A6F3F58F76C31292 /* libPods-MusicFree.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-MusicFree.a */; };
+ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
+ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
+ 7699B88040F8A987B510C191 /* libPods-MusicFree-MusicFreeTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-MusicFree-MusicFreeTests.a */; };
+ 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 83CBB9F71A601CBA00E9B192;
+ proxyType = 1;
+ remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
+ remoteInfo = MusicFree;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 00E356EE1AD99517003FC87E /* MusicFreeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MusicFreeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+ 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ 00E356F21AD99517003FC87E /* MusicFreeTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MusicFreeTests.m; sourceTree = ""; };
+ 13B07F961A680F5B00A75B9A /* MusicFree.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MusicFree.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = MusicFree/AppDelegate.h; sourceTree = ""; };
+ 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = MusicFree/AppDelegate.mm; sourceTree = ""; };
+ 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = MusicFree/Images.xcassets; sourceTree = ""; };
+ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = MusicFree/Info.plist; sourceTree = ""; };
+ 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = MusicFree/main.m; sourceTree = ""; };
+ 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = MusicFree/PrivacyInfo.xcprivacy; sourceTree = ""; };
+ 19F6CBCC0A4E27FBF8BF4A61 /* libPods-MusicFree-MusicFreeTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-MusicFree-MusicFreeTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 3B4392A12AC88292D35C810B /* Pods-MusicFree.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MusicFree.debug.xcconfig"; path = "Target Support Files/Pods-MusicFree/Pods-MusicFree.debug.xcconfig"; sourceTree = ""; };
+ 5709B34CF0A7D63546082F79 /* Pods-MusicFree.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MusicFree.release.xcconfig"; path = "Target Support Files/Pods-MusicFree/Pods-MusicFree.release.xcconfig"; sourceTree = ""; };
+ 5B7EB9410499542E8C5724F5 /* Pods-MusicFree-MusicFreeTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MusicFree-MusicFreeTests.debug.xcconfig"; path = "Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests.debug.xcconfig"; sourceTree = ""; };
+ 5DCACB8F33CDC322A6C60F78 /* libPods-MusicFree.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-MusicFree.a"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = MusicFree/LaunchScreen.storyboard; sourceTree = ""; };
+ 89C6BE57DB24E9ADA2F236DE /* Pods-MusicFree-MusicFreeTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MusicFree-MusicFreeTests.release.xcconfig"; path = "Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests.release.xcconfig"; sourceTree = ""; };
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 00E356EB1AD99517003FC87E /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 7699B88040F8A987B510C191 /* libPods-MusicFree-MusicFreeTests.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 0C80B921A6F3F58F76C31292 /* libPods-MusicFree.a in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 00E356EF1AD99517003FC87E /* MusicFreeTests */ = {
+ isa = PBXGroup;
+ children = (
+ 00E356F21AD99517003FC87E /* MusicFreeTests.m */,
+ 00E356F01AD99517003FC87E /* Supporting Files */,
+ );
+ path = MusicFreeTests;
+ sourceTree = "";
+ };
+ 00E356F01AD99517003FC87E /* Supporting Files */ = {
+ isa = PBXGroup;
+ children = (
+ 00E356F11AD99517003FC87E /* Info.plist */,
+ );
+ name = "Supporting Files";
+ sourceTree = "";
+ };
+ 13B07FAE1A68108700A75B9A /* MusicFree */ = {
+ isa = PBXGroup;
+ children = (
+ 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
+ 13B07FB01A68108700A75B9A /* AppDelegate.mm */,
+ 13B07FB51A68108700A75B9A /* Images.xcassets */,
+ 13B07FB61A68108700A75B9A /* Info.plist */,
+ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */,
+ 13B07FB71A68108700A75B9A /* main.m */,
+ 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */,
+ );
+ name = MusicFree;
+ sourceTree = "";
+ };
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
+ 5DCACB8F33CDC322A6C60F78 /* libPods-MusicFree.a */,
+ 19F6CBCC0A4E27FBF8BF4A61 /* libPods-MusicFree-MusicFreeTests.a */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ name = Libraries;
+ sourceTree = "";
+ };
+ 83CBB9F61A601CBA00E9B192 /* PBXGroup */ = {
+ isa = PBXGroup;
+ children = (
+ 13B07FAE1A68108700A75B9A /* MusicFree */,
+ 832341AE1AAA6A7D00B99B32 /* Libraries */,
+ 00E356EF1AD99517003FC87E /* MusicFreeTests */,
+ 83CBBA001A601CBA00E9B192 /* Products */,
+ 2D16E6871FA4F8E400B85C8A /* Frameworks */,
+ BBD78D7AC51CEA395F1C20DB /* Pods */,
+ );
+ indentWidth = 2;
+ sourceTree = "";
+ tabWidth = 2;
+ usesTabs = 0;
+ };
+ 83CBBA001A601CBA00E9B192 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 13B07F961A680F5B00A75B9A /* MusicFree.app */,
+ 00E356EE1AD99517003FC87E /* MusicFreeTests.xctest */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ BBD78D7AC51CEA395F1C20DB /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 3B4392A12AC88292D35C810B /* Pods-MusicFree.debug.xcconfig */,
+ 5709B34CF0A7D63546082F79 /* Pods-MusicFree.release.xcconfig */,
+ 5B7EB9410499542E8C5724F5 /* Pods-MusicFree-MusicFreeTests.debug.xcconfig */,
+ 89C6BE57DB24E9ADA2F236DE /* Pods-MusicFree-MusicFreeTests.release.xcconfig */,
+ );
+ path = Pods;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 00E356ED1AD99517003FC87E /* MusicFreeTests */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "MusicFreeTests" */;
+ buildPhases = (
+ A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */,
+ 00E356EA1AD99517003FC87E /* Sources */,
+ 00E356EB1AD99517003FC87E /* Frameworks */,
+ 00E356EC1AD99517003FC87E /* Resources */,
+ C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */,
+ F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ 00E356F51AD99517003FC87E /* PBXTargetDependency */,
+ );
+ name = MusicFreeTests;
+ productName = MusicFreeTests;
+ productReference = 00E356EE1AD99517003FC87E /* MusicFreeTests.xctest */;
+ productType = "com.apple.product-type.bundle.unit-test";
+ };
+ 13B07F861A680F5B00A75B9A /* MusicFree */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "MusicFree" */;
+ buildPhases = (
+ C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */,
+ 13B07F871A680F5B00A75B9A /* Sources */,
+ 13B07F8C1A680F5B00A75B9A /* Frameworks */,
+ 13B07F8E1A680F5B00A75B9A /* Resources */,
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
+ 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */,
+ E235C05ADACE081382539298 /* [CP] Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = MusicFree;
+ productName = MusicFree;
+ productReference = 13B07F961A680F5B00A75B9A /* MusicFree.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 83CBB9F71A601CBA00E9B192 = {
+ isa = PBXProject;
+ attributes = {
+ LastUpgradeCheck = 1210;
+ TargetAttributes = {
+ 00E356ED1AD99517003FC87E = {
+ CreatedOnToolsVersion = 6.2;
+ TestTargetID = 13B07F861A680F5B00A75B9A /* MusicFree */;
+ };
+ 13B07F861A680F5B00A75B9A = {
+ LastSwiftMigration = 1120;
+ };
+ };
+ };
+ buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "MusicFree" */;
+ compatibilityVersion = "Xcode 12.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = 83CBB9F61A601CBA00E9B192 /* PBXGroup */;
+ productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ 13B07F861A680F5B00A75B9A /* MusicFree */,
+ 00E356ED1AD99517003FC87E /* MusicFreeTests */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ 00E356EC1AD99517003FC87E /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 13B07F8E1A680F5B00A75B9A /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */,
+ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "$(SRCROOT)/.xcode.env.local",
+ "$(SRCROOT)/.xcode.env",
+ );
+ name = "Bundle React Native code and images";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios absolute | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli')\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n";
+ };
+ 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-MusicFree-MusicFreeTests-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-MusicFree-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MusicFree/Pods-MusicFree-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-MusicFree-MusicFreeTests/Pods-MusicFree-MusicFreeTests-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 00E356EA1AD99517003FC87E /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 00E356F31AD99517003FC87E /* MusicFreeTests.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 13B07F871A680F5B00A75B9A /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
+ 13B07FC11A68108700A75B9A /* main.m in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 13B07F861A680F5B00A75B9A /* MusicFree */;
+ targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 00E356F61AD99517003FC87E /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-MusicFree-MusicFreeTests.debug.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ INFOPLIST_FILE = MusicFreeTests/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "-lc++",
+ "$(inherited)",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MusicFree.app/MusicFree";
+ };
+ name = Debug;
+ };
+ 00E356F71AD99517003FC87E /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-MusicFree-MusicFreeTests.release.xcconfig */;
+ buildSettings = {
+ BUNDLE_LOADER = "$(TEST_HOST)";
+ COPY_PHASE_STRIP = NO;
+ INFOPLIST_FILE = MusicFreeTests/Info.plist;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "-lc++",
+ "$(inherited)",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MusicFree.app/MusicFree";
+ };
+ name = Release;
+ };
+ 13B07F941A680F5B00A75B9A /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-MusicFree.debug.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = 1;
+ ENABLE_BITCODE = NO;
+ INFOPLIST_FILE = MusicFree/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_NAME = MusicFree;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Debug;
+ };
+ 13B07F951A680F5B00A75B9A /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-MusicFree.release.xcconfig */;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CURRENT_PROJECT_VERSION = 1;
+ INFOPLIST_FILE = MusicFree/Info.plist;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ OTHER_LDFLAGS = (
+ "$(inherited)",
+ "-ObjC",
+ "-lc++",
+ );
+ PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
+ PRODUCT_NAME = MusicFree;
+ SWIFT_VERSION = 5.0;
+ VERSIONING_SYSTEM = "apple-generic";
+ };
+ name = Release;
+ };
+ 83CBBA201A601CBA00E9B192 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++20";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ /usr/lib/swift,
+ "$(inherited)",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "\"$(SDKROOT)/usr/lib/swift\"",
+ "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
+ "\"$(inherited)\"",
+ );
+ MTL_ENABLE_DEBUG_INFO = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ OTHER_CPLUSPLUSFLAGS = (
+ "$(OTHER_CFLAGS)",
+ "-DFOLLY_NO_CONFIG",
+ "-DFOLLY_MOBILE=1",
+ "-DFOLLY_USE_LIBCPP=1",
+ "-DFOLLY_CFG_NO_COROUTINES=1",
+ "-DFOLLY_HAVE_CLOCK_GETTIME=1",
+ );
+ SDKROOT = iphoneos;
+ };
+ name = Debug;
+ };
+ 83CBBA211A601CBA00E9B192 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
+ CLANG_CXX_LANGUAGE_STANDARD = "c++20";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+ COPY_PHASE_STRIP = YES;
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
+ GCC_C_LANGUAGE_STANDARD = gnu99;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.4;
+ LD_RUNPATH_SEARCH_PATHS = (
+ /usr/lib/swift,
+ "$(inherited)",
+ );
+ LIBRARY_SEARCH_PATHS = (
+ "\"$(SDKROOT)/usr/lib/swift\"",
+ "\"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)\"",
+ "\"$(inherited)\"",
+ );
+ MTL_ENABLE_DEBUG_INFO = NO;
+ OTHER_CPLUSPLUSFLAGS = (
+ "$(OTHER_CFLAGS)",
+ "-DFOLLY_NO_CONFIG",
+ "-DFOLLY_MOBILE=1",
+ "-DFOLLY_USE_LIBCPP=1",
+ "-DFOLLY_CFG_NO_COROUTINES=1",
+ "-DFOLLY_HAVE_CLOCK_GETTIME=1",
+ );
+ SDKROOT = iphoneos;
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "MusicFreeTests" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 00E356F61AD99517003FC87E /* Debug */,
+ 00E356F71AD99517003FC87E /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "MusicFree" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 13B07F941A680F5B00A75B9A /* Debug */,
+ 13B07F951A680F5B00A75B9A /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "MusicFree" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 83CBBA201A601CBA00E9B192 /* Debug */,
+ 83CBBA211A601CBA00E9B192 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 83CBB9F71A601CBA00E9B192;
+}
diff --git a/ios/MusicFree.xcodeproj/xcshareddata/xcschemes/MusicFree.xcscheme b/ios/MusicFree.xcodeproj/xcshareddata/xcschemes/MusicFreeNew.xcscheme
similarity index 100%
rename from ios/MusicFree.xcodeproj/xcshareddata/xcschemes/MusicFree.xcscheme
rename to ios/MusicFree.xcodeproj/xcshareddata/xcschemes/MusicFreeNew.xcscheme
diff --git a/ios/MusicFree/AppDelegate.h b/ios/MusicFree/AppDelegate.h
index ef1de86a..8c4dd302 100644
--- a/ios/MusicFree/AppDelegate.h
+++ b/ios/MusicFree/AppDelegate.h
@@ -1,8 +1,7 @@
-#import
-#import
-
-@interface AppDelegate : UIResponder
-
-@property (nonatomic, strong) UIWindow *window;
-
-@end
+#import
+#import
+#import
+
+@interface AppDelegate : EXAppDelegateWrapper
+
+@end
diff --git a/ios/MusicFree/AppDelegate.mm b/ios/MusicFree/AppDelegate.mm
index 0ffbfdf0..8296ad98 100644
--- a/ios/MusicFree/AppDelegate.mm
+++ b/ios/MusicFree/AppDelegate.mm
@@ -1,133 +1,31 @@
-#import "AppDelegate.h"
-
-#import
-#import
-#import
-
-#import
-
-#if RCT_NEW_ARCH_ENABLED
-#import
-#import
-#import
-#import
-#import
-#import
-
-#import
-
-static NSString *const kRNConcurrentRoot = @"concurrentRoot";
-
-@interface AppDelegate () {
- RCTTurboModuleManager *_turboModuleManager;
- RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;
- std::shared_ptr _reactNativeConfig;
- facebook::react::ContextContainer::Shared _contextContainer;
-}
-@end
-#endif
-
-@implementation AppDelegate
-
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
-{
- RCTAppSetupPrepareApp(application);
-
- RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
-
-#if RCT_NEW_ARCH_ENABLED
- _contextContainer = std::make_shared();
- _reactNativeConfig = std::make_shared();
- _contextContainer->insert("ReactNativeConfig", _reactNativeConfig);
- _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer];
- bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;
-#endif
-
- NSDictionary *initProps = [self prepareInitialProps];
- UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"MusicFree", initProps);
-
- if (@available(iOS 13.0, *)) {
- rootView.backgroundColor = [UIColor systemBackgroundColor];
- } else {
- rootView.backgroundColor = [UIColor whiteColor];
- }
-
- self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
- UIViewController *rootViewController = [UIViewController new];
- rootViewController.view = rootView;
- self.window.rootViewController = rootViewController;
- [self.window makeKeyAndVisible];
- return YES;
-}
-
-/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.
-///
-/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html
-/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).
-/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`.
-- (BOOL)concurrentRootEnabled
-{
- // Switch this bool to turn on and off the concurrent root
- return true;
-}
-
-- (NSDictionary *)prepareInitialProps
-{
- NSMutableDictionary *initProps = [NSMutableDictionary new];
-
-#ifdef RCT_NEW_ARCH_ENABLED
- initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]);
-#endif
-
- return initProps;
-}
-
-- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
-{
-#if DEBUG
- return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
-#else
- return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
-#endif
-}
-
-#if RCT_NEW_ARCH_ENABLED
-
-#pragma mark - RCTCxxBridgeDelegate
-
-- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge
-{
- _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge
- delegate:self
- jsInvoker:bridge.jsCallInvoker];
- return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);
-}
-
-#pragma mark RCTTurboModuleManagerDelegate
-
-- (Class)getModuleClassFromName:(const char *)name
-{
- return RCTCoreModulesClassProvider(name);
-}
-
-- (std::shared_ptr)getTurboModule:(const std::string &)name
- jsInvoker:(std::shared_ptr)jsInvoker
-{
- return nullptr;
-}
-
-- (std::shared_ptr)getTurboModule:(const std::string &)name
- initParams:
- (const facebook::react::ObjCTurboModule::InitParams &)params
-{
- return nullptr;
-}
-
-- (id)getModuleInstanceFromClass:(Class)moduleClass
-{
- return RCTAppSetupDefaultModuleFromClass(moduleClass);
-}
-
-#endif
-
-@end
+#import "AppDelegate.h"
+
+#import
+
+@implementation AppDelegate
+
+- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
+{
+ self.moduleName = @"MusicFree";
+ // You can add your custom initial props in the dictionary below.
+ // They will be passed down to the ViewController used by React Native.
+ self.initialProps = @{};
+
+ return [super application:application didFinishLaunchingWithOptions:launchOptions];
+}
+
+- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
+{
+ return [self bundleURL];
+}
+
+- (NSURL *)bundleURL
+{
+#if DEBUG
+ return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@".expo/.virtual-metro-entry"];
+#else
+ return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
+#endif
+}
+
+@end
diff --git a/ios/MusicFree/BootSplash.storyboard b/ios/MusicFree/BootSplash.storyboard
deleted file mode 100644
index 1a6b2b9b..00000000
--- a/ios/MusicFree/BootSplash.storyboard
+++ /dev/null
@@ -1,45 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/Contents.json b/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/Contents.json
deleted file mode 100644
index 570652df..00000000
--- a/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/Contents.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "images": [
- {
- "idiom": "universal",
- "filename": "bootsplash_logo.png",
- "scale": "1x"
- },
- {
- "idiom": "universal",
- "filename": "bootsplash_logo@2x.png",
- "scale": "2x"
- },
- {
- "idiom": "universal",
- "filename": "bootsplash_logo@3x.png",
- "scale": "3x"
- }
- ],
- "info": {
- "version": 1,
- "author": "xcode"
- }
-}
diff --git a/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo.png b/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo.png
deleted file mode 100644
index 5c5ab2d4..00000000
Binary files a/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo.png and /dev/null differ
diff --git a/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@2x.png b/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@2x.png
deleted file mode 100644
index 0a0fd56a..00000000
Binary files a/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@2x.png and /dev/null differ
diff --git a/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@3x.png b/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@3x.png
deleted file mode 100644
index b26292bf..00000000
Binary files a/ios/MusicFree/Images.xcassets/BootSplashLogo.imageset/bootsplash_logo@3x.png and /dev/null differ
diff --git a/ios/MusicFree/Info.plist b/ios/MusicFree/Info.plist
index 44d4ab6b..f5f29a36 100644
--- a/ios/MusicFree/Info.plist
+++ b/ios/MusicFree/Info.plist
@@ -17,23 +17,20 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 1.0
+ $(MARKETING_VERSION)
CFBundleSignature
????
CFBundleVersion
- 1
+ $(CURRENT_PROJECT_VERSION)
LSRequiresIPhoneOS
NSAppTransportSecurity
- NSExceptionDomains
-
- localhost
-
- NSExceptionAllowsInsecureHTTPLoads
-
-
-
+
+ NSAllowsArbitraryLoads
+
+ NSAllowsLocalNetworking
+
NSLocationWhenInUseUsageDescription
@@ -41,7 +38,7 @@
LaunchScreen
UIRequiredDeviceCapabilities
- armv7
+ arm64
UISupportedInterfaceOrientations
diff --git a/ios/MusicFree/PrivacyInfo.xcprivacy b/ios/MusicFree/PrivacyInfo.xcprivacy
new file mode 100644
index 00000000..ef1896e7
--- /dev/null
+++ b/ios/MusicFree/PrivacyInfo.xcprivacy
@@ -0,0 +1,38 @@
+
+
+
+
+ NSPrivacyCollectedDataTypes
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryFileTimestamp
+ NSPrivacyAccessedAPITypeReasons
+
+ C617.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryUserDefaults
+ NSPrivacyAccessedAPITypeReasons
+
+ CA92.1
+
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategorySystemBootTime
+ NSPrivacyAccessedAPITypeReasons
+
+ 35F9.1
+
+
+
+ NSPrivacyTracking
+
+
+
diff --git a/ios/MusicFreeTests/MusicFreeTests.m b/ios/MusicFreeTests/MusicFreeNewTests.m
similarity index 100%
rename from ios/MusicFreeTests/MusicFreeTests.m
rename to ios/MusicFreeTests/MusicFreeNewTests.m
diff --git a/ios/Podfile b/ios/Podfile
index 6147b43c..ff901270 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -1,37 +1,49 @@
-require_relative '../node_modules/react-native/scripts/react_native_pods'
-require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
-
-platform :ios, '12.4'
-install! 'cocoapods', :deterministic_uuids => false
-
-target 'MusicFree' do
- config = use_native_modules!
-
- # Flags change depending on the env values.
- flags = get_default_flags()
-
- use_react_native!(
- :path => config[:reactNativePath],
- # to enable hermes on iOS, change `false` to `true` and then install pods
- :hermes_enabled => flags[:hermes_enabled],
- :fabric_enabled => flags[:fabric_enabled],
- # An absolute path to your application root.
- :app_path => "#{Pod::Config.instance.installation_root}/.."
- )
-
- target 'MusicFreeTests' do
- inherit! :complete
- # Pods for testing
- end
-
- # Enables Flipper.
- #
- # Note that if you have use_frameworks! enabled, Flipper will not work and
- # you should disable the next line.
- use_flipper!()
-
- post_install do |installer|
- react_native_post_install(installer)
- __apply_Xcode_12_5_M1_post_install_workaround(installer)
- end
-end
+require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
+# Resolve react_native_pods.rb with node to allow for hoisting
+require Pod::Executable.execute_command('node', ['-p',
+ 'require.resolve(
+ "react-native/scripts/react_native_pods.rb",
+ {paths: [process.argv[1]]},
+ )', __dir__]).strip
+
+platform :ios, min_ios_version_supported
+prepare_react_native_project!
+
+linkage = ENV['USE_FRAMEWORKS']
+if linkage != nil
+ Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
+ use_frameworks! :linkage => linkage.to_sym
+end
+
+target 'MusicFree' do
+ use_expo_modules!
+ post_integrate do |installer|
+ begin
+ expo_patch_react_imports!(installer)
+ rescue => e
+ Pod::UI.warn e
+ end
+ end
+ config = use_native_modules!
+
+ use_react_native!(
+ :path => config[:reactNativePath],
+ # An absolute path to your application root.
+ :app_path => "#{Pod::Config.instance.installation_root}/.."
+ )
+
+ target 'MusicFreeTests' do
+ inherit! :complete
+ # Pods for testing
+ end
+
+ post_install do |installer|
+ # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
+ react_native_post_install(
+ installer,
+ config[:reactNativePath],
+ :mac_catalyst_enabled => false,
+ # :ccache_enabled => true
+ )
+ end
+end
diff --git a/jest.config.js b/jest.config.js
new file mode 100644
index 00000000..bae0df3d
--- /dev/null
+++ b/jest.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ preset: 'react-native',
+};
diff --git a/metro.config.js b/metro.config.js
index 022f21a1..44d28d4d 100644
--- a/metro.config.js
+++ b/metro.config.js
@@ -1,31 +1,25 @@
+const {getDefaultConfig} = require('expo/metro-config');
+const {mergeConfig} = require('@react-native/metro-config');
+
+/**
+ * Reference: https://github.com/software-mansion/react-native-svg/blob/main/USAGE.md
+ */
+const defaultConfig = getDefaultConfig(__dirname);
+const {assetExts, sourceExts} = defaultConfig.resolver;
/**
- * Metro configuration for React Native
- * https://github.com/facebook/react-native
+ * Metro configuration
+ * https://reactnative.dev/docs/metro
*
- * @format
+ * @type {import('metro-config').MetroConfig}
*/
+const config = {
+ transformer: {
+ babelTransformerPath: require.resolve('react-native-svg-transformer'),
+ },
+ resolver: {
+ assetExts: assetExts.filter(ext => ext !== 'svg'),
+ sourceExts: [...sourceExts, 'svg'],
+ },
+};
-const {getDefaultConfig} = require('metro-config');
-
-module.exports = (async () => {
- const {
- resolver: {sourceExts, assetExts},
- } = await getDefaultConfig();
- return {
- transformer: {
- babelTransformerPath: require.resolve(
- 'react-native-svg-transformer',
- ),
- getTransformOptions: async () => ({
- transform: {
- experimentalImportSupport: false,
- inlineRequires: true,
- },
- }),
- },
- resolver: {
- assetExts: assetExts.filter(ext => ext !== 'svg'),
- sourceExts: [...sourceExts, 'svg'],
- },
- };
-})();
+module.exports = mergeConfig(getDefaultConfig(__dirname), config);
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 1afafbd5..00000000
--- a/package-lock.json
+++ /dev/null
@@ -1,22194 +0,0 @@
-{
- "name": "MusicFree",
- "version": "0.3.0",
- "lockfileVersion": 3,
- "requires": true,
- "packages": {
- "": {
- "name": "MusicFree",
- "version": "0.3.0",
- "license": "GPL",
- "dependencies": {
- "@react-native-async-storage/async-storage": "^1.17.7",
- "@react-native-clipboard/clipboard": "^1.11.2",
- "@react-native-community/netinfo": "^9.4.1",
- "@react-native-community/slider": "^4.2.4",
- "@react-native-cookies/cookies": "^6.2.1",
- "@react-native-masked-view/masked-view": "^0.2.9",
- "@react-navigation/drawer": "^6.7.2",
- "@react-navigation/native": "^6.1.18",
- "@react-navigation/native-stack": "^6.10.1",
- "@sayem314/react-native-keep-awake": "^1.2.2",
- "@shopify/flash-list": "^1.7.0",
- "axios": "^0.27.2",
- "big-integer": "^1.6.51",
- "cheerio": "^1.0.0-rc.12",
- "color": "^4.2.3",
- "compare-versions": "^6.1.0",
- "crypto-js": "^4.1.1",
- "dayjs": "^1.11.12",
- "deepmerge": "^4.3.1",
- "he": "^1.2.0",
- "immer": "^9.0.15",
- "jotai": "^2.7.0",
- "lodash.shuffle": "^4.2.0",
- "lru-cache": "^7.14.0",
- "nanoid": "^4.0.2",
- "object-path": "^0.11.8",
- "p-queue": "^7.4.1",
- "path-browserify": "^1.0.1",
- "qrcode-generator": "^1.4.4",
- "qs": "^6.12.3",
- "react": "18.0.0",
- "react-native": "0.69.12",
- "react-native-background-timer": "^2.4.1",
- "react-native-bootsplash": "^4.3.2",
- "react-native-circular-progress-indicator": "^4.4.2",
- "react-native-device-info": "^10.9.0",
- "react-native-document-picker": "^8.1.1",
- "react-native-fast-image": "^8.6.3",
- "react-native-file-access": "^2.5.0",
- "react-native-fs": "^2.20.0",
- "react-native-gesture-handler": "^2.17.1",
- "react-native-get-random-values": "^1.9.0",
- "react-native-image-colors": "^1.5.1",
- "react-native-image-picker": "^4.10.0",
- "react-native-linear-gradient": "^2.8.3",
- "react-native-logs": "^5.0.1",
- "react-native-mmkv": "^2.5.1",
- "react-native-pager-view": "^5.4.25",
- "react-native-permissions": "^3.9.0",
- "react-native-reanimated": "^2.17.0",
- "react-native-safe-area-context": "^4.10.8",
- "react-native-screens": "^3.15.0",
- "react-native-share": "^9.4.1",
- "react-native-svg": "^12.4.0",
- "react-native-tab-view": "^3.5.2",
- "react-native-track-player": "^4.0.1",
- "react-native-url-polyfill": "^2.0.0",
- "react-native-vector-icons": "^10.0.0",
- "react-native-view-shot": "^3.4.0",
- "react-native-webview": "^13.6.2",
- "react-qr-code": "^2.0.7",
- "recyclerlistview": "^4.2.1",
- "webdav": "github:maotoumao/webdav-client#release"
- },
- "devDependencies": {
- "@babel/core": "^7.12.9",
- "@babel/runtime": "^7.12.5",
- "@commitlint/cli": "^17.0.3",
- "@commitlint/config-conventional": "^17.0.3",
- "@react-native-community/eslint-config": "^2.0.0",
- "@tsconfig/react-native": "^2.0.0",
- "@types/color": "^3.0.3",
- "@types/crypto-js": "^4.1.1",
- "@types/he": "^1.1.2",
- "@types/jest": "^26.0.23",
- "@types/lodash.shuffle": "^4.2.7",
- "@types/node": "^18.0.4",
- "@types/object-path": "^0.11.1",
- "@types/path-browserify": "^1.0.0",
- "@types/qs": "^6.9.7",
- "@types/react": "^18",
- "@types/react-native": "^0.69.1",
- "@types/react-native-background-timer": "^2.0.0",
- "@types/react-native-vector-icons": "^6.4.11",
- "@types/react-test-renderer": "^18.0.0",
- "@typescript-eslint/eslint-plugin": "^5.29.0",
- "@typescript-eslint/parser": "^5.29.0",
- "babel-jest": "^26.6.3",
- "babel-plugin-module-resolver": "^4.1.0",
- "babel-plugin-transform-remove-console": "^6.9.4",
- "eslint": "^7.32.0",
- "eslint-config-prettier": "^8.5.0",
- "eslint-plugin-prettier": "^4.2.1",
- "husky": "^8.0.1",
- "jest": "^26.6.3",
- "lint-staged": "^13.0.3",
- "metro-config": "^0.80.2",
- "metro-react-native-babel-preset": "^0.70.3",
- "prettier": "^2.7.1",
- "react-native-svg-transformer": "^1.3.0",
- "react-test-renderer": "18.0.0",
- "sharp": "^0.33.4",
- "typescript": "^4.4.4"
- }
- },
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@ampproject/remapping": {
- "version": "2.2.1",
- "license": "Apache-2.0",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.22.13",
- "license": "MIT",
- "dependencies": {
- "@babel/highlight": "^7.22.13",
- "chalk": "^2.4.2"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/compat-data": {
- "version": "7.22.9",
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/core": {
- "version": "7.22.17",
- "license": "MIT",
- "dependencies": {
- "@ampproject/remapping": "^2.2.0",
- "@babel/code-frame": "^7.22.13",
- "@babel/generator": "^7.22.15",
- "@babel/helper-compilation-targets": "^7.22.15",
- "@babel/helper-module-transforms": "^7.22.17",
- "@babel/helpers": "^7.22.15",
- "@babel/parser": "^7.22.16",
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.22.17",
- "@babel/types": "^7.22.17",
- "convert-source-map": "^1.7.0",
- "debug": "^4.1.0",
- "gensync": "^1.0.0-beta.2",
- "json5": "^2.2.3",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/babel"
- }
- },
- "node_modules/@babel/generator": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.15",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
- "jsesc": "^2.5.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-annotate-as-pure": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.22.9",
- "@babel/helper-validator-option": "^7.22.15",
- "browserslist": "^4.21.9",
- "lru-cache": "^5.1.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
- "version": "5.1.1",
- "license": "ISC",
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.23.10",
- "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz",
- "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-function-name": "^7.23.0",
- "@babel/helper-member-expression-to-functions": "^7.23.0",
- "@babel/helper-optimise-call-expression": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.20",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/helper-split-export-declaration": "^7.22.6",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "regexpu-core": "^5.3.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.4.2",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.22.6",
- "@babel/helper-plugin-utils": "^7.22.5",
- "debug": "^4.1.1",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.14.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/@babel/helper-environment-visitor": {
- "version": "7.22.20",
- "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz",
- "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-function-name": {
- "version": "7.23.0",
- "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz",
- "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==",
- "dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.23.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-hoist-variables": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-member-expression-to-functions": {
- "version": "7.23.0",
- "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz",
- "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==",
- "dependencies": {
- "@babel/types": "^7.23.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-imports": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-module-transforms": {
- "version": "7.22.17",
- "license": "MIT",
- "dependencies": {
- "@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"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-optimise-call-expression": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-plugin-utils": {
- "version": "7.22.5",
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.22.17",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-wrap-function": "^7.22.17"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-replace-supers": {
- "version": "7.22.20",
- "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz",
- "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==",
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.22.20",
- "@babel/helper-member-expression-to-functions": "^7.22.15",
- "@babel/helper-optimise-call-expression": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-simple-access": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-skip-transparent-expression-wrappers": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-split-export-declaration": {
- "version": "7.22.6",
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-string-parser": {
- "version": "7.23.4",
- "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz",
- "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.20",
- "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
- "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-option": {
- "version": "7.22.15",
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-wrap-function": {
- "version": "7.22.17",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-function-name": "^7.22.5",
- "@babel/template": "^7.22.15",
- "@babel/types": "^7.22.17"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helpers": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.22.15",
- "@babel/traverse": "^7.22.15",
- "@babel/types": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.22.13",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/parser": {
- "version": "7.22.16",
- "license": "MIT",
- "bin": {
- "parser": "bin/babel-parser.js"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.22.15",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.22.15",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/plugin-transform-optional-chaining": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.13.0"
- }
- },
- "node_modules/@babel/plugin-proposal-async-generator-functions": {
- "version": "7.20.7",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-remap-async-to-generator": "^7.18.9",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-class-properties": {
- "version": "7.18.6",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-export-default-from": {
- "version": "7.22.17",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-export-default-from": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
- "version": "7.18.6",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-object-rest-spread": {
- "version": "7.20.7",
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.20.5",
- "@babel/helper-compilation-targets": "^7.20.7",
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.20.7"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-optional-catch-binding": {
- "version": "7.18.6",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.18.6",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-optional-chaining": {
- "version": "7.21.0",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.20.2",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0-placeholder-for-preset-env.2",
- "license": "MIT",
- "peer": true,
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-async-generators": {
- "version": "7.8.4",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-bigint": {
- "version": "7.8.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-properties": {
- "version": "7.12.13",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.12.13"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-class-static-block": {
- "version": "7.14.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-dynamic-import": {
- "version": "7.8.3",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-export-default-from": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-export-namespace-from": {
- "version": "7.8.3",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-flow": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-meta": {
- "version": "7.10.4",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-json-strings": {
- "version": "7.8.3",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
- "version": "7.10.4",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
- "version": "7.8.3",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-numeric-separator": {
- "version": "7.10.4",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.10.4"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-object-rest-spread": {
- "version": "7.8.3",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-catch-binding": {
- "version": "7.8.3",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-optional-chaining": {
- "version": "7.8.3",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.8.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-private-property-in-object": {
- "version": "7.14.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-top-level-await": {
- "version": "7.14.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
- "version": "7.18.6",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.22.15",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-environment-visitor": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.9",
- "@babel/plugin-syntax-async-generators": "^7.8.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-remap-async-to-generator": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoped-functions": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.22.11",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.11",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-class-static-block": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.12.0"
- }
- },
- "node_modules/@babel/plugin-transform-classes": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@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/helper-split-export-declaration": "^7.22.6",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/template": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-dynamic-import": {
- "version": "7.22.11",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.22.11",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-flow-strip-types": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-flow": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-for-of": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-function-name": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.22.5",
- "@babel/helper-function-name": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.22.11",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-json-strings": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-literals": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.22.11",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-simple-access": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.22.11",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-hoist-variables": "^7.22.5",
- "@babel/helper-module-transforms": "^7.22.9",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-identifier": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-module-transforms": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-transform-new-target": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.22.11",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.22.11",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-assign": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.22.15",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/compat-data": "^7.22.9",
- "@babel/helper-compilation-targets": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-transform-parameters": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-object-super": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-replace-supers": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.22.11",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.22.15",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-parameters": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.22.11",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.22.11",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-display-name": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@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/types": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-self": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-react-jsx-source": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.22.10",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "regenerator-transform": "^0.15.2"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-runtime": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
- "babel-plugin-polyfill-corejs2": "^0.4.5",
- "babel-plugin-polyfill-corejs3": "^0.8.3",
- "babel-plugin-polyfill-regenerator": "^0.5.2",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-spread": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-typescript": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.22.5",
- "@babel/helper-create-class-features-plugin": "^7.22.15",
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/plugin-syntax-typescript": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.22.10",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.22.5",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.22.5",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.22.5",
- "@babel/helper-plugin-utils": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/preset-env": {
- "version": "7.22.15",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/compat-data": "^7.22.9",
- "@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/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15",
- "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-class-properties": "^7.12.13",
- "@babel/plugin-syntax-class-static-block": "^7.14.5",
- "@babel/plugin-syntax-dynamic-import": "^7.8.3",
- "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
- "@babel/plugin-syntax-import-assertions": "^7.22.5",
- "@babel/plugin-syntax-import-attributes": "^7.22.5",
- "@babel/plugin-syntax-import-meta": "^7.10.4",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.10.4",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
- "@babel/plugin-syntax-top-level-await": "^7.14.5",
- "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.22.5",
- "@babel/plugin-transform-async-generator-functions": "^7.22.15",
- "@babel/plugin-transform-async-to-generator": "^7.22.5",
- "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
- "@babel/plugin-transform-block-scoping": "^7.22.15",
- "@babel/plugin-transform-class-properties": "^7.22.5",
- "@babel/plugin-transform-class-static-block": "^7.22.11",
- "@babel/plugin-transform-classes": "^7.22.15",
- "@babel/plugin-transform-computed-properties": "^7.22.5",
- "@babel/plugin-transform-destructuring": "^7.22.15",
- "@babel/plugin-transform-dotall-regex": "^7.22.5",
- "@babel/plugin-transform-duplicate-keys": "^7.22.5",
- "@babel/plugin-transform-dynamic-import": "^7.22.11",
- "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
- "@babel/plugin-transform-export-namespace-from": "^7.22.11",
- "@babel/plugin-transform-for-of": "^7.22.15",
- "@babel/plugin-transform-function-name": "^7.22.5",
- "@babel/plugin-transform-json-strings": "^7.22.11",
- "@babel/plugin-transform-literals": "^7.22.5",
- "@babel/plugin-transform-logical-assignment-operators": "^7.22.11",
- "@babel/plugin-transform-member-expression-literals": "^7.22.5",
- "@babel/plugin-transform-modules-amd": "^7.22.5",
- "@babel/plugin-transform-modules-commonjs": "^7.22.15",
- "@babel/plugin-transform-modules-systemjs": "^7.22.11",
- "@babel/plugin-transform-modules-umd": "^7.22.5",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
- "@babel/plugin-transform-new-target": "^7.22.5",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11",
- "@babel/plugin-transform-numeric-separator": "^7.22.11",
- "@babel/plugin-transform-object-rest-spread": "^7.22.15",
- "@babel/plugin-transform-object-super": "^7.22.5",
- "@babel/plugin-transform-optional-catch-binding": "^7.22.11",
- "@babel/plugin-transform-optional-chaining": "^7.22.15",
- "@babel/plugin-transform-parameters": "^7.22.15",
- "@babel/plugin-transform-private-methods": "^7.22.5",
- "@babel/plugin-transform-private-property-in-object": "^7.22.11",
- "@babel/plugin-transform-property-literals": "^7.22.5",
- "@babel/plugin-transform-regenerator": "^7.22.10",
- "@babel/plugin-transform-reserved-words": "^7.22.5",
- "@babel/plugin-transform-shorthand-properties": "^7.22.5",
- "@babel/plugin-transform-spread": "^7.22.5",
- "@babel/plugin-transform-sticky-regex": "^7.22.5",
- "@babel/plugin-transform-template-literals": "^7.22.5",
- "@babel/plugin-transform-typeof-symbol": "^7.22.5",
- "@babel/plugin-transform-unicode-escapes": "^7.22.10",
- "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
- "@babel/plugin-transform-unicode-regex": "^7.22.5",
- "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
- "@babel/preset-modules": "0.1.6-no-external-plugins",
- "@babel/types": "^7.22.15",
- "babel-plugin-polyfill-corejs2": "^0.4.5",
- "babel-plugin-polyfill-corejs3": "^0.8.3",
- "babel-plugin-polyfill-regenerator": "^0.5.2",
- "core-js-compat": "^3.31.0",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-flow": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.15",
- "@babel/plugin-transform-flow-strip-types": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-modules": {
- "version": "0.1.6-no-external-plugins",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/@babel/preset-typescript": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.22.5",
- "@babel/helper-validator-option": "^7.22.15",
- "@babel/plugin-syntax-jsx": "^7.22.5",
- "@babel/plugin-transform-modules-commonjs": "^7.22.15",
- "@babel/plugin-transform-typescript": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/register": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "clone-deep": "^4.0.1",
- "find-cache-dir": "^2.0.0",
- "make-dir": "^2.1.0",
- "pirates": "^4.0.5",
- "source-map-support": "^0.5.16"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/register/node_modules/make-dir": {
- "version": "2.1.0",
- "license": "MIT",
- "dependencies": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@babel/register/node_modules/semver": {
- "version": "5.7.2",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@babel/regjsgen": {
- "version": "0.8.0",
- "license": "MIT"
- },
- "node_modules/@babel/runtime": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "regenerator-runtime": "^0.14.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/template": {
- "version": "7.22.15",
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.22.13",
- "@babel/parser": "^7.22.15",
- "@babel/types": "^7.22.15"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/traverse": {
- "version": "7.22.17",
- "license": "MIT",
- "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.17",
- "debug": "^4.1.0",
- "globals": "^11.1.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/types": {
- "version": "7.23.9",
- "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.23.9.tgz",
- "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==",
- "dependencies": {
- "@babel/helper-string-parser": "^7.23.4",
- "@babel/helper-validator-identifier": "^7.22.20",
- "to-fast-properties": "^2.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@bcoe/v8-coverage": {
- "version": "0.2.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@buttercup/fetch": {
- "version": "0.1.2",
- "license": "MIT",
- "optionalDependencies": {
- "node-fetch": "^3.3.0"
- }
- },
- "node_modules/@buttercup/fetch/node_modules/node-fetch": {
- "version": "3.3.2",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "data-uri-to-buffer": "^4.0.0",
- "fetch-blob": "^3.1.4",
- "formdata-polyfill": "^4.0.10"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/node-fetch"
- }
- },
- "node_modules/@cnakazawa/watch": {
- "version": "1.0.4",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "exec-sh": "^0.3.2",
- "minimist": "^1.2.0"
- },
- "bin": {
- "watch": "cli.js"
- },
- "engines": {
- "node": ">=0.1.95"
- }
- },
- "node_modules/@commitlint/cli": {
- "version": "17.7.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@commitlint/format": "^17.4.4",
- "@commitlint/lint": "^17.7.0",
- "@commitlint/load": "^17.7.1",
- "@commitlint/read": "^17.5.1",
- "@commitlint/types": "^17.4.4",
- "execa": "^5.0.0",
- "lodash.isfunction": "^3.0.9",
- "resolve-from": "5.0.0",
- "resolve-global": "1.0.0",
- "yargs": "^17.0.0"
- },
- "bin": {
- "commitlint": "cli.js"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/config-conventional": {
- "version": "17.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "conventional-changelog-conventionalcommits": "^6.1.0"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/config-validator": {
- "version": "17.6.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@commitlint/types": "^17.4.4",
- "ajv": "^8.11.0"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/ensure": {
- "version": "17.6.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@commitlint/types": "^17.4.4",
- "lodash.camelcase": "^4.3.0",
- "lodash.kebabcase": "^4.1.1",
- "lodash.snakecase": "^4.1.1",
- "lodash.startcase": "^4.4.0",
- "lodash.upperfirst": "^4.3.1"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/execute-rule": {
- "version": "17.4.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/format": {
- "version": "17.4.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@commitlint/types": "^17.4.4",
- "chalk": "^4.1.0"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/format/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@commitlint/format/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@commitlint/format/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@commitlint/format/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@commitlint/format/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@commitlint/format/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@commitlint/is-ignored": {
- "version": "17.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@commitlint/types": "^17.4.4",
- "semver": "7.5.4"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/is-ignored/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@commitlint/is-ignored/node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@commitlint/is-ignored/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/@commitlint/lint": {
- "version": "17.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@commitlint/is-ignored": "^17.7.0",
- "@commitlint/parse": "^17.7.0",
- "@commitlint/rules": "^17.7.0",
- "@commitlint/types": "^17.4.4"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/load": {
- "version": "17.7.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@commitlint/config-validator": "^17.6.7",
- "@commitlint/execute-rule": "^17.4.0",
- "@commitlint/resolve-extends": "^17.6.7",
- "@commitlint/types": "^17.4.4",
- "@types/node": "20.4.7",
- "chalk": "^4.1.0",
- "cosmiconfig": "^8.0.0",
- "cosmiconfig-typescript-loader": "^4.0.0",
- "lodash.isplainobject": "^4.0.6",
- "lodash.merge": "^4.6.2",
- "lodash.uniq": "^4.5.0",
- "resolve-from": "^5.0.0",
- "ts-node": "^10.8.1",
- "typescript": "^4.6.4 || ^5.0.0"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/load/node_modules/@types/node": {
- "version": "20.4.7",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@commitlint/load/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@commitlint/load/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@commitlint/load/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@commitlint/load/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@commitlint/load/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@commitlint/load/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@commitlint/message": {
- "version": "17.4.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/parse": {
- "version": "17.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@commitlint/types": "^17.4.4",
- "conventional-changelog-angular": "^6.0.0",
- "conventional-commits-parser": "^4.0.0"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/read": {
- "version": "17.5.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@commitlint/top-level": "^17.4.0",
- "@commitlint/types": "^17.4.4",
- "fs-extra": "^11.0.0",
- "git-raw-commits": "^2.0.11",
- "minimist": "^1.2.6"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/resolve-extends": {
- "version": "17.6.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@commitlint/config-validator": "^17.6.7",
- "@commitlint/types": "^17.4.4",
- "import-fresh": "^3.0.0",
- "lodash.mergewith": "^4.6.2",
- "resolve-from": "^5.0.0",
- "resolve-global": "^1.0.0"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/rules": {
- "version": "17.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@commitlint/ensure": "^17.6.7",
- "@commitlint/message": "^17.4.2",
- "@commitlint/to-lines": "^17.4.0",
- "@commitlint/types": "^17.4.4",
- "execa": "^5.0.0"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/to-lines": {
- "version": "17.4.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/top-level": {
- "version": "17.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "find-up": "^5.0.0"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/types": {
- "version": "17.4.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.1.0"
- },
- "engines": {
- "node": ">=v14"
- }
- },
- "node_modules/@commitlint/types/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@commitlint/types/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@commitlint/types/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@commitlint/types/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@commitlint/types/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@commitlint/types/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@cspotcode/source-map-support": {
- "version": "0.8.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/trace-mapping": "0.3.9"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.9",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "node_modules/@egjs/hammerjs": {
- "version": "2.0.17",
- "license": "MIT",
- "dependencies": {
- "@types/hammerjs": "^2.0.36"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@emnapi/runtime": {
- "version": "1.2.0",
- "resolved": "https://registry.npmmirror.com/@emnapi/runtime/-/runtime-1.2.0.tgz",
- "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==",
- "dev": true,
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/regexpp": {
- "version": "4.8.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "0.4.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.1.1",
- "espree": "^7.3.0",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.2.1",
- "js-yaml": "^3.13.1",
- "minimatch": "^3.0.4",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.21.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/ignore": {
- "version": "4.0.6",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@eslint/eslintrc/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@hapi/hoek": {
- "version": "9.3.0",
- "license": "BSD-3-Clause"
- },
- "node_modules/@hapi/topo": {
- "version": "5.1.0",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@hapi/hoek": "^9.0.0"
- }
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.5.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.0",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/@humanwhocodes/config-array/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "node_modules/@img/sharp-darwin-arm64": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz",
- "integrity": "sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "glibc": ">=2.26",
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-darwin-arm64": "1.0.2"
- }
- },
- "node_modules/@img/sharp-darwin-x64": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.4.tgz",
- "integrity": "sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "glibc": ">=2.26",
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-darwin-x64": "1.0.2"
- }
- },
- "node_modules/@img/sharp-libvips-darwin-arm64": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz",
- "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "macos": ">=11",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- }
- },
- "node_modules/@img/sharp-libvips-darwin-x64": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz",
- "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "macos": ">=10.13",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- }
- },
- "node_modules/@img/sharp-libvips-linux-arm": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz",
- "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "glibc": ">=2.28",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- }
- },
- "node_modules/@img/sharp-libvips-linux-arm64": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz",
- "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "glibc": ">=2.26",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- }
- },
- "node_modules/@img/sharp-libvips-linux-s390x": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz",
- "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "glibc": ">=2.28",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- }
- },
- "node_modules/@img/sharp-libvips-linux-x64": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz",
- "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "glibc": ">=2.26",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- }
- },
- "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz",
- "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "musl": ">=1.2.2",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- }
- },
- "node_modules/@img/sharp-libvips-linuxmusl-x64": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz",
- "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "musl": ">=1.2.2",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- }
- },
- "node_modules/@img/sharp-linux-arm": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.4.tgz",
- "integrity": "sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "glibc": ">=2.28",
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-arm": "1.0.2"
- }
- },
- "node_modules/@img/sharp-linux-arm64": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.4.tgz",
- "integrity": "sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "glibc": ">=2.26",
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-arm64": "1.0.2"
- }
- },
- "node_modules/@img/sharp-linux-s390x": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.4.tgz",
- "integrity": "sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==",
- "cpu": [
- "s390x"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "glibc": ">=2.31",
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-s390x": "1.0.2"
- }
- },
- "node_modules/@img/sharp-linux-x64": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.4.tgz",
- "integrity": "sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "glibc": ">=2.26",
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-x64": "1.0.2"
- }
- },
- "node_modules/@img/sharp-linuxmusl-arm64": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.4.tgz",
- "integrity": "sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "musl": ">=1.2.2",
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linuxmusl-arm64": "1.0.2"
- }
- },
- "node_modules/@img/sharp-linuxmusl-x64": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.4.tgz",
- "integrity": "sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "musl": ">=1.2.2",
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linuxmusl-x64": "1.0.2"
- }
- },
- "node_modules/@img/sharp-wasm32": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.4.tgz",
- "integrity": "sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==",
- "cpu": [
- "wasm32"
- ],
- "dev": true,
- "optional": true,
- "dependencies": {
- "@emnapi/runtime": "^1.1.1"
- },
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- }
- },
- "node_modules/@img/sharp-win32-ia32": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.4.tgz",
- "integrity": "sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==",
- "cpu": [
- "ia32"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- }
- },
- "node_modules/@img/sharp-win32-x64": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz",
- "integrity": "sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0",
- "npm": ">=9.6.5",
- "pnpm": ">=7.1.0",
- "yarn": ">=3.2.0"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config": {
- "version": "1.1.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "camelcase": "^5.3.1",
- "find-up": "^4.1.0",
- "get-package-type": "^0.1.0",
- "js-yaml": "^3.13.1",
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@istanbuljs/schema": {
- "version": "0.1.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/console": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "jest-message-util": "^26.6.2",
- "jest-util": "^26.6.2",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/console/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/console/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/console/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/console/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jest/console/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/console/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/core": {
- "version": "26.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/reporters": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-changed-files": "^26.6.2",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-resolve-dependencies": "^26.6.3",
- "jest-runner": "^26.6.3",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "jest-watcher": "^26.6.2",
- "micromatch": "^4.0.2",
- "p-each-series": "^2.1.0",
- "rimraf": "^3.0.0",
- "slash": "^3.0.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/core/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/core/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/core/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/core/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jest/core/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/core/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/create-cache-key-function": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^27.5.1"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^16.0.0",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": {
- "version": "16.0.5",
- "license": "MIT",
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/@jest/create-cache-key-function/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/create-cache-key-function/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/create-cache-key-function/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/create-cache-key-function/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/@jest/create-cache-key-function/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/create-cache-key-function/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/environment": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/fake-timers": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "@sinonjs/fake-timers": "^6.0.1",
- "@types/node": "*",
- "jest-message-util": "^26.6.2",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/globals": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/environment": "^26.6.2",
- "@jest/types": "^26.6.2",
- "expect": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/reporters": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@bcoe/v8-coverage": "^0.2.3",
- "@jest/console": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.2",
- "graceful-fs": "^4.2.4",
- "istanbul-lib-coverage": "^3.0.0",
- "istanbul-lib-instrument": "^4.0.3",
- "istanbul-lib-report": "^3.0.0",
- "istanbul-lib-source-maps": "^4.0.0",
- "istanbul-reports": "^3.0.2",
- "jest-haste-map": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "slash": "^3.0.0",
- "source-map": "^0.6.0",
- "string-length": "^4.0.1",
- "terminal-link": "^2.0.0",
- "v8-to-istanbul": "^7.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "optionalDependencies": {
- "node-notifier": "^8.0.0"
- }
- },
- "node_modules/@jest/reporters/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/reporters/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/reporters/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/reporters/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jest/reporters/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": {
- "version": "4.0.3",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@babel/core": "^7.7.5",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.0.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/reporters/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/schemas": {
- "version": "29.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@sinclair/typebox": "^0.27.8"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@jest/source-map": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0",
- "graceful-fs": "^4.2.4",
- "source-map": "^0.6.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/test-result": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "collect-v8-coverage": "^1.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/test-sequencer": {
- "version": "26.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/test-result": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-runner": "^26.6.3",
- "jest-runtime": "^26.6.3"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/transform": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.1.0",
- "@jest/types": "^26.6.2",
- "babel-plugin-istanbul": "^6.0.0",
- "chalk": "^4.0.0",
- "convert-source-map": "^1.4.0",
- "fast-json-stable-stringify": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "jest-haste-map": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-util": "^26.6.2",
- "micromatch": "^4.0.2",
- "pirates": "^4.0.1",
- "slash": "^3.0.0",
- "source-map": "^0.6.1",
- "write-file-atomic": "^3.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/transform/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/transform/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/transform/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/transform/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@jest/transform/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/transform/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/types": {
- "version": "26.6.2",
- "license": "MIT",
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/@jest/types/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@jest/types/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@jest/types/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@jest/types/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/@jest/types/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jest/types/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@jimp/bmp": {
- "version": "0.16.13",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.16.13",
- "bmp-js": "^0.1.0"
- },
- "peerDependencies": {
- "@jimp/custom": ">=0.3.5"
- }
- },
- "node_modules/@jimp/core": {
- "version": "0.16.13",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.16.13",
- "any-base": "^1.1.0",
- "buffer": "^5.2.0",
- "exif-parser": "^0.1.12",
- "file-type": "^16.5.4",
- "load-bmfont": "^1.3.1",
- "mkdirp": "^0.5.1",
- "phin": "^2.9.1",
- "pixelmatch": "^4.0.2",
- "tinycolor2": "^1.4.1"
- }
- },
- "node_modules/@jimp/custom": {
- "version": "0.16.13",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.7.2",
- "@jimp/core": "^0.16.13"
- }
- },
- "node_modules/@jimp/gif": {
- "version": "0.16.13",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.16.13",
- "gifwrap": "^0.9.2",
- "omggif": "^1.0.9"
- },
- "peerDependencies": {
- "@jimp/custom": ">=0.3.5"
- }
- },
- "node_modules/@jimp/jpeg": {
- "version": "0.16.13",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.16.13",
- "jpeg-js": "^0.4.2"
- },
- "peerDependencies": {
- "@jimp/custom": ">=0.3.5"
- }
- },
- "node_modules/@jimp/plugin-resize": {
- "version": "0.16.13",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.16.13"
- },
- "peerDependencies": {
- "@jimp/custom": ">=0.3.5"
- }
- },
- "node_modules/@jimp/png": {
- "version": "0.16.13",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.7.2",
- "@jimp/utils": "^0.16.13",
- "pngjs": "^3.3.3"
- },
- "peerDependencies": {
- "@jimp/custom": ">=0.3.5"
- }
- },
- "node_modules/@jimp/tiff": {
- "version": "0.16.13",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.7.2",
- "utif": "^2.0.1"
- },
- "peerDependencies": {
- "@jimp/custom": ">=0.3.5"
- }
- },
- "node_modules/@jimp/types": {
- "version": "0.16.13",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.7.2",
- "@jimp/bmp": "^0.16.13",
- "@jimp/gif": "^0.16.13",
- "@jimp/jpeg": "^0.16.13",
- "@jimp/png": "^0.16.13",
- "@jimp/tiff": "^0.16.13",
- "timm": "^1.6.1"
- },
- "peerDependencies": {
- "@jimp/custom": ">=0.3.5"
- }
- },
- "node_modules/@jimp/utils": {
- "version": "0.16.13",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.7.2",
- "regenerator-runtime": "^0.13.3"
- }
- },
- "node_modules/@jimp/utils/node_modules/regenerator-runtime": {
- "version": "0.13.11",
- "license": "MIT"
- },
- "node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.3",
- "license": "MIT",
- "dependencies": {
- "@jridgewell/set-array": "^1.0.1",
- "@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/set-array": {
- "version": "1.1.2",
- "license": "MIT",
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/source-map": {
- "version": "0.3.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/gen-mapping": "^0.3.0",
- "@jridgewell/trace-mapping": "^0.3.9"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "license": "MIT"
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.19",
- "license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.1.0",
- "@jridgewell/sourcemap-codec": "^1.4.14"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@react-native-async-storage/async-storage": {
- "version": "1.19.3",
- "license": "MIT",
- "dependencies": {
- "merge-options": "^3.0.4"
- },
- "peerDependencies": {
- "react-native": "^0.0.0-0 || 0.60 - 0.72 || 1000.0.0"
- }
- },
- "node_modules/@react-native-clipboard/clipboard": {
- "version": "1.11.2",
- "license": "MIT",
- "peerDependencies": {
- "react": ">=16.0",
- "react-native": ">=0.57.0"
- }
- },
- "node_modules/@react-native-community/cli": {
- "version": "8.0.7",
- "license": "MIT",
- "dependencies": {
- "@react-native-community/cli-clean": "^8.0.4",
- "@react-native-community/cli-config": "^8.0.6",
- "@react-native-community/cli-debugger-ui": "^8.0.0",
- "@react-native-community/cli-doctor": "^8.0.6",
- "@react-native-community/cli-hermes": "^8.0.5",
- "@react-native-community/cli-plugin-metro": "^8.0.7",
- "@react-native-community/cli-server-api": "^8.0.4",
- "@react-native-community/cli-tools": "^8.0.4",
- "@react-native-community/cli-types": "^8.0.0",
- "chalk": "^4.1.2",
- "commander": "^2.19.0",
- "execa": "^1.0.0",
- "find-up": "^4.1.0",
- "fs-extra": "^8.1.0",
- "graceful-fs": "^4.1.3",
- "leven": "^3.1.0",
- "lodash": "^4.17.15",
- "minimist": "^1.2.0",
- "prompts": "^2.4.0",
- "semver": "^6.3.0"
- },
- "bin": {
- "react-native": "build/bin.js"
- },
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "react-native": "*"
- }
- },
- "node_modules/@react-native-community/cli-clean": {
- "version": "8.0.4",
- "license": "MIT",
- "dependencies": {
- "@react-native-community/cli-tools": "^8.0.4",
- "chalk": "^4.1.2",
- "execa": "^1.0.0",
- "prompts": "^2.4.0"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/@react-native-community/cli-clean/node_modules/cross-spawn": {
- "version": "6.0.5",
- "license": "MIT",
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/execa": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/get-stream": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/is-stream": {
- "version": "1.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/npm-run-path": {
- "version": "2.0.2",
- "license": "MIT",
- "dependencies": {
- "path-key": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/path-key": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/semver": {
- "version": "5.7.2",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/shebang-command": {
- "version": "1.2.0",
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/shebang-regex": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-clean/node_modules/which": {
- "version": "1.3.1",
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/@react-native-community/cli-config": {
- "version": "8.0.6",
- "license": "MIT",
- "dependencies": {
- "@react-native-community/cli-tools": "^8.0.4",
- "cosmiconfig": "^5.1.0",
- "deepmerge": "^3.2.0",
- "glob": "^7.1.3",
- "joi": "^17.2.1"
- }
- },
- "node_modules/@react-native-community/cli-config/node_modules/cosmiconfig": {
- "version": "5.2.1",
- "license": "MIT",
- "dependencies": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-config/node_modules/deepmerge": {
- "version": "3.3.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-config/node_modules/import-fresh": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-config/node_modules/parse-json": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-config/node_modules/resolve-from": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-debugger-ui": {
- "version": "8.0.0",
- "license": "MIT",
- "dependencies": {
- "serve-static": "^1.13.1"
- }
- },
- "node_modules/@react-native-community/cli-doctor": {
- "version": "8.0.6",
- "license": "MIT",
- "dependencies": {
- "@react-native-community/cli-config": "^8.0.6",
- "@react-native-community/cli-platform-ios": "^8.0.6",
- "@react-native-community/cli-tools": "^8.0.4",
- "chalk": "^4.1.2",
- "command-exists": "^1.2.8",
- "envinfo": "^7.7.2",
- "execa": "^1.0.0",
- "hermes-profile-transformer": "^0.0.6",
- "ip": "^1.1.5",
- "node-stream-zip": "^1.9.1",
- "ora": "^5.4.1",
- "prompts": "^2.4.0",
- "semver": "^6.3.0",
- "strip-ansi": "^5.2.0",
- "sudo-prompt": "^9.0.0",
- "wcwidth": "^1.0.1"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/ansi-regex": {
- "version": "4.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/cross-spawn": {
- "version": "6.0.5",
- "license": "MIT",
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/cross-spawn/node_modules/semver": {
- "version": "5.7.2",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/execa": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/get-stream": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/is-stream": {
- "version": "1.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/npm-run-path": {
- "version": "2.0.2",
- "license": "MIT",
- "dependencies": {
- "path-key": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/path-key": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/shebang-command": {
- "version": "1.2.0",
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/shebang-regex": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": {
- "version": "5.2.0",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-doctor/node_modules/which": {
- "version": "1.3.1",
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/@react-native-community/cli-hermes": {
- "version": "8.0.5",
- "license": "MIT",
- "dependencies": {
- "@react-native-community/cli-platform-android": "^8.0.5",
- "@react-native-community/cli-tools": "^8.0.4",
- "chalk": "^4.1.2",
- "hermes-profile-transformer": "^0.0.6",
- "ip": "^1.1.5"
- }
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-hermes/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-platform-android": {
- "version": "8.0.5",
- "license": "MIT",
- "dependencies": {
- "@react-native-community/cli-tools": "^8.0.4",
- "chalk": "^4.1.2",
- "execa": "^1.0.0",
- "fs-extra": "^8.1.0",
- "glob": "^7.1.3",
- "jetifier": "^1.6.2",
- "lodash": "^4.17.15",
- "logkitty": "^0.7.1",
- "slash": "^3.0.0"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/cross-spawn": {
- "version": "6.0.5",
- "license": "MIT",
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/execa": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/fs-extra": {
- "version": "8.1.0",
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/get-stream": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/is-stream": {
- "version": "1.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/jsonfile": {
- "version": "4.0.0",
- "license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/npm-run-path": {
- "version": "2.0.2",
- "license": "MIT",
- "dependencies": {
- "path-key": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/path-key": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/semver": {
- "version": "5.7.2",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/shebang-command": {
- "version": "1.2.0",
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/shebang-regex": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/universalify": {
- "version": "0.1.2",
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/@react-native-community/cli-platform-android/node_modules/which": {
- "version": "1.3.1",
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios": {
- "version": "8.0.6",
- "license": "MIT",
- "dependencies": {
- "@react-native-community/cli-tools": "^8.0.4",
- "chalk": "^4.1.2",
- "execa": "^1.0.0",
- "glob": "^7.1.3",
- "js-yaml": "^3.13.1",
- "lodash": "^4.17.15",
- "ora": "^5.4.1",
- "plist": "^3.0.2"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/cross-spawn": {
- "version": "6.0.5",
- "license": "MIT",
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/execa": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/get-stream": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/is-stream": {
- "version": "1.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/npm-run-path": {
- "version": "2.0.2",
- "license": "MIT",
- "dependencies": {
- "path-key": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/path-key": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/semver": {
- "version": "5.7.2",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/shebang-command": {
- "version": "1.2.0",
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/shebang-regex": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-platform-ios/node_modules/which": {
- "version": "1.3.1",
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro": {
- "version": "8.0.7",
- "license": "MIT",
- "dependencies": {
- "@react-native-community/cli-server-api": "^8.0.4",
- "@react-native-community/cli-tools": "^8.0.4",
- "chalk": "^4.1.2",
- "metro": "^0.70.4",
- "metro-config": "^0.70.4",
- "metro-core": "^0.70.4",
- "metro-react-native-babel-transformer": "^0.70.4",
- "metro-resolver": "^0.70.4",
- "metro-runtime": "^0.70.4",
- "readline": "^1.3.0"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/cosmiconfig": {
- "version": "5.2.1",
- "license": "MIT",
- "dependencies": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/import-fresh": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/metro-config": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "cosmiconfig": "^5.0.5",
- "jest-validate": "^26.5.2",
- "metro": "0.70.4",
- "metro-cache": "0.70.4",
- "metro-core": "0.70.4",
- "metro-runtime": "0.70.4"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/parse-json": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/resolve-from": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli-plugin-metro/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-server-api": {
- "version": "8.0.4",
- "license": "MIT",
- "dependencies": {
- "@react-native-community/cli-debugger-ui": "^8.0.0",
- "@react-native-community/cli-tools": "^8.0.4",
- "compression": "^1.7.1",
- "connect": "^3.6.5",
- "errorhandler": "^1.5.0",
- "nocache": "^3.0.1",
- "pretty-format": "^26.6.2",
- "serve-static": "^1.13.1",
- "ws": "^7.5.1"
- }
- },
- "node_modules/@react-native-community/cli-tools": {
- "version": "8.0.4",
- "license": "MIT",
- "dependencies": {
- "appdirsjs": "^1.2.4",
- "chalk": "^4.1.2",
- "find-up": "^5.0.0",
- "lodash": "^4.17.15",
- "mime": "^2.4.1",
- "node-fetch": "^2.6.0",
- "open": "^6.2.0",
- "ora": "^5.4.1",
- "semver": "^6.3.0",
- "shell-quote": "^1.7.3"
- }
- },
- "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-tools/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli-tools/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@react-native-community/cli-tools/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/@react-native-community/cli-tools/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-tools/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli-types": {
- "version": "8.0.0",
- "license": "MIT",
- "dependencies": {
- "joi": "^17.2.1"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/@react-native-community/cli/node_modules/commander": {
- "version": "2.20.3",
- "license": "MIT"
- },
- "node_modules/@react-native-community/cli/node_modules/cross-spawn": {
- "version": "6.0.5",
- "license": "MIT",
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/cross-spawn/node_modules/semver": {
- "version": "5.7.2",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/execa": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/find-up": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/fs-extra": {
- "version": "8.1.0",
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/get-stream": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/is-stream": {
- "version": "1.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/jsonfile": {
- "version": "4.0.0",
- "license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/locate-path": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/npm-run-path": {
- "version": "2.0.2",
- "license": "MIT",
- "dependencies": {
- "path-key": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/p-limit": {
- "version": "2.3.0",
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/p-locate": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/path-exists": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/path-key": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/shebang-command": {
- "version": "1.2.0",
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/shebang-regex": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/universalify": {
- "version": "0.1.2",
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/@react-native-community/cli/node_modules/which": {
- "version": "1.3.1",
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/@react-native-community/eslint-config": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@react-native-community/eslint-plugin": "^1.1.0",
- "@typescript-eslint/eslint-plugin": "^3.1.0",
- "@typescript-eslint/parser": "^3.1.0",
- "babel-eslint": "^10.1.0",
- "eslint-config-prettier": "^6.10.1",
- "eslint-plugin-eslint-comments": "^3.1.2",
- "eslint-plugin-flowtype": "2.50.3",
- "eslint-plugin-jest": "22.4.1",
- "eslint-plugin-prettier": "3.1.2",
- "eslint-plugin-react": "^7.20.0",
- "eslint-plugin-react-hooks": "^4.0.4",
- "eslint-plugin-react-native": "^3.8.1",
- "prettier": "^2.0.2"
- },
- "peerDependencies": {
- "eslint": ">=6"
- }
- },
- "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/eslint-plugin": {
- "version": "3.10.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/experimental-utils": "3.10.1",
- "debug": "^4.1.1",
- "functional-red-black-tree": "^1.0.1",
- "regexpp": "^3.0.0",
- "semver": "^7.3.2",
- "tsutils": "^3.17.1"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^3.0.0",
- "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/parser": {
- "version": "3.10.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@types/eslint-visitor-keys": "^1.0.0",
- "@typescript-eslint/experimental-utils": "3.10.1",
- "@typescript-eslint/types": "3.10.1",
- "@typescript-eslint/typescript-estree": "3.10.1",
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/types": {
- "version": "3.10.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/typescript-estree": {
- "version": "3.10.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "3.10.1",
- "@typescript-eslint/visitor-keys": "3.10.1",
- "debug": "^4.1.1",
- "glob": "^7.1.6",
- "is-glob": "^4.0.1",
- "lodash": "^4.17.15",
- "semver": "^7.3.2",
- "tsutils": "^3.17.1"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@react-native-community/eslint-config/node_modules/@typescript-eslint/visitor-keys": {
- "version": "3.10.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@react-native-community/eslint-config/node_modules/eslint-config-prettier": {
- "version": "6.15.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-stdin": "^6.0.0"
- },
- "bin": {
- "eslint-config-prettier-check": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=3.14.1"
- }
- },
- "node_modules/@react-native-community/eslint-config/node_modules/eslint-plugin-prettier": {
- "version": "3.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=6.0.0"
- },
- "peerDependencies": {
- "eslint": ">= 5.0.0",
- "prettier": ">= 1.13.0"
- }
- },
- "node_modules/@react-native-community/eslint-config/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@react-native-community/eslint-config/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@react-native-community/eslint-config/node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@react-native-community/eslint-config/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/@react-native-community/eslint-plugin": {
- "version": "1.3.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@react-native-community/netinfo": {
- "version": "9.4.1",
- "license": "MIT",
- "peerDependencies": {
- "react-native": ">=0.59"
- }
- },
- "node_modules/@react-native-community/slider": {
- "version": "4.4.3",
- "license": "MIT"
- },
- "node_modules/@react-native-cookies/cookies": {
- "version": "6.2.1",
- "license": "MIT",
- "dependencies": {
- "invariant": "^2.2.4"
- },
- "peerDependencies": {
- "react-native": ">= 0.60.2"
- }
- },
- "node_modules/@react-native-masked-view/masked-view": {
- "version": "0.2.9",
- "license": "MIT",
- "peerDependencies": {
- "react": ">=16",
- "react-native": ">=0.57"
- }
- },
- "node_modules/@react-native/assets": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/@react-native/normalize-color": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/@react-native/polyfills": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/@react-navigation/core": {
- "version": "6.4.17",
- "resolved": "https://registry.npmmirror.com/@react-navigation/core/-/core-6.4.17.tgz",
- "integrity": "sha512-Nd76EpomzChWAosGqWOYE3ItayhDzIEzzZsT7PfGcRFDgW5miHV2t4MZcq9YIK4tzxZjVVpYbIynOOQQd1e0Cg==",
- "dependencies": {
- "@react-navigation/routers": "^6.1.9",
- "escape-string-regexp": "^4.0.0",
- "nanoid": "^3.1.23",
- "query-string": "^7.1.3",
- "react-is": "^16.13.0",
- "use-latest-callback": "^0.2.1"
- },
- "peerDependencies": {
- "react": "*"
- }
- },
- "node_modules/@react-navigation/core/node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/@react-navigation/core/node_modules/use-latest-callback": {
- "version": "0.2.1",
- "resolved": "https://registry.npmmirror.com/use-latest-callback/-/use-latest-callback-0.2.1.tgz",
- "integrity": "sha512-QWlq8Is8BGWBf883QOEQP5HWYX/kMI+JTbJ5rdtvJLmXTIh9XoHIO3PQcmQl8BU44VKxow1kbQUHa6mQSMALDQ==",
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/@react-navigation/drawer": {
- "version": "6.7.2",
- "resolved": "https://registry.npmmirror.com/@react-navigation/drawer/-/drawer-6.7.2.tgz",
- "integrity": "sha512-o4g2zgTZa2+oLd+8V33etrSM38KIqu8S/zCBTsdsHUoQyVE7JNRiv3Qgq/jMvEb8PZCqWmm7jHItcgzrBuwyOQ==",
- "dependencies": {
- "@react-navigation/elements": "^1.3.31",
- "color": "^4.2.3",
- "warn-once": "^0.1.0"
- },
- "peerDependencies": {
- "@react-navigation/native": "^6.0.0",
- "react": "*",
- "react-native": "*",
- "react-native-gesture-handler": ">= 1.0.0",
- "react-native-reanimated": ">= 1.0.0",
- "react-native-safe-area-context": ">= 3.0.0",
- "react-native-screens": ">= 3.0.0"
- }
- },
- "node_modules/@react-navigation/elements": {
- "version": "1.3.31",
- "resolved": "https://registry.npmmirror.com/@react-navigation/elements/-/elements-1.3.31.tgz",
- "integrity": "sha512-bUzP4Awlljx5RKEExw8WYtif8EuQni2glDaieYROKTnaxsu9kEIA515sXQgUDZU4Ob12VoL7+z70uO3qrlfXcQ==",
- "peerDependencies": {
- "@react-navigation/native": "^6.0.0",
- "react": "*",
- "react-native": "*",
- "react-native-safe-area-context": ">= 3.0.0"
- }
- },
- "node_modules/@react-navigation/native": {
- "version": "6.1.18",
- "resolved": "https://registry.npmmirror.com/@react-navigation/native/-/native-6.1.18.tgz",
- "integrity": "sha512-mIT9MiL/vMm4eirLcmw2h6h/Nm5FICtnYSdohq4vTLA2FF/6PNhByM7s8ffqoVfE5L0uAa6Xda1B7oddolUiGg==",
- "dependencies": {
- "@react-navigation/core": "^6.4.17",
- "escape-string-regexp": "^4.0.0",
- "fast-deep-equal": "^3.1.3",
- "nanoid": "^3.1.23"
- },
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/@react-navigation/native-stack": {
- "version": "6.10.1",
- "resolved": "https://registry.npmmirror.com/@react-navigation/native-stack/-/native-stack-6.10.1.tgz",
- "integrity": "sha512-MDTHtelO2EhY1sEbz4YMNw+1YoE0sWXSHLUYireQZFHUXKDfYiWYbxXg2Q08Ool0KEvnZjP0hh0Wm6/ZnvDCtw==",
- "dependencies": {
- "@react-navigation/elements": "^1.3.31",
- "warn-once": "^0.1.0"
- },
- "peerDependencies": {
- "@react-navigation/native": "^6.0.0",
- "react": "*",
- "react-native": "*",
- "react-native-safe-area-context": ">= 3.0.0",
- "react-native-screens": ">= 3.0.0"
- }
- },
- "node_modules/@react-navigation/native/node_modules/nanoid": {
- "version": "3.3.6",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/@react-navigation/routers": {
- "version": "6.1.9",
- "resolved": "https://registry.npmmirror.com/@react-navigation/routers/-/routers-6.1.9.tgz",
- "integrity": "sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==",
- "dependencies": {
- "nanoid": "^3.1.23"
- }
- },
- "node_modules/@react-navigation/routers/node_modules/nanoid": {
- "version": "3.3.7",
- "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz",
- "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "bin": {
- "nanoid": "bin/nanoid.cjs"
- },
- "engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
- }
- },
- "node_modules/@sayem314/react-native-keep-awake": {
- "version": "1.2.2",
- "license": "MIT",
- "funding": {
- "type": "individual",
- "url": "https://github.com/sponsors/sayem314"
- }
- },
- "node_modules/@shopify/flash-list": {
- "version": "1.7.0",
- "resolved": "https://registry.npmmirror.com/@shopify/flash-list/-/flash-list-1.7.0.tgz",
- "integrity": "sha512-Uys8mWTb0Y34Ts1hD97KrVFbFH9oY7qbj/u1oSrAS5PJAackDFbndUEVuTYyXSyWxHY0sRutF5HgS1yNdhj+0A==",
- "dependencies": {
- "recyclerlistview": "4.2.1",
- "tslib": "2.6.3"
- },
- "peerDependencies": {
- "@babel/runtime": "*",
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/@sideway/address": {
- "version": "4.1.4",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@hapi/hoek": "^9.0.0"
- }
- },
- "node_modules/@sideway/formula": {
- "version": "3.0.1",
- "license": "BSD-3-Clause"
- },
- "node_modules/@sideway/pinpoint": {
- "version": "2.0.0",
- "license": "BSD-3-Clause"
- },
- "node_modules/@sinclair/typebox": {
- "version": "0.27.8",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@sinonjs/commons": {
- "version": "1.8.6",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "type-detect": "4.0.8"
- }
- },
- "node_modules/@sinonjs/fake-timers": {
- "version": "6.0.1",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@sinonjs/commons": "^1.7.0"
- }
- },
- "node_modules/@svgr/babel-plugin-add-jsx-attribute": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-remove-jsx-attribute": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-svg-dynamic-title": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-svg-em-dimensions": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-transform-react-native-svg": {
- "version": "8.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-plugin-transform-svg-component": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/babel-preset": {
- "version": "8.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@svgr/babel-plugin-add-jsx-attribute": "8.0.0",
- "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0",
- "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0",
- "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0",
- "@svgr/babel-plugin-svg-dynamic-title": "8.0.0",
- "@svgr/babel-plugin-svg-em-dimensions": "8.0.0",
- "@svgr/babel-plugin-transform-react-native-svg": "8.1.0",
- "@svgr/babel-plugin-transform-svg-component": "8.0.0"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@svgr/core": {
- "version": "8.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.21.3",
- "@svgr/babel-preset": "8.1.0",
- "camelcase": "^6.2.0",
- "cosmiconfig": "^8.1.3",
- "snake-case": "^3.0.4"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- }
- },
- "node_modules/@svgr/core/node_modules/camelcase": {
- "version": "6.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@svgr/hast-util-to-babel-ast": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.21.3",
- "entities": "^4.4.0"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- }
- },
- "node_modules/@svgr/plugin-jsx": {
- "version": "8.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.21.3",
- "@svgr/babel-preset": "8.1.0",
- "@svgr/hast-util-to-babel-ast": "8.0.0",
- "svg-parser": "^2.0.4"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@svgr/core": "*"
- }
- },
- "node_modules/@svgr/plugin-svgo": {
- "version": "8.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cosmiconfig": "^8.1.3",
- "deepmerge": "^4.3.1",
- "svgo": "^3.0.2"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/gregberge"
- },
- "peerDependencies": {
- "@svgr/core": "*"
- }
- },
- "node_modules/@tokenizer/token": {
- "version": "0.3.0",
- "license": "MIT"
- },
- "node_modules/@tootallnate/once": {
- "version": "1.1.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@trysound/sax": {
- "version": "0.2.0",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/@tsconfig/node10": {
- "version": "1.0.9",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@tsconfig/node12": {
- "version": "1.0.11",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@tsconfig/node14": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@tsconfig/node16": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@tsconfig/react-native": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/babel__core": {
- "version": "7.20.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7",
- "@types/babel__generator": "*",
- "@types/babel__template": "*",
- "@types/babel__traverse": "*"
- }
- },
- "node_modules/@types/babel__generator": {
- "version": "7.6.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__template": {
- "version": "7.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "node_modules/@types/babel__traverse": {
- "version": "7.20.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.20.7"
- }
- },
- "node_modules/@types/color": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/color-convert": "*"
- }
- },
- "node_modules/@types/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/color-name": "*"
- }
- },
- "node_modules/@types/color-name": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/crypto-js": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/eslint-visitor-keys": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/graceful-fs": {
- "version": "4.1.6",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@types/hammerjs": {
- "version": "2.0.41",
- "license": "MIT"
- },
- "node_modules/@types/he": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/istanbul-lib-coverage": {
- "version": "2.0.4",
- "license": "MIT"
- },
- "node_modules/@types/istanbul-lib-report": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "@types/istanbul-lib-coverage": "*"
- }
- },
- "node_modules/@types/istanbul-reports": {
- "version": "3.0.1",
- "license": "MIT",
- "dependencies": {
- "@types/istanbul-lib-report": "*"
- }
- },
- "node_modules/@types/jest": {
- "version": "26.0.24",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "jest-diff": "^26.0.0",
- "pretty-format": "^26.0.0"
- }
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.12",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/lodash": {
- "version": "4.14.198",
- "license": "MIT"
- },
- "node_modules/@types/lodash.shuffle": {
- "version": "4.2.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/lodash": "*"
- }
- },
- "node_modules/@types/minimist": {
- "version": "1.2.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/node": {
- "version": "18.17.15",
- "license": "MIT"
- },
- "node_modules/@types/normalize-package-data": {
- "version": "2.4.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/object-path": {
- "version": "0.11.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/path-browserify": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/prettier": {
- "version": "2.7.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/prop-types": {
- "version": "15.7.5",
- "devOptional": true,
- "license": "MIT"
- },
- "node_modules/@types/qs": {
- "version": "6.9.8",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/react": {
- "version": "18.2.21",
- "devOptional": true,
- "license": "MIT",
- "dependencies": {
- "@types/prop-types": "*",
- "@types/scheduler": "*",
- "csstype": "^3.0.2"
- }
- },
- "node_modules/@types/react-native": {
- "version": "0.69.21",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/@types/react-native-background-timer": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/react-native-vector-icons": {
- "version": "6.4.14",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/react": "*",
- "@types/react-native": "^0.70"
- }
- },
- "node_modules/@types/react-native-vector-icons/node_modules/@types/react-native": {
- "version": "0.70.14",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/@types/react-test-renderer": {
- "version": "18.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/react": "*"
- }
- },
- "node_modules/@types/scheduler": {
- "version": "0.16.3",
- "devOptional": true,
- "license": "MIT"
- },
- "node_modules/@types/semver": {
- "version": "7.5.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/stack-utils": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/yargs": {
- "version": "15.0.15",
- "license": "MIT",
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/@types/yargs-parser": {
- "version": "21.0.0",
- "license": "MIT"
- },
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.62.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/type-utils": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
- "debug": "^4.3.4",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/@typescript-eslint/experimental-utils": {
- "version": "3.10.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/json-schema": "^7.0.3",
- "@typescript-eslint/types": "3.10.1",
- "@typescript-eslint/typescript-estree": "3.10.1",
- "eslint-scope": "^5.0.0",
- "eslint-utils": "^2.0.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- }
- },
- "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": {
- "version": "3.10.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": {
- "version": "3.10.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "3.10.1",
- "@typescript-eslint/visitor-keys": "3.10.1",
- "debug": "^4.1.1",
- "glob": "^7.1.6",
- "is-glob": "^4.0.1",
- "lodash": "^4.17.15",
- "semver": "^7.3.2",
- "tsutils": "^3.17.1"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": {
- "version": "3.10.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@typescript-eslint/experimental-utils/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/experimental-utils/node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/experimental-utils/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/@typescript-eslint/parser": {
- "version": "5.62.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
- "debug": "^4.3.4"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "5.62.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/type-utils": {
- "version": "5.62.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/typescript-estree": "5.62.0",
- "@typescript-eslint/utils": "5.62.0",
- "debug": "^4.3.4",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "5.62.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.62.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/visitor-keys": "5.62.0",
- "debug": "^4.3.4",
- "globby": "^11.1.0",
- "is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/@typescript-eslint/utils": {
- "version": "5.62.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.62.0",
- "@typescript-eslint/types": "5.62.0",
- "@typescript-eslint/typescript-estree": "5.62.0",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/utils/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.62.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@typescript-eslint/types": "5.62.0",
- "eslint-visitor-keys": "^3.3.0"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@xmldom/xmldom": {
- "version": "0.8.10",
- "license": "MIT",
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/abab": {
- "version": "2.0.6",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "node_modules/abort-controller": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "event-target-shim": "^5.0.0"
- },
- "engines": {
- "node": ">=6.5"
- }
- },
- "node_modules/abs-svg-path": {
- "version": "0.1.1",
- "license": "MIT"
- },
- "node_modules/absolute-path": {
- "version": "0.0.0",
- "license": "MIT"
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "license": "MIT",
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/acorn": {
- "version": "7.4.1",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-globals": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "acorn": "^7.1.1",
- "acorn-walk": "^7.1.1"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/acorn-walk": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/agent-base": {
- "version": "6.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "debug": "4"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "8.12.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/anser": {
- "version": "1.4.10",
- "license": "MIT"
- },
- "node_modules/ansi-colors": {
- "version": "4.1.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-fragments": {
- "version": "0.2.1",
- "license": "MIT",
- "dependencies": {
- "colorette": "^1.0.7",
- "slice-ansi": "^2.0.0",
- "strip-ansi": "^5.0.0"
- }
- },
- "node_modules/ansi-fragments/node_modules/ansi-regex": {
- "version": "4.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-fragments/node_modules/colorette": {
- "version": "1.4.0",
- "license": "MIT"
- },
- "node_modules/ansi-fragments/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/ansi-fragments/node_modules/slice-ansi": {
- "version": "2.1.0",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^3.2.0",
- "astral-regex": "^1.0.0",
- "is-fullwidth-code-point": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-fragments/node_modules/strip-ansi": {
- "version": "5.2.0",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/any-base": {
- "version": "1.1.0",
- "license": "MIT"
- },
- "node_modules/anymatch": {
- "version": "3.1.3",
- "license": "ISC",
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/appdirsjs": {
- "version": "1.2.7",
- "license": "MIT"
- },
- "node_modules/arg": {
- "version": "4.1.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/argparse": {
- "version": "1.0.10",
- "license": "MIT",
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/arr-diff": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-flatten": {
- "version": "1.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-union": {
- "version": "3.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-buffer-byte-length": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-ify": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/array-includes": {
- "version": "3.1.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/array-unique": {
- "version": "0.3.2",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array.prototype.flat": {
- "version": "1.3.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.flatmap": {
- "version": "1.3.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array.prototype.tosorted": {
- "version": "1.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-shim-unscopables": "^1.0.0",
- "get-intrinsic": "^1.2.1"
- }
- },
- "node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "is-array-buffer": "^3.0.2",
- "is-shared-array-buffer": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/arrify": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/asap": {
- "version": "2.0.6",
- "license": "MIT"
- },
- "node_modules/assign-symbols": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ast-types": {
- "version": "0.14.2",
- "license": "MIT",
- "dependencies": {
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/astral-regex": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/async": {
- "version": "3.2.4",
- "license": "MIT"
- },
- "node_modules/async-limiter": {
- "version": "1.0.1",
- "license": "MIT"
- },
- "node_modules/asynciterator.prototype": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-symbols": "^1.0.3"
- }
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "license": "MIT"
- },
- "node_modules/atob": {
- "version": "2.1.2",
- "license": "(MIT OR Apache-2.0)",
- "bin": {
- "atob": "bin/atob.js"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
- "node_modules/available-typed-arrays": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/axios": {
- "version": "0.27.2",
- "license": "MIT",
- "dependencies": {
- "follow-redirects": "^1.14.9",
- "form-data": "^4.0.0"
- }
- },
- "node_modules/b4a": {
- "version": "1.6.6",
- "resolved": "https://registry.npmmirror.com/b4a/-/b4a-1.6.6.tgz",
- "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg=="
- },
- "node_modules/babel-core": {
- "version": "7.0.0-bridge.0",
- "license": "MIT",
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/babel-eslint": {
- "version": "10.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "@babel/parser": "^7.7.0",
- "@babel/traverse": "^7.7.0",
- "@babel/types": "^7.7.0",
- "eslint-visitor-keys": "^1.0.0",
- "resolve": "^1.12.0"
- },
- "engines": {
- "node": ">=6"
- },
- "peerDependencies": {
- "eslint": ">= 4.12.1"
- }
- },
- "node_modules/babel-eslint/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/babel-jest": {
- "version": "26.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/babel__core": "^7.1.7",
- "babel-plugin-istanbul": "^6.0.0",
- "babel-preset-jest": "^26.6.2",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/babel-jest/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/babel-jest/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/babel-jest/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/babel-jest/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/babel-jest/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/babel-jest/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/babel-plugin-istanbul": {
- "version": "6.1.1",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@istanbuljs/load-nyc-config": "^1.0.0",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-instrument": "^5.0.4",
- "test-exclude": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/babel-plugin-jest-hoist": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.3.3",
- "@babel/types": "^7.3.3",
- "@types/babel__core": "^7.0.0",
- "@types/babel__traverse": "^7.0.6"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/babel-plugin-module-resolver": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "find-babel-config": "^1.2.0",
- "glob": "^7.1.6",
- "pkg-up": "^3.1.0",
- "reselect": "^4.0.0",
- "resolve": "^1.13.1"
- },
- "engines": {
- "node": ">= 8.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.5",
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.22.6",
- "@babel/helper-define-polyfill-provider": "^0.4.2",
- "semver": "^6.3.1"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.8.3",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.4.2",
- "core-js-compat": "^3.31.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.5.2",
- "license": "MIT",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.4.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/babel-plugin-syntax-trailing-function-commas": {
- "version": "7.0.0-beta.0",
- "license": "MIT"
- },
- "node_modules/babel-plugin-transform-remove-console": {
- "version": "6.9.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/babel-preset-current-node-syntax": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/plugin-syntax-async-generators": "^7.8.4",
- "@babel/plugin-syntax-bigint": "^7.8.3",
- "@babel/plugin-syntax-class-properties": "^7.8.3",
- "@babel/plugin-syntax-import-meta": "^7.8.3",
- "@babel/plugin-syntax-json-strings": "^7.8.3",
- "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
- "@babel/plugin-syntax-numeric-separator": "^7.8.3",
- "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
- "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
- "@babel/plugin-syntax-optional-chaining": "^7.8.3",
- "@babel/plugin-syntax-top-level-await": "^7.8.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/babel-preset-fbjs": {
- "version": "3.4.0",
- "license": "MIT",
- "dependencies": {
- "@babel/plugin-proposal-class-properties": "^7.0.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
- "@babel/plugin-syntax-class-properties": "^7.0.0",
- "@babel/plugin-syntax-flow": "^7.0.0",
- "@babel/plugin-syntax-jsx": "^7.0.0",
- "@babel/plugin-syntax-object-rest-spread": "^7.0.0",
- "@babel/plugin-transform-arrow-functions": "^7.0.0",
- "@babel/plugin-transform-block-scoped-functions": "^7.0.0",
- "@babel/plugin-transform-block-scoping": "^7.0.0",
- "@babel/plugin-transform-classes": "^7.0.0",
- "@babel/plugin-transform-computed-properties": "^7.0.0",
- "@babel/plugin-transform-destructuring": "^7.0.0",
- "@babel/plugin-transform-flow-strip-types": "^7.0.0",
- "@babel/plugin-transform-for-of": "^7.0.0",
- "@babel/plugin-transform-function-name": "^7.0.0",
- "@babel/plugin-transform-literals": "^7.0.0",
- "@babel/plugin-transform-member-expression-literals": "^7.0.0",
- "@babel/plugin-transform-modules-commonjs": "^7.0.0",
- "@babel/plugin-transform-object-super": "^7.0.0",
- "@babel/plugin-transform-parameters": "^7.0.0",
- "@babel/plugin-transform-property-literals": "^7.0.0",
- "@babel/plugin-transform-react-display-name": "^7.0.0",
- "@babel/plugin-transform-react-jsx": "^7.0.0",
- "@babel/plugin-transform-shorthand-properties": "^7.0.0",
- "@babel/plugin-transform-spread": "^7.0.0",
- "@babel/plugin-transform-template-literals": "^7.0.0",
- "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/babel-preset-jest": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "babel-plugin-jest-hoist": "^26.6.2",
- "babel-preset-current-node-syntax": "^1.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "license": "MIT"
- },
- "node_modules/bare-events": {
- "version": "2.4.2",
- "resolved": "https://registry.npmmirror.com/bare-events/-/bare-events-2.4.2.tgz",
- "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==",
- "optional": true
- },
- "node_modules/bare-fs": {
- "version": "2.3.1",
- "resolved": "https://registry.npmmirror.com/bare-fs/-/bare-fs-2.3.1.tgz",
- "integrity": "sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==",
- "optional": true,
- "dependencies": {
- "bare-events": "^2.0.0",
- "bare-path": "^2.0.0",
- "bare-stream": "^2.0.0"
- }
- },
- "node_modules/bare-os": {
- "version": "2.4.0",
- "resolved": "https://registry.npmmirror.com/bare-os/-/bare-os-2.4.0.tgz",
- "integrity": "sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==",
- "optional": true
- },
- "node_modules/bare-path": {
- "version": "2.1.3",
- "resolved": "https://registry.npmmirror.com/bare-path/-/bare-path-2.1.3.tgz",
- "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==",
- "optional": true,
- "dependencies": {
- "bare-os": "^2.1.0"
- }
- },
- "node_modules/bare-stream": {
- "version": "2.1.3",
- "resolved": "https://registry.npmmirror.com/bare-stream/-/bare-stream-2.1.3.tgz",
- "integrity": "sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==",
- "optional": true,
- "dependencies": {
- "streamx": "^2.18.0"
- }
- },
- "node_modules/base": {
- "version": "0.11.2",
- "license": "MIT",
- "dependencies": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base-64": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/base/node_modules/define-property": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base64-arraybuffer": {
- "version": "1.0.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
- "node_modules/base64-js": {
- "version": "1.5.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/big-integer": {
- "version": "1.6.51",
- "license": "Unlicense",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/bl": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "buffer": "^5.5.0",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "node_modules/bmp-js": {
- "version": "0.1.0",
- "license": "MIT"
- },
- "node_modules/boolbase": {
- "version": "1.0.0",
- "license": "ISC"
- },
- "node_modules/brace-expansion": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "license": "MIT",
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browser-process-hrtime": {
- "version": "1.0.0",
- "dev": true,
- "license": "BSD-2-Clause"
- },
- "node_modules/browserslist": {
- "version": "4.21.10",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "caniuse-lite": "^1.0.30001517",
- "electron-to-chromium": "^1.4.477",
- "node-releases": "^2.0.13",
- "update-browserslist-db": "^1.0.11"
- },
- "bin": {
- "browserslist": "cli.js"
- },
- "engines": {
- "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
- }
- },
- "node_modules/bser": {
- "version": "2.1.1",
- "license": "Apache-2.0",
- "dependencies": {
- "node-int64": "^0.4.0"
- }
- },
- "node_modules/buffer": {
- "version": "5.7.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "node_modules/buffer-equal": {
- "version": "0.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "license": "MIT"
- },
- "node_modules/byte-length": {
- "version": "1.0.2",
- "license": "MIT"
- },
- "node_modules/bytes": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/cache-base": {
- "version": "1.0.1",
- "license": "MIT",
- "dependencies": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.7",
- "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz",
- "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "set-function-length": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/caller-callsite": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "callsites": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/caller-callsite/node_modules/callsites": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/caller-path": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "caller-callsite": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase": {
- "version": "5.3.1",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase-keys": {
- "version": "6.2.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "camelcase": "^5.3.1",
- "map-obj": "^4.0.0",
- "quick-lru": "^4.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/caniuse-lite": {
- "version": "1.0.30001532",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "CC-BY-4.0"
- },
- "node_modules/capture-exit": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "rsvp": "^4.8.4"
- },
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/chalk/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/char-regex": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/charenc": {
- "version": "0.0.2",
- "license": "BSD-3-Clause",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/cheerio": {
- "version": "1.0.0-rc.12",
- "license": "MIT",
- "dependencies": {
- "cheerio-select": "^2.1.0",
- "dom-serializer": "^2.0.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "htmlparser2": "^8.0.1",
- "parse5": "^7.0.0",
- "parse5-htmlparser2-tree-adapter": "^7.0.0"
- },
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
- }
- },
- "node_modules/cheerio-select": {
- "version": "2.1.0",
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-select": "^5.1.0",
- "css-what": "^6.1.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
- },
- "node_modules/ci-info": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/cjs-module-lexer": {
- "version": "0.6.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/class-utils": {
- "version": "0.3.6",
- "license": "MIT",
- "dependencies": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/define-property": {
- "version": "0.2.5",
- "license": "MIT",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-descriptor": {
- "version": "0.1.6",
- "license": "MIT",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/kind-of": {
- "version": "5.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cli-cursor": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "restore-cursor": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-spinners": {
- "version": "2.9.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cli-truncate": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "slice-ansi": "^5.0.0",
- "string-width": "^5.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/cliui": {
- "version": "8.0.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/cliui/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/cliui/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/cliui/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cliui/node_modules/emoji-regex": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cliui/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/clone": {
- "version": "1.0.4",
- "license": "MIT",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/clone-deep": {
- "version": "4.0.1",
- "license": "MIT",
- "dependencies": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/co": {
- "version": "4.6.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">= 1.0.0",
- "node": ">= 0.12.0"
- }
- },
- "node_modules/collect-v8-coverage": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/collection-visit": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/color": {
- "version": "4.2.3",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1",
- "color-string": "^1.9.0"
- },
- "engines": {
- "node": ">=12.5.0"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "license": "MIT",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "license": "MIT"
- },
- "node_modules/color-string": {
- "version": "1.9.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "^1.0.0",
- "simple-swizzle": "^0.2.2"
- }
- },
- "node_modules/color/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/colorette": {
- "version": "2.0.20",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "license": "MIT",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/command-exists": {
- "version": "1.2.9",
- "license": "MIT"
- },
- "node_modules/commander": {
- "version": "11.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/commondir": {
- "version": "1.0.1",
- "license": "MIT"
- },
- "node_modules/compare-func": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-ify": "^1.0.0",
- "dot-prop": "^5.1.0"
- }
- },
- "node_modules/compare-versions": {
- "version": "6.1.0",
- "license": "MIT"
- },
- "node_modules/component-emitter": {
- "version": "1.3.0",
- "license": "MIT"
- },
- "node_modules/compressible": {
- "version": "2.0.18",
- "license": "MIT",
- "dependencies": {
- "mime-db": ">= 1.43.0 < 2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/compression": {
- "version": "1.7.4",
- "license": "MIT",
- "dependencies": {
- "accepts": "~1.3.5",
- "bytes": "3.0.0",
- "compressible": "~2.0.16",
- "debug": "2.6.9",
- "on-headers": "~1.0.2",
- "safe-buffer": "5.1.2",
- "vary": "~1.1.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/compression/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/compression/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "license": "MIT"
- },
- "node_modules/connect": {
- "version": "3.7.0",
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "finalhandler": "1.1.2",
- "parseurl": "~1.3.3",
- "utils-merge": "1.0.1"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/connect/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/connect/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/conventional-changelog-angular": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "compare-func": "^2.0.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/conventional-changelog-conventionalcommits": {
- "version": "6.1.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "compare-func": "^2.0.0"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/conventional-commits-parser": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-text-path": "^1.0.1",
- "JSONStream": "^1.3.5",
- "meow": "^8.1.2",
- "split2": "^3.2.2"
- },
- "bin": {
- "conventional-commits-parser": "cli.js"
- },
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/convert-source-map": {
- "version": "1.9.0",
- "license": "MIT"
- },
- "node_modules/copy-descriptor": {
- "version": "0.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/core-js-compat": {
- "version": "3.32.2",
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.21.10"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.3",
- "license": "MIT"
- },
- "node_modules/cosmiconfig": {
- "version": "8.3.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "import-fresh": "^3.3.0",
- "js-yaml": "^4.1.0",
- "parse-json": "^5.2.0",
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/d-fischer"
- },
- "peerDependencies": {
- "typescript": ">=4.9.5"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/cosmiconfig-typescript-loader": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=v14.21.3"
- },
- "peerDependencies": {
- "@types/node": "*",
- "cosmiconfig": ">=7",
- "ts-node": ">=10",
- "typescript": ">=4"
- }
- },
- "node_modules/cosmiconfig/node_modules/argparse": {
- "version": "2.0.1",
- "dev": true,
- "license": "Python-2.0"
- },
- "node_modules/cosmiconfig/node_modules/js-yaml": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/create-require": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/crypt": {
- "version": "0.0.2",
- "license": "BSD-3-Clause",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/crypto-js": {
- "version": "4.1.1",
- "license": "MIT"
- },
- "node_modules/css-line-break": {
- "version": "2.1.0",
- "license": "MIT",
- "dependencies": {
- "utrie": "^1.0.2"
- }
- },
- "node_modules/css-select": {
- "version": "5.1.0",
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0",
- "css-what": "^6.1.0",
- "domhandler": "^5.0.2",
- "domutils": "^3.0.1",
- "nth-check": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/css-tree": {
- "version": "1.1.3",
- "license": "MIT",
- "dependencies": {
- "mdn-data": "2.0.14",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/css-what": {
- "version": "6.1.0",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">= 6"
- },
- "funding": {
- "url": "https://github.com/sponsors/fb55"
- }
- },
- "node_modules/csso": {
- "version": "5.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "css-tree": "~2.2.0"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/csso/node_modules/css-tree": {
- "version": "2.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mdn-data": "2.0.28",
- "source-map-js": "^1.0.1"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0",
- "npm": ">=7.0.0"
- }
- },
- "node_modules/csso/node_modules/mdn-data": {
- "version": "2.0.28",
- "dev": true,
- "license": "CC0-1.0"
- },
- "node_modules/cssom": {
- "version": "0.4.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cssstyle": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssom": "~0.3.6"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cssstyle/node_modules/cssom": {
- "version": "0.3.8",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/csstype": {
- "version": "3.1.2",
- "devOptional": true,
- "license": "MIT"
- },
- "node_modules/dargs": {
- "version": "7.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/data-uri-to-buffer": {
- "version": "4.0.1",
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 12"
- }
- },
- "node_modules/data-urls": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "abab": "^2.0.3",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/dayjs": {
- "version": "1.11.12",
- "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.12.tgz",
- "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg=="
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "license": "MIT",
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decamelize": {
- "version": "1.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decamelize-keys": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/decamelize-keys/node_modules/map-obj": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decimal.js": {
- "version": "10.4.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/decode-uri-component": {
- "version": "0.2.2",
- "license": "MIT",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/decompress-response": {
- "version": "6.0.0",
- "resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz",
- "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
- "dependencies": {
- "mimic-response": "^3.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmmirror.com/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/deepmerge": {
- "version": "4.3.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/defaults": {
- "version": "1.0.4",
- "license": "MIT",
- "dependencies": {
- "clone": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/define-data-property": {
- "version": "1.1.4",
- "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz",
- "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
- "dependencies": {
- "es-define-property": "^1.0.0",
- "es-errors": "^1.3.0",
- "gopd": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/define-properties": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/define-property": {
- "version": "2.0.2",
- "license": "MIT",
- "dependencies": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/denodeify": {
- "version": "1.2.1",
- "license": "MIT"
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/detect-libc": {
- "version": "2.0.3",
- "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.3.tgz",
- "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/detect-newline": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/diff": {
- "version": "4.0.2",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/diff-sequences": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/dom-serializer": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.2",
- "entities": "^4.2.0"
- },
- "funding": {
- "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
- }
- },
- "node_modules/dom-walk": {
- "version": "0.1.2"
- },
- "node_modules/domelementtype": {
- "version": "2.3.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "BSD-2-Clause"
- },
- "node_modules/domexception": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "webidl-conversions": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/domexception/node_modules/webidl-conversions": {
- "version": "5.0.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/domhandler": {
- "version": "5.0.3",
- "license": "BSD-2-Clause",
- "dependencies": {
- "domelementtype": "^2.3.0"
- },
- "engines": {
- "node": ">= 4"
- },
- "funding": {
- "url": "https://github.com/fb55/domhandler?sponsor=1"
- }
- },
- "node_modules/domutils": {
- "version": "3.1.0",
- "license": "BSD-2-Clause",
- "dependencies": {
- "dom-serializer": "^2.0.0",
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3"
- },
- "funding": {
- "url": "https://github.com/fb55/domutils?sponsor=1"
- }
- },
- "node_modules/dot-case": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "no-case": "^3.0.4",
- "tslib": "^2.0.3"
- }
- },
- "node_modules/dot-prop": {
- "version": "5.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-obj": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "license": "MIT"
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.513",
- "license": "ISC"
- },
- "node_modules/emittery": {
- "version": "0.7.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/emittery?sponsor=1"
- }
- },
- "node_modules/emoji-regex": {
- "version": "9.2.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "license": "MIT",
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/enquirer": {
- "version": "2.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-colors": "^4.1.1",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/entities": {
- "version": "4.5.0",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.12"
- },
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
- }
- },
- "node_modules/envinfo": {
- "version": "7.10.0",
- "license": "MIT",
- "bin": {
- "envinfo": "dist/cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/error-ex": {
- "version": "1.3.2",
- "license": "MIT",
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/error-stack-parser": {
- "version": "2.1.4",
- "license": "MIT",
- "dependencies": {
- "stackframe": "^1.3.4"
- }
- },
- "node_modules/errorhandler": {
- "version": "1.5.1",
- "license": "MIT",
- "dependencies": {
- "accepts": "~1.3.7",
- "escape-html": "~1.0.3"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/es-abstract": {
- "version": "1.22.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "arraybuffer.prototype.slice": "^1.0.1",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.2.1",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.10",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.12.3",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.0",
- "safe-array-concat": "^1.0.0",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.7",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "typed-array-buffer": "^1.0.0",
- "typed-array-byte-length": "^1.0.0",
- "typed-array-byte-offset": "^1.0.0",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz",
- "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
- "dependencies": {
- "get-intrinsic": "^1.2.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-errors": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
- "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-iterator-helpers": {
- "version": "1.0.14",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "asynciterator.prototype": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "es-set-tostringtag": "^2.0.1",
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.2.1",
- "globalthis": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "iterator.prototype": "^1.1.0",
- "safe-array-concat": "^1.0.0"
- }
- },
- "node_modules/es-set-tostringtag": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-shim-unscopables": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has": "^1.0.3"
- }
- },
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/escalade": {
- "version": "3.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "license": "MIT"
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/escodegen": {
- "version": "2.1.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esprima": "^4.0.1",
- "estraverse": "^5.2.0",
- "esutils": "^2.0.2"
- },
- "bin": {
- "escodegen": "bin/escodegen.js",
- "esgenerate": "bin/esgenerate.js"
- },
- "engines": {
- "node": ">=6.0"
- },
- "optionalDependencies": {
- "source-map": "~0.6.1"
- }
- },
- "node_modules/eslint": {
- "version": "7.32.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.3",
- "@humanwhocodes/config-array": "^0.5.0",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "enquirer": "^2.3.5",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^2.0.0",
- "espree": "^7.3.1",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.1.2",
- "globals": "^13.6.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "progress": "^2.0.0",
- "regexpp": "^3.1.0",
- "semver": "^7.2.1",
- "strip-ansi": "^6.0.0",
- "strip-json-comments": "^3.1.0",
- "table": "^6.0.9",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-config-prettier": {
- "version": "8.10.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "eslint-config-prettier": "bin/cli.js"
- },
- "peerDependencies": {
- "eslint": ">=7.0.0"
- }
- },
- "node_modules/eslint-plugin-eslint-comments": {
- "version": "3.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "escape-string-regexp": "^1.0.5",
- "ignore": "^5.0.5"
- },
- "engines": {
- "node": ">=6.5.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=4.19.1"
- }
- },
- "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/eslint-plugin-flowtype": {
- "version": "2.50.3",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "lodash": "^4.17.10"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": ">=2.0.0"
- }
- },
- "node_modules/eslint-plugin-jest": {
- "version": "22.4.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- },
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-plugin-prettier": {
- "version": "4.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prettier-linter-helpers": "^1.0.0"
- },
- "engines": {
- "node": ">=12.0.0"
- },
- "peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
- },
- "peerDependenciesMeta": {
- "eslint-config-prettier": {
- "optional": true
- }
- }
- },
- "node_modules/eslint-plugin-react": {
- "version": "7.33.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flatmap": "^1.3.1",
- "array.prototype.tosorted": "^1.1.1",
- "doctrine": "^2.1.0",
- "es-iterator-helpers": "^1.0.12",
- "estraverse": "^5.3.0",
- "jsx-ast-utils": "^2.4.1 || ^3.0.0",
- "minimatch": "^3.1.2",
- "object.entries": "^1.1.6",
- "object.fromentries": "^2.0.6",
- "object.hasown": "^1.1.2",
- "object.values": "^1.1.6",
- "prop-types": "^15.8.1",
- "resolve": "^2.0.0-next.4",
- "semver": "^6.3.1",
- "string.prototype.matchall": "^4.0.8"
- },
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8"
- }
- },
- "node_modules/eslint-plugin-react-hooks": {
- "version": "4.6.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0"
- }
- },
- "node_modules/eslint-plugin-react-native": {
- "version": "3.11.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.7.4",
- "eslint-plugin-react-native-globals": "^0.1.1"
- },
- "peerDependencies": {
- "eslint": "^3.17.0 || ^4 || ^5 || ^6 || ^7"
- }
- },
- "node_modules/eslint-plugin-react-native-globals": {
- "version": "0.1.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/eslint-plugin-react/node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/eslint-plugin-react/node_modules/doctrine": {
- "version": "2.1.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/eslint-plugin-react/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/eslint-plugin-react/node_modules/resolve": {
- "version": "2.0.0-next.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.9.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/eslint-scope/node_modules/estraverse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/eslint-utils": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint/node_modules/@babel/code-frame": {
- "version": "7.12.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "node_modules/eslint/node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/eslint/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/eslint/node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/eslint/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/eslint/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/eslint/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/eslint/node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint/node_modules/globals": {
- "version": "13.21.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/eslint/node_modules/ignore": {
- "version": "4.0.6",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/eslint/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/eslint/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/eslint/node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/eslint/node_modules/type-fest": {
- "version": "0.20.2",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/espree": {
- "version": "7.3.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "acorn": "^7.4.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^1.3.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/espree/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "license": "BSD-2-Clause",
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/esquery": {
- "version": "1.5.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "5.3.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/event-target-shim": {
- "version": "5.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/eventemitter3": {
- "version": "5.0.1",
- "license": "MIT"
- },
- "node_modules/exec-sh": {
- "version": "0.3.6",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/execa": {
- "version": "5.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.0",
- "human-signals": "^2.1.0",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.1",
- "onetime": "^5.1.2",
- "signal-exit": "^3.0.3",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/exif-parser": {
- "version": "0.1.12"
- },
- "node_modules/exit": {
- "version": "0.1.2",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/expand-brackets": {
- "version": "2.1.4",
- "license": "MIT",
- "dependencies": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/expand-brackets/node_modules/define-property": {
- "version": "0.2.5",
- "license": "MIT",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/extend-shallow": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-descriptor": {
- "version": "0.1.6",
- "license": "MIT",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-extendable": {
- "version": "0.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/kind-of": {
- "version": "5.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/expand-template": {
- "version": "2.0.3",
- "resolved": "https://registry.npmmirror.com/expand-template/-/expand-template-2.0.3.tgz",
- "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/expect": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "ansi-styles": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-regex-util": "^26.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/expect/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/expect/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/expect/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/extend-shallow": {
- "version": "3.0.2",
- "license": "MIT",
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob": {
- "version": "2.0.4",
- "license": "MIT",
- "dependencies": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/define-property": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/extend-shallow": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/is-extendable": {
- "version": "0.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fast-base64-decode": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "license": "MIT"
- },
- "node_modules/fast-diff": {
- "version": "1.3.0",
- "dev": true,
- "license": "Apache-2.0"
- },
- "node_modules/fast-fifo": {
- "version": "1.3.2",
- "resolved": "https://registry.npmmirror.com/fast-fifo/-/fast-fifo-1.3.2.tgz",
- "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="
- },
- "node_modules/fast-glob": {
- "version": "3.3.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fast-xml-parser": {
- "version": "4.3.2",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/NaturalIntelligence"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/naturalintelligence"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "strnum": "^1.0.5"
- },
- "bin": {
- "fxparser": "src/cli/cli.js"
- }
- },
- "node_modules/fastq": {
- "version": "1.15.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/fb-watchman": {
- "version": "2.0.2",
- "license": "Apache-2.0",
- "dependencies": {
- "bser": "2.1.1"
- }
- },
- "node_modules/fetch-blob": {
- "version": "3.2.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/jimmywarting"
- },
- {
- "type": "paypal",
- "url": "https://paypal.me/jimmywarting"
- }
- ],
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "node-domexception": "^1.0.0",
- "web-streams-polyfill": "^3.0.3"
- },
- "engines": {
- "node": "^12.20 || >= 14.13"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/file-type": {
- "version": "16.5.4",
- "license": "MIT",
- "dependencies": {
- "readable-web-to-node-stream": "^3.0.0",
- "strtok3": "^6.2.4",
- "token-types": "^4.1.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/file-type?sponsor=1"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "license": "MIT",
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/filter-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-1.1.0.tgz",
- "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.1.2",
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/finalhandler/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/finalhandler/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/find-babel-config": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "json5": "^0.5.1",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/find-babel-config/node_modules/json5": {
- "version": "0.5.1",
- "dev": true,
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- }
- },
- "node_modules/find-cache-dir": {
- "version": "2.1.0",
- "license": "MIT",
- "dependencies": {
- "commondir": "^1.0.1",
- "make-dir": "^2.0.0",
- "pkg-dir": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/find-cache-dir/node_modules/find-up": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "locate-path": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/find-cache-dir/node_modules/locate-path": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/find-cache-dir/node_modules/make-dir": {
- "version": "2.1.0",
- "license": "MIT",
- "dependencies": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/find-cache-dir/node_modules/p-limit": {
- "version": "2.3.0",
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/find-cache-dir/node_modules/p-locate": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/find-cache-dir/node_modules/pkg-dir": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "find-up": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/find-cache-dir/node_modules/semver": {
- "version": "5.7.2",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/find-up": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/find-up/node_modules/path-exists": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/flat-cache": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "flatted": "^3.2.7",
- "keyv": "^4.5.3",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/flatted": {
- "version": "3.2.7",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/flow-parser": {
- "version": "0.121.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/follow-redirects": {
- "version": "1.15.2",
- "funding": [
- {
- "type": "individual",
- "url": "https://github.com/sponsors/RubenVerborgh"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- },
- "peerDependenciesMeta": {
- "debug": {
- "optional": true
- }
- }
- },
- "node_modules/for-each": {
- "version": "0.3.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-callable": "^1.1.3"
- }
- },
- "node_modules/for-in": {
- "version": "1.0.2",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/form-data": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/formdata-polyfill": {
- "version": "4.0.10",
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "fetch-blob": "^3.1.2"
- },
- "engines": {
- "node": ">=12.20.0"
- }
- },
- "node_modules/fragment-cache": {
- "version": "0.2.1",
- "license": "MIT",
- "dependencies": {
- "map-cache": "^0.2.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fs-constants": {
- "version": "1.0.0",
- "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz",
- "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
- },
- "node_modules/fs-extra": {
- "version": "11.1.1",
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=14.14"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "license": "ISC"
- },
- "node_modules/function-bind": {
- "version": "1.1.2",
- "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
- "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/function.prototype.name": {
- "version": "1.1.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "functions-have-names": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gensync": {
- "version": "1.0.0-beta.2",
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "license": "ISC",
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.4",
- "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
- "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
- "dependencies": {
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "hasown": "^2.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-package-type": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/get-stdin": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/get-stream": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/get-symbol-description": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-value": {
- "version": "2.0.6",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gifwrap": {
- "version": "0.9.4",
- "license": "MIT",
- "dependencies": {
- "image-q": "^4.0.0",
- "omggif": "^1.0.10"
- }
- },
- "node_modules/git-raw-commits": {
- "version": "2.0.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "dargs": "^7.0.0",
- "lodash": "^4.17.15",
- "meow": "^8.0.0",
- "split2": "^3.0.0",
- "through2": "^4.0.0"
- },
- "bin": {
- "git-raw-commits": "cli.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/github-from-package": {
- "version": "0.0.0",
- "resolved": "https://registry.npmmirror.com/github-from-package/-/github-from-package-0.0.0.tgz",
- "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/glob/node_modules/brace-expansion": {
- "version": "1.1.11",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/glob/node_modules/minimatch": {
- "version": "3.1.2",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/global": {
- "version": "4.4.0",
- "license": "MIT",
- "dependencies": {
- "min-document": "^2.19.0",
- "process": "^0.11.10"
- }
- },
- "node_modules/global-dirs": {
- "version": "0.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ini": "^1.3.4"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/globals": {
- "version": "11.12.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/globalthis": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/globby": {
- "version": "11.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/gopd": {
- "version": "1.0.1",
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "license": "ISC"
- },
- "node_modules/graphemer": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/growly": {
- "version": "1.3.0",
- "dev": true,
- "license": "MIT",
- "optional": true
- },
- "node_modules/hard-rejection": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
- "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
- "dependencies": {
- "es-define-property": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.0.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-value": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-number": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/kind-of": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dependencies": {
- "function-bind": "^1.1.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/he": {
- "version": "1.2.0",
- "license": "MIT",
- "bin": {
- "he": "bin/he"
- }
- },
- "node_modules/hermes-engine": {
- "version": "0.11.0",
- "license": "MIT"
- },
- "node_modules/hermes-estree": {
- "version": "0.6.0",
- "license": "MIT"
- },
- "node_modules/hermes-parser": {
- "version": "0.6.0",
- "license": "MIT",
- "dependencies": {
- "hermes-estree": "0.6.0"
- }
- },
- "node_modules/hermes-profile-transformer": {
- "version": "0.0.6",
- "license": "MIT",
- "dependencies": {
- "source-map": "^0.7.3"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/hermes-profile-transformer/node_modules/source-map": {
- "version": "0.7.4",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/hoist-non-react-statics": {
- "version": "3.3.2",
- "license": "BSD-3-Clause",
- "dependencies": {
- "react-is": "^16.7.0"
- }
- },
- "node_modules/hosted-git-info": {
- "version": "4.1.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/hosted-git-info/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/hosted-git-info/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/hot-patcher": {
- "version": "2.0.1",
- "license": "MIT"
- },
- "node_modules/html-encoding-sniffer": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "whatwg-encoding": "^1.0.5"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/html-escaper": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/html2canvas": {
- "version": "1.4.1",
- "license": "MIT",
- "dependencies": {
- "css-line-break": "^2.1.0",
- "text-segmentation": "^1.0.3"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/htmlparser2": {
- "version": "8.0.2",
- "funding": [
- "https://github.com/fb55/htmlparser2?sponsor=1",
- {
- "type": "github",
- "url": "https://github.com/sponsors/fb55"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "domelementtype": "^2.3.0",
- "domhandler": "^5.0.3",
- "domutils": "^3.0.1",
- "entities": "^4.4.0"
- }
- },
- "node_modules/http-errors": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/http-errors/node_modules/statuses": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/http-proxy-agent": {
- "version": "4.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@tootallnate/once": "1",
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/https-proxy-agent": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "agent-base": "6",
- "debug": "4"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/human-signals": {
- "version": "2.1.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=10.17.0"
- }
- },
- "node_modules/husky": {
- "version": "8.0.3",
- "dev": true,
- "license": "MIT",
- "bin": {
- "husky": "lib/bin.js"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/typicode"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ieee754": {
- "version": "1.2.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "BSD-3-Clause"
- },
- "node_modules/ignore": {
- "version": "5.2.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/image-q": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "@types/node": "16.9.1"
- }
- },
- "node_modules/image-q/node_modules/@types/node": {
- "version": "16.9.1",
- "license": "MIT"
- },
- "node_modules/image-size": {
- "version": "0.6.3",
- "license": "MIT",
- "bin": {
- "image-size": "bin/image-size.js"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/immer": {
- "version": "9.0.21",
- "license": "MIT",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/immer"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/import-fresh/node_modules/resolve-from": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/import-local": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pkg-dir": "^4.2.0",
- "resolve-cwd": "^3.0.0"
- },
- "bin": {
- "import-local-fixture": "fixtures/cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/indent-string": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "license": "ISC"
- },
- "node_modules/ini": {
- "version": "1.3.8",
- "license": "ISC"
- },
- "node_modules/internal-slot": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.2.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/invariant": {
- "version": "2.2.4",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.0.0"
- }
- },
- "node_modules/ip": {
- "version": "1.1.8",
- "license": "MIT"
- },
- "node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-array-buffer": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "license": "MIT"
- },
- "node_modules/is-async-function": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-bigints": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-buffer": {
- "version": "1.1.6",
- "license": "MIT"
- },
- "node_modules/is-callable": {
- "version": "1.2.7",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-ci": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ci-info": "^2.0.0"
- },
- "bin": {
- "is-ci": "bin.js"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.13.0",
- "license": "MIT",
- "dependencies": {
- "has": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-descriptor": {
- "version": "1.0.2",
- "license": "MIT",
- "dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-directory": {
- "version": "0.3.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-docker": {
- "version": "2.2.1",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "bin": {
- "is-docker": "cli.js"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-extendable": {
- "version": "1.0.1",
- "license": "MIT",
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-finalizationregistry": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-function": {
- "version": "1.0.2",
- "license": "MIT"
- },
- "node_modules/is-generator-fn": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/is-generator-function": {
- "version": "1.0.10",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-interactive": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-map": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-negative-zero": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-number-object": {
- "version": "1.0.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-obj": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "2.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-plain-object": {
- "version": "2.0.4",
- "license": "MIT",
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-potential-custom-element-name": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/is-regex": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-set": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-stream": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-string": {
- "version": "1.0.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-text-path": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "text-extensions": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-typed-array": {
- "version": "1.1.12",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "which-typed-array": "^1.1.11"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-weakmap": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-weakref": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-weakset": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-windows": {
- "version": "1.0.2",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-wsl": {
- "version": "2.2.0",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "is-docker": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/isarray": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "license": "ISC"
- },
- "node_modules/isobject": {
- "version": "3.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/istanbul-lib-coverage": {
- "version": "3.2.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-instrument": {
- "version": "5.2.1",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "@babel/core": "^7.12.3",
- "@babel/parser": "^7.14.7",
- "@istanbuljs/schema": "^0.1.2",
- "istanbul-lib-coverage": "^3.2.0",
- "semver": "^6.3.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-report": {
- "version": "3.0.1",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "istanbul-lib-coverage": "^3.0.0",
- "make-dir": "^4.0.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/istanbul-lib-report/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-report/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/istanbul-lib-source-maps": {
- "version": "4.0.1",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0",
- "source-map": "^0.6.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/istanbul-reports": {
- "version": "3.1.6",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "html-escaper": "^2.0.0",
- "istanbul-lib-report": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/iterator.prototype": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-properties": "^1.2.0",
- "get-intrinsic": "^1.2.1",
- "has-symbols": "^1.0.3",
- "reflect.getprototypeof": "^1.0.3"
- }
- },
- "node_modules/jest": {
- "version": "26.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/core": "^26.6.3",
- "import-local": "^3.0.2",
- "jest-cli": "^26.6.3"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-changed-files": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "execa": "^4.0.0",
- "throat": "^5.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-changed-files/node_modules/execa": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/jest-changed-files/node_modules/get-stream": {
- "version": "5.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/jest-changed-files/node_modules/human-signals": {
- "version": "1.1.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=8.12.0"
- }
- },
- "node_modules/jest-cli": {
- "version": "26.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/core": "^26.6.3",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "import-local": "^3.0.2",
- "is-ci": "^2.0.0",
- "jest-config": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "prompts": "^2.0.1",
- "yargs": "^15.4.1"
- },
- "bin": {
- "jest": "bin/jest.js"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-cli/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-cli/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-cli/node_modules/cliui": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
- "node_modules/jest-cli/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-cli/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-cli/node_modules/emoji-regex": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-cli/node_modules/find-up": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/locate-path": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/p-limit": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/jest-cli/node_modules/p-locate": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/y18n": {
- "version": "4.0.3",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/jest-cli/node_modules/yargs": {
- "version": "15.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-cli/node_modules/yargs-parser": {
- "version": "18.1.3",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jest-config": {
- "version": "26.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.1.0",
- "@jest/test-sequencer": "^26.6.3",
- "@jest/types": "^26.6.2",
- "babel-jest": "^26.6.3",
- "chalk": "^4.0.0",
- "deepmerge": "^4.2.2",
- "glob": "^7.1.1",
- "graceful-fs": "^4.2.4",
- "jest-environment-jsdom": "^26.6.2",
- "jest-environment-node": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-jasmine2": "^26.6.3",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "peerDependencies": {
- "ts-node": ">=9.0.0"
- },
- "peerDependenciesMeta": {
- "ts-node": {
- "optional": true
- }
- }
- },
- "node_modules/jest-config/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-config/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-config/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-config/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-config/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-config/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-diff": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.0.0",
- "diff-sequences": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-diff/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-diff/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-diff/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-diff/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-diff/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-diff/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-docblock": {
- "version": "26.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "detect-newline": "^3.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-each": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-each/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-each/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-each/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-each/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-each/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-each/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-environment-jsdom": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2",
- "jsdom": "^16.4.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-environment-node": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "jest-mock": "^26.6.2",
- "jest-util": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-get-type": {
- "version": "26.3.0",
- "license": "MIT",
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-haste-map": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "jest-regex-util": "^26.0.0",
- "jest-serializer": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "micromatch": "^4.0.2",
- "sane": "^4.0.3",
- "walker": "^1.0.7"
- },
- "engines": {
- "node": ">= 10.14.2"
- },
- "optionalDependencies": {
- "fsevents": "^2.1.2"
- }
- },
- "node_modules/jest-jasmine2": {
- "version": "26.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.1.0",
- "@jest/environment": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "co": "^4.6.0",
- "expect": "^26.6.2",
- "is-generator-fn": "^2.0.0",
- "jest-each": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "pretty-format": "^26.6.2",
- "throat": "^5.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-jasmine2/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-jasmine2/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-jasmine2/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-jasmine2/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-jasmine2/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-jasmine2/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-leak-detector": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-matcher-utils": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.0.0",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-matcher-utils/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-matcher-utils/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-message-util": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "@jest/types": "^26.6.2",
- "@types/stack-utils": "^2.0.0",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "micromatch": "^4.0.2",
- "pretty-format": "^26.6.2",
- "slash": "^3.0.0",
- "stack-utils": "^2.0.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-message-util/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-message-util/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-message-util/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-message-util/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-message-util/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-message-util/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-mock": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "@types/node": "*"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-pnp-resolver": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- },
- "peerDependencies": {
- "jest-resolve": "*"
- },
- "peerDependenciesMeta": {
- "jest-resolve": {
- "optional": true
- }
- }
- },
- "node_modules/jest-regex-util": {
- "version": "26.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-resolve": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "jest-pnp-resolver": "^1.2.2",
- "jest-util": "^26.6.2",
- "read-pkg-up": "^7.0.1",
- "resolve": "^1.18.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-resolve-dependencies": {
- "version": "26.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-snapshot": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-resolve/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-resolve/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-resolve/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-resolve/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-resolve/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-resolve/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runner": {
- "version": "26.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "emittery": "^0.7.1",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-docblock": "^26.0.0",
- "jest-haste-map": "^26.6.2",
- "jest-leak-detector": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "jest-runtime": "^26.6.3",
- "jest-util": "^26.6.2",
- "jest-worker": "^26.6.2",
- "source-map-support": "^0.5.6",
- "throat": "^5.0.0"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-runner/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-runner/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-runner/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-runner/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-runner/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runner/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime": {
- "version": "26.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/console": "^26.6.2",
- "@jest/environment": "^26.6.2",
- "@jest/fake-timers": "^26.6.2",
- "@jest/globals": "^26.6.2",
- "@jest/source-map": "^26.6.2",
- "@jest/test-result": "^26.6.2",
- "@jest/transform": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/yargs": "^15.0.0",
- "chalk": "^4.0.0",
- "cjs-module-lexer": "^0.6.0",
- "collect-v8-coverage": "^1.0.0",
- "exit": "^0.1.2",
- "glob": "^7.1.3",
- "graceful-fs": "^4.2.4",
- "jest-config": "^26.6.3",
- "jest-haste-map": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-mock": "^26.6.2",
- "jest-regex-util": "^26.0.0",
- "jest-resolve": "^26.6.2",
- "jest-snapshot": "^26.6.2",
- "jest-util": "^26.6.2",
- "jest-validate": "^26.6.2",
- "slash": "^3.0.0",
- "strip-bom": "^4.0.0",
- "yargs": "^15.4.1"
- },
- "bin": {
- "jest-runtime": "bin/jest-runtime.js"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-runtime/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-runtime/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-runtime/node_modules/cliui": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
- "node_modules/jest-runtime/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-runtime/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-runtime/node_modules/emoji-regex": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-runtime/node_modules/find-up": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/locate-path": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/p-limit": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/jest-runtime/node_modules/p-locate": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/y18n": {
- "version": "4.0.3",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/jest-runtime/node_modules/yargs": {
- "version": "15.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-runtime/node_modules/yargs-parser": {
- "version": "18.1.3",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jest-serializer": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "graceful-fs": "^4.2.4"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-snapshot": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/types": "^7.0.0",
- "@jest/types": "^26.6.2",
- "@types/babel__traverse": "^7.0.4",
- "@types/prettier": "^2.0.0",
- "chalk": "^4.0.0",
- "expect": "^26.6.2",
- "graceful-fs": "^4.2.4",
- "jest-diff": "^26.6.2",
- "jest-get-type": "^26.3.0",
- "jest-haste-map": "^26.6.2",
- "jest-matcher-utils": "^26.6.2",
- "jest-message-util": "^26.6.2",
- "jest-resolve": "^26.6.2",
- "natural-compare": "^1.4.0",
- "pretty-format": "^26.6.2",
- "semver": "^7.3.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-snapshot/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-snapshot/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-snapshot/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-snapshot/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-snapshot/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-snapshot/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jest-snapshot/node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/jest-snapshot/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-snapshot/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/jest-util": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "graceful-fs": "^4.2.4",
- "is-ci": "^2.0.0",
- "micromatch": "^4.0.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-util/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-util/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-util/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-util/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-util/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-util/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-validate": {
- "version": "26.6.2",
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "camelcase": "^6.0.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^26.3.0",
- "leven": "^3.1.0",
- "pretty-format": "^26.6.2"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-validate/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-validate/node_modules/camelcase": {
- "version": "6.3.0",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/jest-validate/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-validate/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-validate/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/jest-validate/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-validate/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-watcher": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/test-result": "^26.6.2",
- "@jest/types": "^26.6.2",
- "@types/node": "*",
- "ansi-escapes": "^4.2.1",
- "chalk": "^4.0.0",
- "jest-util": "^26.6.2",
- "string-length": "^4.0.1"
- },
- "engines": {
- "node": ">= 10.14.2"
- }
- },
- "node_modules/jest-watcher/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jest-watcher/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jest-watcher/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jest-watcher/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jest-watcher/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-watcher/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-worker": {
- "version": "26.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^7.0.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/jest-worker/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jest-worker/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jetifier": {
- "version": "1.6.8",
- "license": "MIT",
- "bin": {
- "jetifier": "bin/jetify",
- "jetifier-standalone": "bin/jetifier-standalone",
- "jetify": "bin/jetify"
- }
- },
- "node_modules/joi": {
- "version": "17.10.1",
- "license": "BSD-3-Clause",
- "dependencies": {
- "@hapi/hoek": "^9.0.0",
- "@hapi/topo": "^5.0.0",
- "@sideway/address": "^4.1.3",
- "@sideway/formula": "^3.0.1",
- "@sideway/pinpoint": "^2.0.0"
- }
- },
- "node_modules/jotai": {
- "version": "2.7.0",
- "resolved": "https://registry.npmmirror.com/jotai/-/jotai-2.7.0.tgz",
- "integrity": "sha512-4qsyFKu4MprI39rj2uoItyhu24NoCHzkOV7z70PQr65SpzV6CSyhQvVIfbNlNqOIOspNMdf5OK+kTXLvqe63Jw==",
- "engines": {
- "node": ">=12.20.0"
- },
- "peerDependencies": {
- "@types/react": ">=17.0.0",
- "react": ">=17.0.0"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "react": {
- "optional": true
- }
- }
- },
- "node_modules/jpeg-js": {
- "version": "0.4.4",
- "license": "BSD-3-Clause"
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "license": "MIT"
- },
- "node_modules/js-yaml": {
- "version": "3.14.1",
- "license": "MIT",
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/jsc-android": {
- "version": "250230.2.1",
- "license": "BSD-2-Clause"
- },
- "node_modules/jsc-safe-url": {
- "version": "0.2.4",
- "license": "0BSD"
- },
- "node_modules/jscodeshift": {
- "version": "0.13.1",
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.13.16",
- "@babel/parser": "^7.13.16",
- "@babel/plugin-proposal-class-properties": "^7.13.0",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
- "@babel/plugin-proposal-optional-chaining": "^7.13.12",
- "@babel/plugin-transform-modules-commonjs": "^7.13.8",
- "@babel/preset-flow": "^7.13.13",
- "@babel/preset-typescript": "^7.13.0",
- "@babel/register": "^7.13.16",
- "babel-core": "^7.0.0-bridge.0",
- "chalk": "^4.1.2",
- "flow-parser": "0.*",
- "graceful-fs": "^4.2.4",
- "micromatch": "^3.1.10",
- "neo-async": "^2.5.0",
- "node-dir": "^0.1.17",
- "recast": "^0.20.4",
- "temp": "^0.8.4",
- "write-file-atomic": "^2.3.0"
- },
- "bin": {
- "jscodeshift": "bin/jscodeshift.js"
- },
- "peerDependencies": {
- "@babel/preset-env": "^7.1.6"
- }
- },
- "node_modules/jscodeshift/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/jscodeshift/node_modules/braces": {
- "version": "2.3.2",
- "license": "MIT",
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jscodeshift/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jscodeshift/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/jscodeshift/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/jscodeshift/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/jscodeshift/node_modules/fill-range": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jscodeshift/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jscodeshift/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jscodeshift/node_modules/is-extendable": {
- "version": "0.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jscodeshift/node_modules/is-number": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jscodeshift/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jscodeshift/node_modules/micromatch": {
- "version": "3.1.10",
- "license": "MIT",
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jscodeshift/node_modules/rimraf": {
- "version": "2.6.3",
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/jscodeshift/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/jscodeshift/node_modules/temp": {
- "version": "0.8.4",
- "license": "MIT",
- "dependencies": {
- "rimraf": "~2.6.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/jscodeshift/node_modules/to-regex-range": {
- "version": "2.1.1",
- "license": "MIT",
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/jscodeshift/node_modules/write-file-atomic": {
- "version": "2.4.3",
- "license": "ISC",
- "dependencies": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
- }
- },
- "node_modules/jsdom": {
- "version": "16.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "abab": "^2.0.5",
- "acorn": "^8.2.4",
- "acorn-globals": "^6.0.0",
- "cssom": "^0.4.4",
- "cssstyle": "^2.3.0",
- "data-urls": "^2.0.0",
- "decimal.js": "^10.2.1",
- "domexception": "^2.0.1",
- "escodegen": "^2.0.0",
- "form-data": "^3.0.0",
- "html-encoding-sniffer": "^2.0.1",
- "http-proxy-agent": "^4.0.1",
- "https-proxy-agent": "^5.0.0",
- "is-potential-custom-element-name": "^1.0.1",
- "nwsapi": "^2.2.0",
- "parse5": "6.0.1",
- "saxes": "^5.0.1",
- "symbol-tree": "^3.2.4",
- "tough-cookie": "^4.0.0",
- "w3c-hr-time": "^1.0.2",
- "w3c-xmlserializer": "^2.0.0",
- "webidl-conversions": "^6.1.0",
- "whatwg-encoding": "^1.0.5",
- "whatwg-mimetype": "^2.3.0",
- "whatwg-url": "^8.5.0",
- "ws": "^7.4.6",
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "canvas": "^2.5.0"
- },
- "peerDependenciesMeta": {
- "canvas": {
- "optional": true
- }
- }
- },
- "node_modules/jsdom/node_modules/acorn": {
- "version": "8.10.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/jsdom/node_modules/form-data": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.8",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/jsdom/node_modules/parse5": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/jsesc": {
- "version": "2.5.2",
- "license": "MIT",
- "bin": {
- "jsesc": "bin/jsesc"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/json-buffer": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-parse-better-errors": {
- "version": "1.0.2",
- "license": "MIT"
- },
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json5": {
- "version": "2.2.3",
- "license": "MIT",
- "bin": {
- "json5": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jsonfile": {
- "version": "6.1.0",
- "license": "MIT",
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/jsonparse": {
- "version": "1.3.1",
- "dev": true,
- "engines": [
- "node >= 0.2.0"
- ],
- "license": "MIT"
- },
- "node_modules/JSONStream": {
- "version": "1.3.5",
- "dev": true,
- "license": "(MIT OR Apache-2.0)",
- "dependencies": {
- "jsonparse": "^1.2.0",
- "through": ">=2.2.7 <3"
- },
- "bin": {
- "JSONStream": "bin.js"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/jsx-ast-utils": {
- "version": "3.3.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-includes": "^3.1.6",
- "array.prototype.flat": "^1.3.1",
- "object.assign": "^4.1.4",
- "object.values": "^1.1.6"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/keyv": {
- "version": "4.5.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "json-buffer": "3.0.1"
- }
- },
- "node_modules/kind-of": {
- "version": "6.0.3",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/klaw": {
- "version": "1.3.1",
- "license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.9"
- }
- },
- "node_modules/kleur": {
- "version": "3.0.3",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/layerr": {
- "version": "2.0.1",
- "license": "MIT"
- },
- "node_modules/leven": {
- "version": "3.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/lilconfig": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lint-staged": {
- "version": "13.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chalk": "5.3.0",
- "commander": "11.0.0",
- "debug": "4.3.4",
- "execa": "7.2.0",
- "lilconfig": "2.1.0",
- "listr2": "6.6.1",
- "micromatch": "4.0.5",
- "pidtree": "0.6.0",
- "string-argv": "0.3.2",
- "yaml": "2.3.1"
- },
- "bin": {
- "lint-staged": "bin/lint-staged.js"
- },
- "engines": {
- "node": "^16.14.0 || >=18.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/lint-staged"
- }
- },
- "node_modules/lint-staged/node_modules/chalk": {
- "version": "5.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.17.0 || ^14.13 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/lint-staged/node_modules/execa": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^6.0.1",
- "human-signals": "^4.3.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^3.0.7",
- "strip-final-newline": "^3.0.0"
- },
- "engines": {
- "node": "^14.18.0 || ^16.14.0 || >=18.0.0"
- },
- "funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
- }
- },
- "node_modules/lint-staged/node_modules/human-signals": {
- "version": "4.3.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=14.18.0"
- }
- },
- "node_modules/lint-staged/node_modules/is-stream": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lint-staged/node_modules/mimic-fn": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lint-staged/node_modules/npm-run-path": {
- "version": "5.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lint-staged/node_modules/onetime": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lint-staged/node_modules/path-key": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lint-staged/node_modules/strip-final-newline": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/listr2": {
- "version": "6.6.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cli-truncate": "^3.1.0",
- "colorette": "^2.0.20",
- "eventemitter3": "^5.0.1",
- "log-update": "^5.0.1",
- "rfdc": "^1.3.0",
- "wrap-ansi": "^8.1.0"
- },
- "engines": {
- "node": ">=16.0.0"
- },
- "peerDependencies": {
- "enquirer": ">= 2.3.0 < 3"
- },
- "peerDependenciesMeta": {
- "enquirer": {
- "optional": true
- }
- }
- },
- "node_modules/load-bmfont": {
- "version": "1.4.1",
- "license": "MIT",
- "dependencies": {
- "buffer-equal": "0.0.1",
- "mime": "^1.3.4",
- "parse-bmfont-ascii": "^1.0.3",
- "parse-bmfont-binary": "^1.0.5",
- "parse-bmfont-xml": "^1.1.4",
- "phin": "^2.9.1",
- "xhr": "^2.0.1",
- "xtend": "^4.0.0"
- }
- },
- "node_modules/load-bmfont/node_modules/mime": {
- "version": "1.6.0",
- "license": "MIT",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/locate-path": {
- "version": "6.0.0",
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "license": "MIT"
- },
- "node_modules/lodash.camelcase": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.debounce": {
- "version": "4.0.8",
- "license": "MIT"
- },
- "node_modules/lodash.isequal": {
- "version": "4.5.0",
- "license": "MIT"
- },
- "node_modules/lodash.isfunction": {
- "version": "3.0.9",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.isplainobject": {
- "version": "4.0.6",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.kebabcase": {
- "version": "4.1.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.mergewith": {
- "version": "4.6.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.shuffle": {
- "version": "4.2.0",
- "license": "MIT"
- },
- "node_modules/lodash.snakecase": {
- "version": "4.1.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.startcase": {
- "version": "4.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.throttle": {
- "version": "4.1.1",
- "license": "MIT"
- },
- "node_modules/lodash.truncate": {
- "version": "4.4.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.uniq": {
- "version": "4.5.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.upperfirst": {
- "version": "4.3.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/log-symbols": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/log-symbols/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/log-symbols/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/log-symbols/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/log-symbols/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/log-symbols/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/log-symbols/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/log-update": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-escapes": "^5.0.0",
- "cli-cursor": "^4.0.0",
- "slice-ansi": "^5.0.0",
- "strip-ansi": "^7.0.1",
- "wrap-ansi": "^8.0.1"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/log-update/node_modules/ansi-escapes": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "type-fest": "^1.0.2"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/log-update/node_modules/ansi-regex": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/log-update/node_modules/strip-ansi": {
- "version": "7.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/log-update/node_modules/type-fest": {
- "version": "1.4.0",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/logkitty": {
- "version": "0.7.1",
- "license": "MIT",
- "dependencies": {
- "ansi-fragments": "^0.2.1",
- "dayjs": "^1.8.15",
- "yargs": "^15.1.0"
- },
- "bin": {
- "logkitty": "bin/logkitty.js"
- }
- },
- "node_modules/logkitty/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/logkitty/node_modules/cliui": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
- "node_modules/logkitty/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/logkitty/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/logkitty/node_modules/emoji-regex": {
- "version": "8.0.0",
- "license": "MIT"
- },
- "node_modules/logkitty/node_modules/find-up": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/logkitty/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/logkitty/node_modules/locate-path": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/logkitty/node_modules/p-limit": {
- "version": "2.3.0",
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/logkitty/node_modules/p-locate": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/logkitty/node_modules/path-exists": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/logkitty/node_modules/string-width": {
- "version": "4.2.3",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/logkitty/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/logkitty/node_modules/y18n": {
- "version": "4.0.3",
- "license": "ISC"
- },
- "node_modules/logkitty/node_modules/yargs": {
- "version": "15.4.1",
- "license": "MIT",
- "dependencies": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/logkitty/node_modules/yargs-parser": {
- "version": "18.1.3",
- "license": "ISC",
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/loose-envify": {
- "version": "1.4.0",
- "license": "MIT",
- "dependencies": {
- "js-tokens": "^3.0.0 || ^4.0.0"
- },
- "bin": {
- "loose-envify": "cli.js"
- }
- },
- "node_modules/lower-case": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^2.0.3"
- }
- },
- "node_modules/lru-cache": {
- "version": "7.18.3",
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/make-dir": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "semver": "^7.5.3"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/make-dir/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/make-dir/node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/make-dir/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/make-error": {
- "version": "1.3.6",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/makeerror": {
- "version": "1.0.12",
- "license": "BSD-3-Clause",
- "dependencies": {
- "tmpl": "1.0.5"
- }
- },
- "node_modules/map-cache": {
- "version": "0.2.2",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-obj": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/map-visit": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/md5": {
- "version": "2.3.0",
- "license": "BSD-3-Clause",
- "dependencies": {
- "charenc": "0.0.2",
- "crypt": "0.0.2",
- "is-buffer": "~1.1.6"
- }
- },
- "node_modules/mdn-data": {
- "version": "2.0.14",
- "license": "CC0-1.0"
- },
- "node_modules/memoize-one": {
- "version": "5.2.1",
- "license": "MIT"
- },
- "node_modules/meow": {
- "version": "8.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/minimist": "^1.2.0",
- "camelcase-keys": "^6.2.2",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.1.0",
- "minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.0",
- "read-pkg-up": "^7.0.1",
- "redent": "^3.0.0",
- "trim-newlines": "^3.0.0",
- "type-fest": "^0.18.0",
- "yargs-parser": "^20.2.3"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/meow/node_modules/type-fest": {
- "version": "0.18.1",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/merge-options": {
- "version": "3.0.4",
- "license": "MIT",
- "dependencies": {
- "is-plain-obj": "^2.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/metro": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "@babel/core": "^7.14.0",
- "@babel/generator": "^7.14.0",
- "@babel/parser": "^7.14.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.14.0",
- "@babel/types": "^7.0.0",
- "absolute-path": "^0.0.0",
- "accepts": "^1.3.7",
- "async": "^3.2.2",
- "chalk": "^4.0.0",
- "ci-info": "^2.0.0",
- "connect": "^3.6.5",
- "debug": "^2.2.0",
- "denodeify": "^1.2.1",
- "error-stack-parser": "^2.0.6",
- "fs-extra": "^1.0.0",
- "graceful-fs": "^4.2.4",
- "hermes-parser": "0.6.0",
- "image-size": "^0.6.0",
- "invariant": "^2.2.4",
- "jest-haste-map": "^27.3.1",
- "jest-worker": "^27.2.0",
- "jsc-safe-url": "^0.2.2",
- "lodash.throttle": "^4.1.1",
- "metro-babel-transformer": "0.70.4",
- "metro-cache": "0.70.4",
- "metro-cache-key": "0.70.4",
- "metro-config": "0.70.4",
- "metro-core": "0.70.4",
- "metro-hermes-compiler": "0.70.4",
- "metro-inspector-proxy": "0.70.4",
- "metro-minify-uglify": "0.70.4",
- "metro-react-native-babel-preset": "0.70.4",
- "metro-resolver": "0.70.4",
- "metro-runtime": "0.70.4",
- "metro-source-map": "0.70.4",
- "metro-symbolicate": "0.70.4",
- "metro-transform-plugins": "0.70.4",
- "metro-transform-worker": "0.70.4",
- "mime-types": "^2.1.27",
- "node-fetch": "^2.2.0",
- "nullthrows": "^1.1.1",
- "rimraf": "^2.5.4",
- "serialize-error": "^2.1.0",
- "source-map": "^0.5.6",
- "strip-ansi": "^6.0.0",
- "temp": "0.8.3",
- "throat": "^5.0.0",
- "ws": "^7.5.1",
- "yargs": "^15.3.1"
- },
- "bin": {
- "metro": "src/cli.js"
- }
- },
- "node_modules/metro-babel-transformer": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.14.0",
- "hermes-parser": "0.6.0",
- "metro-source-map": "0.70.4",
- "nullthrows": "^1.1.1"
- }
- },
- "node_modules/metro-cache": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "metro-core": "0.70.4",
- "rimraf": "^2.5.4"
- }
- },
- "node_modules/metro-cache-key": {
- "version": "0.70.4",
- "license": "MIT"
- },
- "node_modules/metro-cache/node_modules/rimraf": {
- "version": "2.7.1",
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/metro-config": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "connect": "^3.6.5",
- "cosmiconfig": "^5.0.5",
- "jest-validate": "^29.6.3",
- "metro": "0.80.2",
- "metro-cache": "0.80.2",
- "metro-core": "0.80.2",
- "metro-runtime": "0.80.2"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/@jest/types": {
- "version": "29.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^17.0.8",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/metro-config/node_modules/@types/yargs": {
- "version": "17.0.32",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/metro-config/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/metro-config/node_modules/camelcase": {
- "version": "6.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/metro-config/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/metro-config/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/metro-config/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/metro-config/node_modules/cosmiconfig": {
- "version": "5.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/metro-config/node_modules/debug": {
- "version": "2.6.9",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/metro-config/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-config/node_modules/hermes-estree": {
- "version": "0.18.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/metro-config/node_modules/hermes-parser": {
- "version": "0.18.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "hermes-estree": "0.18.0"
- }
- },
- "node_modules/metro-config/node_modules/image-size": {
- "version": "1.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "queue": "6.0.2"
- },
- "bin": {
- "image-size": "bin/image-size.js"
- },
- "engines": {
- "node": ">=18.0.0"
- }
- },
- "node_modules/metro-config/node_modules/import-fresh": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/metro-config/node_modules/isarray": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/metro-config/node_modules/jest-get-type": {
- "version": "29.6.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/metro-config/node_modules/jest-util": {
- "version": "29.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/metro-config/node_modules/jest-util/node_modules/ci-info": {
- "version": "3.9.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-config/node_modules/jest-validate": {
- "version": "29.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^29.6.3",
- "camelcase": "^6.2.0",
- "chalk": "^4.0.0",
- "jest-get-type": "^29.6.3",
- "leven": "^3.1.0",
- "pretty-format": "^29.7.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/metro-config/node_modules/jest-worker": {
- "version": "29.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "jest-util": "^29.7.0",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/metro-config/node_modules/jest-worker/node_modules/supports-color": {
- "version": "8.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/metro-config/node_modules/metro": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/parser": "^7.20.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.20.0",
- "@babel/types": "^7.20.0",
- "accepts": "^1.3.7",
- "chalk": "^4.0.0",
- "ci-info": "^2.0.0",
- "connect": "^3.6.5",
- "debug": "^2.2.0",
- "denodeify": "^1.2.1",
- "error-stack-parser": "^2.0.6",
- "graceful-fs": "^4.2.4",
- "hermes-parser": "0.18.0",
- "image-size": "^1.0.2",
- "invariant": "^2.2.4",
- "jest-worker": "^29.6.3",
- "jsc-safe-url": "^0.2.2",
- "lodash.throttle": "^4.1.1",
- "metro-babel-transformer": "0.80.2",
- "metro-cache": "0.80.2",
- "metro-cache-key": "0.80.2",
- "metro-config": "0.80.2",
- "metro-core": "0.80.2",
- "metro-file-map": "0.80.2",
- "metro-minify-terser": "0.80.2",
- "metro-resolver": "0.80.2",
- "metro-runtime": "0.80.2",
- "metro-source-map": "0.80.2",
- "metro-symbolicate": "0.80.2",
- "metro-transform-plugins": "0.80.2",
- "metro-transform-worker": "0.80.2",
- "mime-types": "^2.1.27",
- "node-fetch": "^2.2.0",
- "nullthrows": "^1.1.1",
- "rimraf": "^3.0.2",
- "serialize-error": "^2.1.0",
- "source-map": "^0.5.6",
- "strip-ansi": "^6.0.0",
- "throat": "^5.0.0",
- "ws": "^7.5.1",
- "yargs": "^17.6.2"
- },
- "bin": {
- "metro": "src/cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/metro-babel-transformer": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.20.0",
- "hermes-parser": "0.18.0",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/metro-cache": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "metro-core": "0.80.2",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/metro-cache-key": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/metro-core": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lodash.throttle": "^4.1.1",
- "metro-resolver": "0.80.2"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/metro-resolver": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/metro-runtime": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.0.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/metro-source-map": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.20.0",
- "@babel/types": "^7.20.0",
- "invariant": "^2.2.4",
- "metro-symbolicate": "0.80.2",
- "nullthrows": "^1.1.1",
- "ob1": "0.80.2",
- "source-map": "^0.5.6",
- "vlq": "^1.0.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/metro-symbolicate": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "invariant": "^2.2.4",
- "metro-source-map": "0.80.2",
- "nullthrows": "^1.1.1",
- "source-map": "^0.5.6",
- "through2": "^2.0.1",
- "vlq": "^1.0.0"
- },
- "bin": {
- "metro-symbolicate": "src/index.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/metro-transform-plugins": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.20.0",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/metro-transform-worker": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.20.0",
- "@babel/generator": "^7.20.0",
- "@babel/parser": "^7.20.0",
- "@babel/types": "^7.20.0",
- "metro": "0.80.2",
- "metro-babel-transformer": "0.80.2",
- "metro-cache": "0.80.2",
- "metro-cache-key": "0.80.2",
- "metro-source-map": "0.80.2",
- "metro-transform-plugins": "0.80.2",
- "nullthrows": "^1.1.1"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/ms": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/metro-config/node_modules/ob1": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-config/node_modules/parse-json": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/metro-config/node_modules/pretty-format": {
- "version": "29.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/metro-config/node_modules/pretty-format/node_modules/ansi-styles": {
- "version": "5.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/metro-config/node_modules/react-is": {
- "version": "18.2.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/metro-config/node_modules/readable-stream": {
- "version": "2.3.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/metro-config/node_modules/resolve-from": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/metro-config/node_modules/source-map": {
- "version": "0.5.7",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/metro-config/node_modules/string_decoder": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/metro-config/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-config/node_modules/through2": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/metro-core": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "jest-haste-map": "^27.3.1",
- "lodash.throttle": "^4.1.1",
- "metro-resolver": "0.70.4"
- }
- },
- "node_modules/metro-core/node_modules/@jest/types": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^16.0.0",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/metro-core/node_modules/@types/yargs": {
- "version": "16.0.5",
- "license": "MIT",
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/metro-core/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/metro-core/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/metro-core/node_modules/ci-info": {
- "version": "3.8.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-core/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/metro-core/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/metro-core/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-core/node_modules/jest-haste-map": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^27.5.1",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "graceful-fs": "^4.2.9",
- "jest-regex-util": "^27.5.1",
- "jest-serializer": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-worker": "^27.5.1",
- "micromatch": "^4.0.4",
- "walker": "^1.0.7"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- },
- "optionalDependencies": {
- "fsevents": "^2.3.2"
- }
- },
- "node_modules/metro-core/node_modules/jest-regex-util": {
- "version": "27.5.1",
- "license": "MIT",
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/metro-core/node_modules/jest-serializer": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "graceful-fs": "^4.2.9"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/metro-core/node_modules/jest-util": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/metro-core/node_modules/jest-worker": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/metro-core/node_modules/jest-worker/node_modules/supports-color": {
- "version": "8.1.1",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/metro-core/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-file-map": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "anymatch": "^3.0.3",
- "debug": "^2.2.0",
- "fb-watchman": "^2.0.0",
- "graceful-fs": "^4.2.4",
- "invariant": "^2.2.4",
- "jest-worker": "^29.6.3",
- "micromatch": "^4.0.4",
- "node-abort-controller": "^3.1.1",
- "nullthrows": "^1.1.1",
- "walker": "^1.0.7"
- },
- "engines": {
- "node": ">=18"
- },
- "optionalDependencies": {
- "fsevents": "^2.3.2"
- }
- },
- "node_modules/metro-file-map/node_modules/@jest/types": {
- "version": "29.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^17.0.8",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/metro-file-map/node_modules/@types/yargs": {
- "version": "17.0.32",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/metro-file-map/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/metro-file-map/node_modules/chalk": {
- "version": "4.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/metro-file-map/node_modules/chalk/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-file-map/node_modules/ci-info": {
- "version": "3.9.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-file-map/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/metro-file-map/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/metro-file-map/node_modules/debug": {
- "version": "2.6.9",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/metro-file-map/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-file-map/node_modules/jest-util": {
- "version": "29.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^29.6.3",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/metro-file-map/node_modules/jest-worker": {
- "version": "29.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "jest-util": "^29.7.0",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/metro-file-map/node_modules/ms": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/metro-file-map/node_modules/supports-color": {
- "version": "8.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/metro-hermes-compiler": {
- "version": "0.70.4",
- "license": "MIT"
- },
- "node_modules/metro-inspector-proxy": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "connect": "^3.6.5",
- "debug": "^2.2.0",
- "ws": "^7.5.1",
- "yargs": "^15.3.1"
- },
- "bin": {
- "metro-inspector-proxy": "src/cli.js"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/cliui": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/metro-inspector-proxy/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/emoji-regex": {
- "version": "8.0.0",
- "license": "MIT"
- },
- "node_modules/metro-inspector-proxy/node_modules/find-up": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/locate-path": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/metro-inspector-proxy/node_modules/p-limit": {
- "version": "2.3.0",
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/p-locate": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/path-exists": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/string-width": {
- "version": "4.2.3",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/y18n": {
- "version": "4.0.3",
- "license": "ISC"
- },
- "node_modules/metro-inspector-proxy/node_modules/yargs": {
- "version": "15.4.1",
- "license": "MIT",
- "dependencies": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro-inspector-proxy/node_modules/yargs-parser": {
- "version": "18.1.3",
- "license": "ISC",
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/metro-minify-terser": {
- "version": "0.80.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "terser": "^5.15.0"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/metro-minify-uglify": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "uglify-es": "^3.1.9"
- }
- },
- "node_modules/metro-react-native-babel-preset": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.14.0",
- "@babel/plugin-proposal-async-generator-functions": "^7.0.0",
- "@babel/plugin-proposal-class-properties": "^7.0.0",
- "@babel/plugin-proposal-export-default-from": "^7.0.0",
- "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0",
- "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
- "@babel/plugin-proposal-optional-catch-binding": "^7.0.0",
- "@babel/plugin-proposal-optional-chaining": "^7.0.0",
- "@babel/plugin-syntax-dynamic-import": "^7.0.0",
- "@babel/plugin-syntax-export-default-from": "^7.0.0",
- "@babel/plugin-syntax-flow": "^7.2.0",
- "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0",
- "@babel/plugin-syntax-optional-chaining": "^7.0.0",
- "@babel/plugin-transform-arrow-functions": "^7.0.0",
- "@babel/plugin-transform-async-to-generator": "^7.0.0",
- "@babel/plugin-transform-block-scoping": "^7.0.0",
- "@babel/plugin-transform-classes": "^7.0.0",
- "@babel/plugin-transform-computed-properties": "^7.0.0",
- "@babel/plugin-transform-destructuring": "^7.0.0",
- "@babel/plugin-transform-exponentiation-operator": "^7.0.0",
- "@babel/plugin-transform-flow-strip-types": "^7.0.0",
- "@babel/plugin-transform-function-name": "^7.0.0",
- "@babel/plugin-transform-literals": "^7.0.0",
- "@babel/plugin-transform-modules-commonjs": "^7.0.0",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.0.0",
- "@babel/plugin-transform-parameters": "^7.0.0",
- "@babel/plugin-transform-react-display-name": "^7.0.0",
- "@babel/plugin-transform-react-jsx": "^7.0.0",
- "@babel/plugin-transform-react-jsx-self": "^7.0.0",
- "@babel/plugin-transform-react-jsx-source": "^7.0.0",
- "@babel/plugin-transform-runtime": "^7.0.0",
- "@babel/plugin-transform-shorthand-properties": "^7.0.0",
- "@babel/plugin-transform-spread": "^7.0.0",
- "@babel/plugin-transform-sticky-regex": "^7.0.0",
- "@babel/plugin-transform-template-literals": "^7.0.0",
- "@babel/plugin-transform-typescript": "^7.5.0",
- "@babel/plugin-transform-unicode-regex": "^7.0.0",
- "@babel/template": "^7.0.0",
- "react-refresh": "^0.4.0"
- },
- "peerDependencies": {
- "@babel/core": "*"
- }
- },
- "node_modules/metro-react-native-babel-transformer": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.14.0",
- "babel-preset-fbjs": "^3.4.0",
- "hermes-parser": "0.6.0",
- "metro-babel-transformer": "0.70.4",
- "metro-react-native-babel-preset": "0.70.4",
- "metro-source-map": "0.70.4",
- "nullthrows": "^1.1.1"
- },
- "peerDependencies": {
- "@babel/core": "*"
- }
- },
- "node_modules/metro-resolver": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "absolute-path": "^0.0.0"
- }
- },
- "node_modules/metro-runtime": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "@babel/runtime": "^7.0.0"
- }
- },
- "node_modules/metro-source-map": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "@babel/traverse": "^7.14.0",
- "@babel/types": "^7.0.0",
- "invariant": "^2.2.4",
- "metro-symbolicate": "0.70.4",
- "nullthrows": "^1.1.1",
- "ob1": "0.70.4",
- "source-map": "^0.5.6",
- "vlq": "^1.0.0"
- }
- },
- "node_modules/metro-source-map/node_modules/source-map": {
- "version": "0.5.7",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/metro-symbolicate": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "invariant": "^2.2.4",
- "metro-source-map": "0.70.4",
- "nullthrows": "^1.1.1",
- "source-map": "^0.5.6",
- "through2": "^2.0.1",
- "vlq": "^1.0.0"
- },
- "bin": {
- "metro-symbolicate": "src/index.js"
- },
- "engines": {
- "node": ">=8.3"
- }
- },
- "node_modules/metro-symbolicate/node_modules/isarray": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/metro-symbolicate/node_modules/readable-stream": {
- "version": "2.3.8",
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/metro-symbolicate/node_modules/source-map": {
- "version": "0.5.7",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/metro-symbolicate/node_modules/string_decoder": {
- "version": "1.1.1",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/metro-symbolicate/node_modules/through2": {
- "version": "2.0.5",
- "license": "MIT",
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/metro-transform-plugins": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.14.0",
- "@babel/generator": "^7.14.0",
- "@babel/template": "^7.0.0",
- "@babel/traverse": "^7.14.0",
- "nullthrows": "^1.1.1"
- }
- },
- "node_modules/metro-transform-worker": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "@babel/core": "^7.14.0",
- "@babel/generator": "^7.14.0",
- "@babel/parser": "^7.14.0",
- "@babel/types": "^7.0.0",
- "babel-preset-fbjs": "^3.4.0",
- "metro": "0.70.4",
- "metro-babel-transformer": "0.70.4",
- "metro-cache": "0.70.4",
- "metro-cache-key": "0.70.4",
- "metro-hermes-compiler": "0.70.4",
- "metro-source-map": "0.70.4",
- "metro-transform-plugins": "0.70.4",
- "nullthrows": "^1.1.1"
- }
- },
- "node_modules/metro/node_modules/@jest/types": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.0",
- "@types/istanbul-reports": "^3.0.0",
- "@types/node": "*",
- "@types/yargs": "^16.0.0",
- "chalk": "^4.0.0"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/metro/node_modules/@types/yargs": {
- "version": "16.0.5",
- "license": "MIT",
- "dependencies": {
- "@types/yargs-parser": "*"
- }
- },
- "node_modules/metro/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/metro/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/metro/node_modules/cliui": {
- "version": "6.0.0",
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
- "node_modules/metro/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/metro/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/metro/node_modules/cosmiconfig": {
- "version": "5.2.1",
- "license": "MIT",
- "dependencies": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/metro/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/metro/node_modules/emoji-regex": {
- "version": "8.0.0",
- "license": "MIT"
- },
- "node_modules/metro/node_modules/find-up": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro/node_modules/fs-extra": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "jsonfile": "^2.1.0",
- "klaw": "^1.0.0"
- }
- },
- "node_modules/metro/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro/node_modules/import-fresh": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/metro/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro/node_modules/jest-haste-map": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^27.5.1",
- "@types/graceful-fs": "^4.1.2",
- "@types/node": "*",
- "anymatch": "^3.0.3",
- "fb-watchman": "^2.0.0",
- "graceful-fs": "^4.2.9",
- "jest-regex-util": "^27.5.1",
- "jest-serializer": "^27.5.1",
- "jest-util": "^27.5.1",
- "jest-worker": "^27.5.1",
- "micromatch": "^4.0.4",
- "walker": "^1.0.7"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- },
- "optionalDependencies": {
- "fsevents": "^2.3.2"
- }
- },
- "node_modules/metro/node_modules/jest-regex-util": {
- "version": "27.5.1",
- "license": "MIT",
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/metro/node_modules/jest-serializer": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "graceful-fs": "^4.2.9"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/metro/node_modules/jest-util": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^27.5.1",
- "@types/node": "*",
- "chalk": "^4.0.0",
- "ci-info": "^3.2.0",
- "graceful-fs": "^4.2.9",
- "picomatch": "^2.2.3"
- },
- "engines": {
- "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
- }
- },
- "node_modules/metro/node_modules/jest-util/node_modules/ci-info": {
- "version": "3.8.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/sibiraj-s"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro/node_modules/jest-worker": {
- "version": "27.5.1",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/metro/node_modules/jest-worker/node_modules/supports-color": {
- "version": "8.1.1",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
- },
- "node_modules/metro/node_modules/jsonfile": {
- "version": "2.4.0",
- "license": "MIT",
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/metro/node_modules/locate-path": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro/node_modules/metro-config": {
- "version": "0.70.4",
- "license": "MIT",
- "dependencies": {
- "cosmiconfig": "^5.0.5",
- "jest-validate": "^26.5.2",
- "metro": "0.70.4",
- "metro-cache": "0.70.4",
- "metro-core": "0.70.4",
- "metro-runtime": "0.70.4"
- }
- },
- "node_modules/metro/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/metro/node_modules/p-limit": {
- "version": "2.3.0",
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/metro/node_modules/p-locate": {
- "version": "4.1.0",
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro/node_modules/parse-json": {
- "version": "4.0.0",
- "license": "MIT",
- "dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/metro/node_modules/path-exists": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro/node_modules/resolve-from": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/metro/node_modules/rimraf": {
- "version": "2.7.1",
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/metro/node_modules/source-map": {
- "version": "0.5.7",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/metro/node_modules/string-width": {
- "version": "4.2.3",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro/node_modules/wrap-ansi": {
- "version": "6.2.0",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro/node_modules/y18n": {
- "version": "4.0.3",
- "license": "ISC"
- },
- "node_modules/metro/node_modules/yargs": {
- "version": "15.4.1",
- "license": "MIT",
- "dependencies": {
- "cliui": "^6.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^4.1.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^4.2.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^18.1.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/metro/node_modules/yargs-parser": {
- "version": "18.1.3",
- "license": "ISC",
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.5",
- "license": "MIT",
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/mime": {
- "version": "2.6.0",
- "license": "MIT",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/mimic-response": {
- "version": "3.1.0",
- "resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz",
- "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/min-document": {
- "version": "2.19.0",
- "dependencies": {
- "dom-walk": "^0.1.0"
- }
- },
- "node_modules/min-indent": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/minimatch": {
- "version": "7.4.6",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/minimist-options": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0",
- "kind-of": "^6.0.3"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/minimist-options/node_modules/is-plain-obj": {
- "version": "1.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mixin-deep": {
- "version": "1.3.2",
- "license": "MIT",
- "dependencies": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mkdirp": {
- "version": "0.5.6",
- "license": "MIT",
- "dependencies": {
- "minimist": "^1.2.6"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/mkdirp-classic": {
- "version": "0.5.3",
- "resolved": "https://registry.npmmirror.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
- "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "license": "MIT"
- },
- "node_modules/nanoid": {
- "version": "4.0.2",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "bin": {
- "nanoid": "bin/nanoid.js"
- },
- "engines": {
- "node": "^14 || ^16 || >=18"
- }
- },
- "node_modules/nanomatch": {
- "version": "1.2.13",
- "license": "MIT",
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/napi-build-utils": {
- "version": "1.0.2",
- "resolved": "https://registry.npmmirror.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
- "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg=="
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/negotiator": {
- "version": "0.6.3",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/neo-async": {
- "version": "2.6.2",
- "license": "MIT"
- },
- "node_modules/nested-property": {
- "version": "4.0.0",
- "license": "MIT"
- },
- "node_modules/nice-try": {
- "version": "1.0.5",
- "license": "MIT"
- },
- "node_modules/no-case": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lower-case": "^2.0.2",
- "tslib": "^2.0.3"
- }
- },
- "node_modules/nocache": {
- "version": "3.0.4",
- "license": "MIT",
- "engines": {
- "node": ">=12.0.0"
- }
- },
- "node_modules/node-abi": {
- "version": "3.65.0",
- "resolved": "https://registry.npmmirror.com/node-abi/-/node-abi-3.65.0.tgz",
- "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==",
- "dependencies": {
- "semver": "^7.3.5"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-abi/node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-abort-controller": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/node-addon-api": {
- "version": "6.1.0",
- "resolved": "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-6.1.0.tgz",
- "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA=="
- },
- "node_modules/node-dir": {
- "version": "0.1.17",
- "license": "MIT",
- "dependencies": {
- "minimatch": "^3.0.2"
- },
- "engines": {
- "node": ">= 0.10.5"
- }
- },
- "node_modules/node-dir/node_modules/brace-expansion": {
- "version": "1.1.11",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/node-dir/node_modules/minimatch": {
- "version": "3.1.2",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/node-domexception": {
- "version": "1.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/jimmywarting"
- },
- {
- "type": "github",
- "url": "https://paypal.me/jimmywarting"
- }
- ],
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=10.5.0"
- }
- },
- "node_modules/node-fetch": {
- "version": "2.7.0",
- "license": "MIT",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
- },
- "node_modules/node-fetch/node_modules/tr46": {
- "version": "0.0.3",
- "license": "MIT"
- },
- "node_modules/node-fetch/node_modules/webidl-conversions": {
- "version": "3.0.1",
- "license": "BSD-2-Clause"
- },
- "node_modules/node-fetch/node_modules/whatwg-url": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "node_modules/node-int64": {
- "version": "0.4.0",
- "license": "MIT"
- },
- "node_modules/node-notifier": {
- "version": "8.0.2",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "growly": "^1.3.0",
- "is-wsl": "^2.2.0",
- "semver": "^7.3.2",
- "shellwords": "^0.1.1",
- "uuid": "^8.3.0",
- "which": "^2.0.2"
- }
- },
- "node_modules/node-notifier/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "optional": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-notifier/node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "optional": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/node-notifier/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC",
- "optional": true
- },
- "node_modules/node-releases": {
- "version": "2.0.13",
- "license": "MIT"
- },
- "node_modules/node-stream-zip": {
- "version": "1.15.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.12.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/antelle"
- }
- },
- "node_modules/node-vibrant": {
- "version": "3.1.6",
- "license": "MIT",
- "dependencies": {
- "@jimp/custom": "^0.16.1",
- "@jimp/plugin-resize": "^0.16.1",
- "@jimp/types": "^0.16.1",
- "@types/lodash": "^4.14.53",
- "@types/node": "^10.11.7",
- "lodash": "^4.17.20",
- "url": "^0.11.0"
- }
- },
- "node_modules/node-vibrant/node_modules/@types/node": {
- "version": "10.17.60",
- "license": "MIT"
- },
- "node_modules/normalize-package-data": {
- "version": "3.0.3",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "hosted-git-info": "^4.0.1",
- "is-core-module": "^2.5.0",
- "semver": "^7.3.4",
- "validate-npm-package-license": "^3.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/normalize-package-data/node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/normalize-svg-path": {
- "version": "1.1.0",
- "license": "MIT",
- "dependencies": {
- "svg-arc-to-cubic-bezier": "^3.0.0"
- }
- },
- "node_modules/npm-run-path": {
- "version": "4.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/nth-check": {
- "version": "2.1.1",
- "license": "BSD-2-Clause",
- "dependencies": {
- "boolbase": "^1.0.0"
- },
- "funding": {
- "url": "https://github.com/fb55/nth-check?sponsor=1"
- }
- },
- "node_modules/nullthrows": {
- "version": "1.1.1",
- "license": "MIT"
- },
- "node_modules/nwsapi": {
- "version": "2.2.7",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/ob1": {
- "version": "0.70.4",
- "license": "MIT"
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy": {
- "version": "0.1.0",
- "license": "MIT",
- "dependencies": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/define-property": {
- "version": "0.2.5",
- "license": "MIT",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor": {
- "version": "0.1.6",
- "license": "MIT",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.13.2",
- "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.2.tgz",
- "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object-path": {
- "version": "0.11.8",
- "license": "MIT",
- "engines": {
- "node": ">= 10.12.0"
- }
- },
- "node_modules/object-visit": {
- "version": "1.0.1",
- "license": "MIT",
- "dependencies": {
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.assign": {
- "version": "4.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.entries": {
- "version": "1.1.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.fromentries": {
- "version": "2.0.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.hasown": {
- "version": "1.1.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.pick": {
- "version": "1.3.0",
- "license": "MIT",
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.values": {
- "version": "1.1.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/omggif": {
- "version": "1.0.10",
- "license": "MIT"
- },
- "node_modules/on-finished": {
- "version": "2.3.0",
- "license": "MIT",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/on-headers": {
- "version": "1.0.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/onetime": {
- "version": "5.1.2",
- "license": "MIT",
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/open": {
- "version": "6.4.0",
- "license": "MIT",
- "dependencies": {
- "is-wsl": "^1.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/open/node_modules/is-wsl": {
- "version": "1.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/ora": {
- "version": "5.4.1",
- "license": "MIT",
- "dependencies": {
- "bl": "^4.1.0",
- "chalk": "^4.1.0",
- "cli-cursor": "^3.1.0",
- "cli-spinners": "^2.5.0",
- "is-interactive": "^1.0.0",
- "is-unicode-supported": "^0.1.0",
- "log-symbols": "^4.1.0",
- "strip-ansi": "^6.0.0",
- "wcwidth": "^1.0.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ora/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/ora/node_modules/chalk": {
- "version": "4.1.2",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/ora/node_modules/cli-cursor": {
- "version": "3.1.0",
- "license": "MIT",
- "dependencies": {
- "restore-cursor": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ora/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/ora/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/ora/node_modules/has-flag": {
- "version": "4.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ora/node_modules/restore-cursor": {
- "version": "3.1.0",
- "license": "MIT",
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ora/node_modules/supports-color": {
- "version": "7.2.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/os-tmpdir": {
- "version": "1.0.2",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/p-each-series": {
- "version": "2.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-finally": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/p-limit": {
- "version": "3.1.0",
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "5.0.0",
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-queue": {
- "version": "7.4.1",
- "license": "MIT",
- "dependencies": {
- "eventemitter3": "^5.0.1",
- "p-timeout": "^5.0.2"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-timeout": {
- "version": "5.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-try": {
- "version": "2.2.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pako": {
- "version": "1.0.11",
- "license": "(MIT AND Zlib)"
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse-bmfont-ascii": {
- "version": "1.0.6",
- "license": "MIT"
- },
- "node_modules/parse-bmfont-binary": {
- "version": "1.0.6",
- "license": "MIT"
- },
- "node_modules/parse-bmfont-xml": {
- "version": "1.1.4",
- "license": "MIT",
- "dependencies": {
- "xml-parse-from-string": "^1.0.0",
- "xml2js": "^0.4.5"
- }
- },
- "node_modules/parse-headers": {
- "version": "2.0.5",
- "license": "MIT"
- },
- "node_modules/parse-json": {
- "version": "5.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/parse-svg-path": {
- "version": "0.1.2",
- "license": "MIT"
- },
- "node_modules/parse5": {
- "version": "7.1.2",
- "license": "MIT",
- "dependencies": {
- "entities": "^4.4.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
- "node_modules/parse5-htmlparser2-tree-adapter": {
- "version": "7.0.0",
- "license": "MIT",
- "dependencies": {
- "domhandler": "^5.0.2",
- "parse5": "^7.0.0"
- },
- "funding": {
- "url": "https://github.com/inikulin/parse5?sponsor=1"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/pascalcase": {
- "version": "0.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-browserify": {
- "version": "1.0.1",
- "license": "MIT"
- },
- "node_modules/path-dirname": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/path-exists": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "license": "MIT"
- },
- "node_modules/path-posix": {
- "version": "1.0.0",
- "license": "ISC"
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/peek-readable": {
- "version": "4.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/phin": {
- "version": "2.9.3",
- "license": "MIT"
- },
- "node_modules/picocolors": {
- "version": "1.0.0",
- "license": "ISC"
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "license": "MIT",
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pidtree": {
- "version": "0.6.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "pidtree": "bin/pidtree.js"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/pify": {
- "version": "4.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pirates": {
- "version": "4.0.6",
- "license": "MIT",
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/pixelmatch": {
- "version": "4.0.2",
- "license": "ISC",
- "dependencies": {
- "pngjs": "^3.0.0"
- },
- "bin": {
- "pixelmatch": "bin/pixelmatch"
- }
- },
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/find-up": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/locate-path": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/p-limit": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pkg-dir/node_modules/p-locate": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-up": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "find-up": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-up/node_modules/find-up": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-up/node_modules/locate-path": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pkg-up/node_modules/p-limit": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/pkg-up/node_modules/p-locate": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/plist": {
- "version": "3.1.0",
- "license": "MIT",
- "dependencies": {
- "@xmldom/xmldom": "^0.8.8",
- "base64-js": "^1.5.1",
- "xmlbuilder": "^15.1.1"
- },
- "engines": {
- "node": ">=10.4.0"
- }
- },
- "node_modules/pngjs": {
- "version": "3.4.0",
- "license": "MIT",
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/posix-character-classes": {
- "version": "0.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/prebuild-install": {
- "version": "7.1.2",
- "resolved": "https://registry.npmmirror.com/prebuild-install/-/prebuild-install-7.1.2.tgz",
- "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==",
- "dependencies": {
- "detect-libc": "^2.0.0",
- "expand-template": "^2.0.3",
- "github-from-package": "0.0.0",
- "minimist": "^1.2.3",
- "mkdirp-classic": "^0.5.3",
- "napi-build-utils": "^1.0.1",
- "node-abi": "^3.3.0",
- "pump": "^3.0.0",
- "rc": "^1.2.7",
- "simple-get": "^4.0.0",
- "tar-fs": "^2.0.0",
- "tunnel-agent": "^0.6.0"
- },
- "bin": {
- "prebuild-install": "bin.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/prebuild-install/node_modules/tar-fs": {
- "version": "2.1.1",
- "resolved": "https://registry.npmmirror.com/tar-fs/-/tar-fs-2.1.1.tgz",
- "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
- "dependencies": {
- "chownr": "^1.1.1",
- "mkdirp-classic": "^0.5.2",
- "pump": "^3.0.0",
- "tar-stream": "^2.1.4"
- }
- },
- "node_modules/prebuild-install/node_modules/tar-stream": {
- "version": "2.2.0",
- "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz",
- "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
- "dependencies": {
- "bl": "^4.0.3",
- "end-of-stream": "^1.4.1",
- "fs-constants": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.1.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
- }
- },
- "node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-diff": "^1.1.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/pretty-format": {
- "version": "26.6.2",
- "license": "MIT",
- "dependencies": {
- "@jest/types": "^26.6.2",
- "ansi-regex": "^5.0.0",
- "ansi-styles": "^4.0.0",
- "react-is": "^17.0.1"
- },
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/pretty-format/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/pretty-format/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/pretty-format/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/pretty-format/node_modules/react-is": {
- "version": "17.0.2",
- "license": "MIT"
- },
- "node_modules/process": {
- "version": "0.11.10",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6.0"
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "license": "MIT"
- },
- "node_modules/progress": {
- "version": "2.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/promise": {
- "version": "8.3.0",
- "license": "MIT",
- "dependencies": {
- "asap": "~2.0.6"
- }
- },
- "node_modules/prompts": {
- "version": "2.4.2",
- "license": "MIT",
- "dependencies": {
- "kleur": "^3.0.3",
- "sisteransi": "^1.0.5"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/prop-types": {
- "version": "15.8.1",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.13.1"
- }
- },
- "node_modules/psl": {
- "version": "1.9.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/pump": {
- "version": "3.0.0",
- "license": "MIT",
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.0",
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/qr.js": {
- "version": "0.0.0",
- "license": "MIT"
- },
- "node_modules/qrcode-generator": {
- "version": "1.4.4",
- "license": "MIT"
- },
- "node_modules/qs": {
- "version": "6.12.3",
- "resolved": "https://registry.npmmirror.com/qs/-/qs-6.12.3.tgz",
- "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==",
- "dependencies": {
- "side-channel": "^1.0.6"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/query-string": {
- "version": "7.1.3",
- "resolved": "https://registry.npmmirror.com/query-string/-/query-string-7.1.3.tgz",
- "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==",
- "dependencies": {
- "decode-uri-component": "^0.2.2",
- "filter-obj": "^1.1.0",
- "split-on-first": "^1.0.0",
- "strict-uri-encode": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/querystringify": {
- "version": "2.2.0",
- "license": "MIT"
- },
- "node_modules/queue": {
- "version": "6.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "inherits": "~2.0.3"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/queue-tick": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/queue-tick/-/queue-tick-1.0.1.tgz",
- "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag=="
- },
- "node_modules/quick-lru": {
- "version": "4.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "dependencies": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- },
- "bin": {
- "rc": "cli.js"
- }
- },
- "node_modules/rc/node_modules/strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react": {
- "version": "18.0.0",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-devtools-core": {
- "version": "4.24.0",
- "license": "MIT",
- "dependencies": {
- "shell-quote": "^1.6.1",
- "ws": "^7"
- }
- },
- "node_modules/react-freeze": {
- "version": "1.0.3",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "peerDependencies": {
- "react": ">=17.0.0"
- }
- },
- "node_modules/react-is": {
- "version": "16.13.1",
- "license": "MIT"
- },
- "node_modules/react-native": {
- "version": "0.69.12",
- "license": "MIT",
- "dependencies": {
- "@jest/create-cache-key-function": "^27.0.1",
- "@react-native-community/cli": "^8.0.7",
- "@react-native-community/cli-platform-android": "^8.0.5",
- "@react-native-community/cli-platform-ios": "^8.0.6",
- "@react-native/assets": "1.0.0",
- "@react-native/normalize-color": "2.0.0",
- "@react-native/polyfills": "2.0.0",
- "abort-controller": "^3.0.0",
- "anser": "^1.4.9",
- "base64-js": "^1.1.2",
- "event-target-shim": "^5.0.1",
- "hermes-engine": "~0.11.0",
- "invariant": "^2.2.4",
- "jsc-android": "^250230.2.1",
- "memoize-one": "^5.0.0",
- "metro-react-native-babel-transformer": "0.70.4",
- "metro-runtime": "0.70.4",
- "metro-source-map": "0.70.4",
- "mkdirp": "^0.5.1",
- "nullthrows": "^1.1.1",
- "pretty-format": "^26.5.2",
- "promise": "^8.2.0",
- "react-devtools-core": "4.24.0",
- "react-native-codegen": "^0.69.2",
- "react-native-gradle-plugin": "^0.0.7",
- "react-refresh": "^0.4.0",
- "react-shallow-renderer": "16.15.0",
- "regenerator-runtime": "^0.13.2",
- "scheduler": "^0.21.0",
- "stacktrace-parser": "^0.1.3",
- "use-sync-external-store": "^1.0.0",
- "whatwg-fetch": "^3.0.0",
- "ws": "^6.1.4"
- },
- "bin": {
- "react-native": "cli.js"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "react": "18.0.0"
- }
- },
- "node_modules/react-native-background-timer": {
- "version": "2.4.1",
- "license": "MIT",
- "peerDependencies": {
- "react-native": ">=0.47.0"
- }
- },
- "node_modules/react-native-bootsplash": {
- "version": "4.7.5",
- "license": "MIT",
- "dependencies": {
- "fs-extra": "^11.1.1",
- "picocolors": "^1.0.0",
- "sharp": "^0.32.1"
- },
- "peerDependencies": {
- "react-native": ">=0.65.0"
- }
- },
- "node_modules/react-native-bootsplash/node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/react-native-bootsplash/node_modules/sharp": {
- "version": "0.32.6",
- "resolved": "https://registry.npmmirror.com/sharp/-/sharp-0.32.6.tgz",
- "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
- "hasInstallScript": true,
- "dependencies": {
- "color": "^4.2.3",
- "detect-libc": "^2.0.2",
- "node-addon-api": "^6.1.0",
- "prebuild-install": "^7.1.1",
- "semver": "^7.5.4",
- "simple-get": "^4.0.1",
- "tar-fs": "^3.0.4",
- "tunnel-agent": "^0.6.0"
- },
- "engines": {
- "node": ">=14.15.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/react-native-circular-progress-indicator": {
- "version": "4.4.2",
- "license": "MIT",
- "dependencies": {
- "react-native-redash": "*"
- },
- "peerDependencies": {
- "react": ">=16.8.0",
- "react-native": ">=0.59.0",
- "react-native-reanimated": ">=2.2.0",
- "react-native-svg": ">=12.1.1"
- }
- },
- "node_modules/react-native-codegen": {
- "version": "0.69.2",
- "license": "MIT",
- "dependencies": {
- "@babel/parser": "^7.14.0",
- "flow-parser": "^0.121.0",
- "jscodeshift": "^0.13.1",
- "nullthrows": "^1.1.1"
- }
- },
- "node_modules/react-native-device-info": {
- "version": "10.9.0",
- "license": "MIT",
- "peerDependencies": {
- "react-native": "*"
- }
- },
- "node_modules/react-native-document-picker": {
- "version": "8.2.1",
- "license": "MIT",
- "dependencies": {
- "invariant": "^2.2.4"
- },
- "peerDependencies": {
- "react": "*",
- "react-native": "*",
- "react-native-windows": "*"
- },
- "peerDependenciesMeta": {
- "react-native-windows": {
- "optional": true
- }
- }
- },
- "node_modules/react-native-fast-image": {
- "version": "8.6.3",
- "license": "(MIT AND Apache-2.0)",
- "peerDependencies": {
- "react": "^17 || ^18",
- "react-native": ">=0.60.0"
- }
- },
- "node_modules/react-native-file-access": {
- "version": "2.6.0",
- "license": "MIT",
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-fs": {
- "version": "2.20.0",
- "license": "MIT",
- "dependencies": {
- "base-64": "^0.1.0",
- "utf8": "^3.0.0"
- },
- "peerDependencies": {
- "react-native": "*",
- "react-native-windows": "*"
- },
- "peerDependenciesMeta": {
- "react-native-windows": {
- "optional": true
- }
- }
- },
- "node_modules/react-native-fs/node_modules/base-64": {
- "version": "0.1.0"
- },
- "node_modules/react-native-gesture-handler": {
- "version": "2.17.1",
- "resolved": "https://registry.npmmirror.com/react-native-gesture-handler/-/react-native-gesture-handler-2.17.1.tgz",
- "integrity": "sha512-pWfniN6NuVKUq40KACuD3NCMe+bWNQCpD3cmxL6aLSCTwPKYmf7l4Lp0/E/almpjvxhybJZtFLU0w4tmxnIKaA==",
- "dependencies": {
- "@egjs/hammerjs": "^2.0.17",
- "hoist-non-react-statics": "^3.3.0",
- "invariant": "^2.2.4",
- "prop-types": "^15.7.2"
- },
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-get-random-values": {
- "version": "1.9.0",
- "license": "MIT",
- "dependencies": {
- "fast-base64-decode": "^1.0.0"
- },
- "peerDependencies": {
- "react-native": ">=0.56"
- }
- },
- "node_modules/react-native-gradle-plugin": {
- "version": "0.0.7",
- "license": "MIT"
- },
- "node_modules/react-native-image-colors": {
- "version": "1.5.2",
- "license": "MIT",
- "dependencies": {
- "node-vibrant": "3.1.6"
- },
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-image-picker": {
- "version": "4.10.3",
- "license": "MIT",
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-linear-gradient": {
- "version": "2.8.3",
- "license": "MIT",
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-logs": {
- "version": "5.0.1",
- "license": "MIT"
- },
- "node_modules/react-native-mmkv": {
- "version": "2.5.1",
- "license": "(MIT AND BSD-3-Clause)",
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-pager-view": {
- "version": "5.4.25",
- "license": "MIT",
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-permissions": {
- "version": "3.9.0",
- "license": "MIT",
- "peerDependencies": {
- "react": ">=16.13.1",
- "react-native": ">=0.63.3",
- "react-native-windows": ">=0.62.0"
- },
- "peerDependenciesMeta": {
- "react-native-windows": {
- "optional": true
- }
- }
- },
- "node_modules/react-native-reanimated": {
- "version": "2.17.0",
- "resolved": "https://registry.npmmirror.com/react-native-reanimated/-/react-native-reanimated-2.17.0.tgz",
- "integrity": "sha512-bVy+FUEaHXq4i+aPPqzGeor1rG4scgVNBbBz21ohvC7iMpB9IIgvGsmy1FAoodZhZ5sa3EPF67Rcec76F1PXlQ==",
- "dependencies": {
- "@babel/plugin-transform-object-assign": "^7.16.7",
- "@babel/preset-typescript": "^7.16.7",
- "invariant": "^2.2.4",
- "lodash.isequal": "^4.5.0",
- "setimmediate": "^1.0.5",
- "string-hash-64": "^1.0.3"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0",
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-redash": {
- "version": "18.1.0",
- "license": "MIT",
- "dependencies": {
- "abs-svg-path": "^0.1.1",
- "normalize-svg-path": "^1.0.1",
- "parse-svg-path": "^0.1.2"
- },
- "peerDependencies": {
- "react": "*",
- "react-native": "*",
- "react-native-gesture-handler": "*",
- "react-native-reanimated": ">=2.0.0"
- }
- },
- "node_modules/react-native-safe-area-context": {
- "version": "4.10.8",
- "resolved": "https://registry.npmmirror.com/react-native-safe-area-context/-/react-native-safe-area-context-4.10.8.tgz",
- "integrity": "sha512-Jx1lovhvIdYygg0UsMCBUJN0Wvj9GlA5bbcBLzjZf93uJpNHzaiHC4hR280+sNVK1+/pMHEyEkXVHDZE5JWn0w==",
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-screens": {
- "version": "3.25.0",
- "license": "MIT",
- "dependencies": {
- "react-freeze": "^1.0.0",
- "warn-once": "^0.1.0"
- },
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-share": {
- "version": "9.4.1",
- "license": "MIT"
- },
- "node_modules/react-native-svg": {
- "version": "12.5.1",
- "license": "MIT",
- "dependencies": {
- "css-select": "^5.1.0",
- "css-tree": "^1.1.3"
- },
- "peerDependencies": {
- "react": "*",
- "react-native": ">=0.50.0"
- }
- },
- "node_modules/react-native-svg-transformer": {
- "version": "1.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@svgr/core": "^8.1.0",
- "@svgr/plugin-jsx": "^8.1.0",
- "@svgr/plugin-svgo": "^8.1.0",
- "path-dirname": "^1.0.2"
- },
- "peerDependencies": {
- "react-native": ">=0.59.0",
- "react-native-svg": ">=12.0.0"
- }
- },
- "node_modules/react-native-tab-view": {
- "version": "3.5.2",
- "license": "MIT",
- "dependencies": {
- "use-latest-callback": "^0.1.5"
- },
- "peerDependencies": {
- "react": "*",
- "react-native": "*",
- "react-native-pager-view": "*"
- }
- },
- "node_modules/react-native-track-player": {
- "version": "4.0.1",
- "license": "Apache-2.0",
- "funding": {
- "url": "https://github.com/doublesymmetry/react-native-track-player?sponsor=1"
- },
- "peerDependencies": {
- "react": ">=16.8.6",
- "react-native": ">=0.60.0-rc.2",
- "react-native-windows": ">=0.63.0"
- },
- "peerDependenciesMeta": {
- "react-native-windows": {
- "optional": true
- }
- }
- },
- "node_modules/react-native-url-polyfill": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "whatwg-url-without-unicode": "8.0.0-3"
- },
- "peerDependencies": {
- "react-native": "*"
- }
- },
- "node_modules/react-native-vector-icons": {
- "version": "10.0.0",
- "license": "MIT",
- "dependencies": {
- "prop-types": "^15.7.2",
- "yargs": "^16.1.1"
- },
- "bin": {
- "fa-upgrade.sh": "bin/fa-upgrade.sh",
- "fa5-upgrade": "bin/fa5-upgrade.sh",
- "fa6-upgrade": "bin/fa6-upgrade.sh",
- "generate-icon": "bin/generate-icon.js"
- }
- },
- "node_modules/react-native-vector-icons/node_modules/ansi-styles": {
- "version": "4.3.0",
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/react-native-vector-icons/node_modules/cliui": {
- "version": "7.0.4",
- "license": "ISC",
- "dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "node_modules/react-native-vector-icons/node_modules/color-convert": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/react-native-vector-icons/node_modules/color-name": {
- "version": "1.1.4",
- "license": "MIT"
- },
- "node_modules/react-native-vector-icons/node_modules/emoji-regex": {
- "version": "8.0.0",
- "license": "MIT"
- },
- "node_modules/react-native-vector-icons/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/react-native-vector-icons/node_modules/string-width": {
- "version": "4.2.3",
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/react-native-vector-icons/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/react-native-vector-icons/node_modules/yargs": {
- "version": "16.2.0",
- "license": "MIT",
- "dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/react-native-view-shot": {
- "version": "3.7.0",
- "license": "MIT",
- "dependencies": {
- "html2canvas": "^1.4.1"
- },
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-webview": {
- "version": "13.6.2",
- "license": "MIT",
- "dependencies": {
- "escape-string-regexp": "2.0.0",
- "invariant": "2.2.4"
- },
- "peerDependencies": {
- "react": "*",
- "react-native": "*"
- }
- },
- "node_modules/react-native-webview/node_modules/escape-string-regexp": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/react-native/node_modules/regenerator-runtime": {
- "version": "0.13.11",
- "license": "MIT"
- },
- "node_modules/react-native/node_modules/ws": {
- "version": "6.2.2",
- "license": "MIT",
- "dependencies": {
- "async-limiter": "~1.0.0"
- }
- },
- "node_modules/react-qr-code": {
- "version": "2.0.12",
- "license": "MIT",
- "dependencies": {
- "prop-types": "^15.8.1",
- "qr.js": "0.0.0"
- },
- "peerDependencies": {
- "react": "^16.x || ^17.x || ^18.x",
- "react-native-svg": "*"
- },
- "peerDependenciesMeta": {
- "react-native-svg": {
- "optional": true
- }
- }
- },
- "node_modules/react-refresh": {
- "version": "0.4.3",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/react-shallow-renderer": {
- "version": "16.15.0",
- "license": "MIT",
- "dependencies": {
- "object-assign": "^4.1.1",
- "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0"
- },
- "peerDependencies": {
- "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/react-test-renderer": {
- "version": "18.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "react-is": "^18.0.0",
- "react-shallow-renderer": "^16.13.1",
- "scheduler": "^0.21.0"
- },
- "peerDependencies": {
- "react": "^18.0.0"
- }
- },
- "node_modules/react-test-renderer/node_modules/react-is": {
- "version": "18.2.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/read-pkg": {
- "version": "5.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "7.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg-up/node_modules/find-up": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up/node_modules/locate-path": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-limit": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-locate": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up/node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "0.8.1",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read-pkg/node_modules/hosted-git-info": {
- "version": "2.8.9",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/read-pkg/node_modules/normalize-package-data": {
- "version": "2.5.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/read-pkg/node_modules/semver": {
- "version": "5.7.2",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/read-pkg/node_modules/type-fest": {
- "version": "0.6.0",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "license": "MIT",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/readable-web-to-node-stream": {
- "version": "3.0.2",
- "license": "MIT",
- "dependencies": {
- "readable-stream": "^3.6.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/readline": {
- "version": "1.3.0",
- "license": "BSD"
- },
- "node_modules/recast": {
- "version": "0.20.5",
- "license": "MIT",
- "dependencies": {
- "ast-types": "0.14.2",
- "esprima": "~4.0.0",
- "source-map": "~0.6.1",
- "tslib": "^2.0.1"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/recyclerlistview": {
- "version": "4.2.1",
- "resolved": "https://registry.npmmirror.com/recyclerlistview/-/recyclerlistview-4.2.1.tgz",
- "integrity": "sha512-NtVYjofwgUCt1rEsTp6jHQg/47TWjnO92TU2kTVgJ9wsc/ely4HnizHHa+f/dI7qaw4+zcSogElrLjhMltN2/g==",
- "dependencies": {
- "lodash.debounce": "4.0.8",
- "prop-types": "15.8.1",
- "ts-object-utils": "0.0.5"
- },
- "peerDependencies": {
- "react": ">= 15.2.1",
- "react-native": ">= 0.30.0"
- }
- },
- "node_modules/redent": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/reflect.getprototypeof": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "globalthis": "^1.0.3",
- "which-builtin-type": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/regenerate": {
- "version": "1.4.2",
- "license": "MIT"
- },
- "node_modules/regenerate-unicode-properties": {
- "version": "10.1.0",
- "license": "MIT",
- "dependencies": {
- "regenerate": "^1.4.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regenerator-runtime": {
- "version": "0.14.0",
- "license": "MIT"
- },
- "node_modules/regenerator-transform": {
- "version": "0.15.2",
- "license": "MIT",
- "peer": true,
- "dependencies": {
- "@babel/runtime": "^7.8.4"
- }
- },
- "node_modules/regex-not": {
- "version": "1.0.2",
- "license": "MIT",
- "dependencies": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "functions-have-names": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/regexpp": {
- "version": "3.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/regexpu-core": {
- "version": "5.3.2",
- "license": "MIT",
- "dependencies": {
- "@babel/regjsgen": "^0.8.0",
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.1.0",
- "regjsparser": "^0.9.1",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regjsparser": {
- "version": "0.9.1",
- "license": "BSD-2-Clause",
- "dependencies": {
- "jsesc": "~0.5.0"
- },
- "bin": {
- "regjsparser": "bin/parser"
- }
- },
- "node_modules/regjsparser/node_modules/jsesc": {
- "version": "0.5.0",
- "bin": {
- "jsesc": "bin/jsesc"
- }
- },
- "node_modules/remove-trailing-separator": {
- "version": "1.1.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/repeat-element": {
- "version": "1.1.4",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/repeat-string": {
- "version": "1.6.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-main-filename": {
- "version": "2.0.0",
- "license": "ISC"
- },
- "node_modules/requires-port": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/reselect": {
- "version": "4.1.8",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/resolve": {
- "version": "1.22.4",
- "license": "MIT",
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-cwd": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "resolve-from": "^5.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-from": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-global": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "global-dirs": "^0.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/resolve-url": {
- "version": "0.2.1",
- "license": "MIT"
- },
- "node_modules/restore-cursor": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ret": {
- "version": "0.1.15",
- "license": "MIT",
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rfdc": {
- "version": "1.3.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rsvp": {
- "version": "4.8.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "6.* || >= 7.*"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/safe-array-concat": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1",
- "has-symbols": "^1.0.3",
- "isarray": "^2.0.5"
- },
- "engines": {
- "node": ">=0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "license": "MIT"
- },
- "node_modules/safe-regex": {
- "version": "1.1.0",
- "license": "MIT",
- "dependencies": {
- "ret": "~0.1.10"
- }
- },
- "node_modules/safe-regex-test": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "is-regex": "^1.1.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/sane": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@cnakazawa/watch": "^1.0.3",
- "anymatch": "^2.0.0",
- "capture-exit": "^2.0.0",
- "exec-sh": "^0.3.2",
- "execa": "^1.0.0",
- "fb-watchman": "^2.0.0",
- "micromatch": "^3.1.4",
- "minimist": "^1.1.1",
- "walker": "~1.0.5"
- },
- "bin": {
- "sane": "src/cli.js"
- },
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/sane/node_modules/anymatch": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "micromatch": "^3.1.4",
- "normalize-path": "^2.1.1"
- }
- },
- "node_modules/sane/node_modules/braces": {
- "version": "2.3.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/cross-spawn": {
- "version": "6.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/sane/node_modules/execa": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/sane/node_modules/fill-range": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/get-stream": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/sane/node_modules/is-extendable": {
- "version": "0.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/is-number": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/is-stream": {
- "version": "1.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/micromatch": {
- "version": "3.1.10",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/normalize-path": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "remove-trailing-separator": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/npm-run-path": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/sane/node_modules/path-key": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/sane/node_modules/semver": {
- "version": "5.7.2",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/sane/node_modules/shebang-command": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/shebang-regex": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/to-regex-range": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sane/node_modules/which": {
- "version": "1.3.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/sax": {
- "version": "1.2.4",
- "license": "ISC"
- },
- "node_modules/saxes": {
- "version": "5.0.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "xmlchars": "^2.2.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/scheduler": {
- "version": "0.21.0",
- "license": "MIT",
- "dependencies": {
- "loose-envify": "^1.1.0"
- }
- },
- "node_modules/semver": {
- "version": "6.3.1",
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/send": {
- "version": "0.18.0",
- "license": "MIT",
- "dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/send/node_modules/debug/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/send/node_modules/mime": {
- "version": "1.6.0",
- "license": "MIT",
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "license": "MIT"
- },
- "node_modules/send/node_modules/on-finished": {
- "version": "2.4.1",
- "license": "MIT",
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/send/node_modules/statuses": {
- "version": "2.0.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/serialize-error": {
- "version": "2.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/serve-static": {
- "version": "1.15.0",
- "license": "MIT",
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "license": "ISC"
- },
- "node_modules/set-function-length": {
- "version": "1.2.2",
- "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz",
- "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
- "dependencies": {
- "define-data-property": "^1.1.4",
- "es-errors": "^1.3.0",
- "function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.4",
- "gopd": "^1.0.1",
- "has-property-descriptors": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/set-value": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/extend-shallow": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/setimmediate": {
- "version": "1.0.5",
- "license": "MIT"
- },
- "node_modules/setprototypeof": {
- "version": "1.2.0",
- "license": "ISC"
- },
- "node_modules/shallow-clone": {
- "version": "3.0.1",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/sharp": {
- "version": "0.33.4",
- "resolved": "https://registry.npmmirror.com/sharp/-/sharp-0.33.4.tgz",
- "integrity": "sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==",
- "dev": true,
- "hasInstallScript": true,
- "dependencies": {
- "color": "^4.2.3",
- "detect-libc": "^2.0.3",
- "semver": "^7.6.0"
- },
- "engines": {
- "libvips": ">=8.15.2",
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-darwin-arm64": "0.33.4",
- "@img/sharp-darwin-x64": "0.33.4",
- "@img/sharp-libvips-darwin-arm64": "1.0.2",
- "@img/sharp-libvips-darwin-x64": "1.0.2",
- "@img/sharp-libvips-linux-arm": "1.0.2",
- "@img/sharp-libvips-linux-arm64": "1.0.2",
- "@img/sharp-libvips-linux-s390x": "1.0.2",
- "@img/sharp-libvips-linux-x64": "1.0.2",
- "@img/sharp-libvips-linuxmusl-arm64": "1.0.2",
- "@img/sharp-libvips-linuxmusl-x64": "1.0.2",
- "@img/sharp-linux-arm": "0.33.4",
- "@img/sharp-linux-arm64": "0.33.4",
- "@img/sharp-linux-s390x": "0.33.4",
- "@img/sharp-linux-x64": "0.33.4",
- "@img/sharp-linuxmusl-arm64": "0.33.4",
- "@img/sharp-linuxmusl-x64": "0.33.4",
- "@img/sharp-wasm32": "0.33.4",
- "@img/sharp-win32-ia32": "0.33.4",
- "@img/sharp-win32-x64": "0.33.4"
- }
- },
- "node_modules/sharp/node_modules/semver": {
- "version": "7.6.2",
- "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.2.tgz",
- "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shell-quote": {
- "version": "1.8.1",
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/shellwords": {
- "version": "0.1.1",
- "dev": true,
- "license": "MIT",
- "optional": true
- },
- "node_modules/side-channel": {
- "version": "1.0.6",
- "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz",
- "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
- "dependencies": {
- "call-bind": "^1.0.7",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.4",
- "object-inspect": "^1.13.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "license": "ISC"
- },
- "node_modules/simple-concat": {
- "version": "1.0.1",
- "resolved": "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz",
- "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/simple-get": {
- "version": "4.0.1",
- "resolved": "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz",
- "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "decompress-response": "^6.0.0",
- "once": "^1.3.1",
- "simple-concat": "^1.0.0"
- }
- },
- "node_modules/simple-swizzle": {
- "version": "0.2.2",
- "license": "MIT",
- "dependencies": {
- "is-arrayish": "^0.3.1"
- }
- },
- "node_modules/simple-swizzle/node_modules/is-arrayish": {
- "version": "0.3.2",
- "license": "MIT"
- },
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "license": "MIT"
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/slice-ansi": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^6.0.0",
- "is-fullwidth-code-point": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/slice-ansi/node_modules/ansi-styles": {
- "version": "6.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/snake-case": {
- "version": "3.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "dot-case": "^3.0.4",
- "tslib": "^2.0.3"
- }
- },
- "node_modules/snapdragon": {
- "version": "0.8.2",
- "license": "MIT",
- "dependencies": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node": {
- "version": "2.1.1",
- "license": "MIT",
- "dependencies": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node/node_modules/define-property": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util": {
- "version": "3.0.1",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/debug": {
- "version": "2.6.9",
- "license": "MIT",
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/snapdragon/node_modules/define-property": {
- "version": "0.2.5",
- "license": "MIT",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/extend-shallow": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-descriptor": {
- "version": "0.1.6",
- "license": "MIT",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-extendable": {
- "version": "0.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/kind-of": {
- "version": "5.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/ms": {
- "version": "2.0.0",
- "license": "MIT"
- },
- "node_modules/snapdragon/node_modules/source-map": {
- "version": "0.5.7",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-js": {
- "version": "1.0.2",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-resolve": {
- "version": "0.5.3",
- "license": "MIT",
- "dependencies": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "license": "MIT",
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/source-map-url": {
- "version": "0.4.1",
- "license": "MIT"
- },
- "node_modules/spdx-correct": {
- "version": "3.2.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "dev": true,
- "license": "CC-BY-3.0"
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.13",
- "dev": true,
- "license": "CC0-1.0"
- },
- "node_modules/split-on-first": {
- "version": "1.1.0",
- "resolved": "https://registry.npmmirror.com/split-on-first/-/split-on-first-1.1.0.tgz",
- "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/split-string": {
- "version": "3.1.0",
- "license": "MIT",
- "dependencies": {
- "extend-shallow": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split2": {
- "version": "3.2.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "readable-stream": "^3.0.0"
- }
- },
- "node_modules/sprintf-js": {
- "version": "1.0.3",
- "license": "BSD-3-Clause"
- },
- "node_modules/stack-utils": {
- "version": "2.0.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "escape-string-regexp": "^2.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/stack-utils/node_modules/escape-string-regexp": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/stackframe": {
- "version": "1.3.4",
- "license": "MIT"
- },
- "node_modules/stacktrace-parser": {
- "version": "0.1.10",
- "license": "MIT",
- "dependencies": {
- "type-fest": "^0.7.1"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/stacktrace-parser/node_modules/type-fest": {
- "version": "0.7.1",
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/static-extend": {
- "version": "0.1.2",
- "license": "MIT",
- "dependencies": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/define-property": {
- "version": "0.2.5",
- "license": "MIT",
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-descriptor": {
- "version": "0.1.6",
- "license": "MIT",
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/kind-of": {
- "version": "5.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/statuses": {
- "version": "1.5.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/streamx": {
- "version": "2.18.0",
- "resolved": "https://registry.npmmirror.com/streamx/-/streamx-2.18.0.tgz",
- "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==",
- "dependencies": {
- "fast-fifo": "^1.3.2",
- "queue-tick": "^1.0.1",
- "text-decoder": "^1.1.0"
- },
- "optionalDependencies": {
- "bare-events": "^2.2.0"
- }
- },
- "node_modules/strict-uri-encode": {
- "version": "2.0.0",
- "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
- "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string_decoder/node_modules/safe-buffer": {
- "version": "5.2.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/string-argv": {
- "version": "0.3.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.6.19"
- }
- },
- "node_modules/string-hash-64": {
- "version": "1.0.3",
- "license": "MIT"
- },
- "node_modules/string-length": {
- "version": "4.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "char-regex": "^1.0.2",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/string-width": {
- "version": "5.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/string-width/node_modules/ansi-regex": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/string-width/node_modules/strip-ansi": {
- "version": "7.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/string.prototype.matchall": {
- "version": "4.0.9",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1",
- "get-intrinsic": "^1.2.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "regexp.prototype.flags": "^1.5.0",
- "side-channel": "^1.0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trim": {
- "version": "1.2.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.22.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-bom": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-eof": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-final-newline": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/strip-indent": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "min-indent": "^1.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/strnum": {
- "version": "1.0.5",
- "license": "MIT"
- },
- "node_modules/strtok3": {
- "version": "6.3.0",
- "license": "MIT",
- "dependencies": {
- "@tokenizer/token": "^0.3.0",
- "peek-readable": "^4.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/sudo-prompt": {
- "version": "9.2.1",
- "license": "MIT"
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "license": "MIT",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/supports-hyperlinks": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0",
- "supports-color": "^7.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-hyperlinks/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-hyperlinks/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/svg-arc-to-cubic-bezier": {
- "version": "3.2.0",
- "license": "ISC"
- },
- "node_modules/svg-parser": {
- "version": "2.0.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/svgo": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@trysound/sax": "0.2.0",
- "commander": "^7.2.0",
- "css-select": "^5.1.0",
- "css-tree": "^2.2.1",
- "css-what": "^6.1.0",
- "csso": "5.0.5",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "svgo": "bin/svgo"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/svgo"
- }
- },
- "node_modules/svgo/node_modules/commander": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/svgo/node_modules/css-tree": {
- "version": "2.3.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mdn-data": "2.0.30",
- "source-map-js": "^1.0.1"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
- }
- },
- "node_modules/svgo/node_modules/mdn-data": {
- "version": "2.0.30",
- "dev": true,
- "license": "CC0-1.0"
- },
- "node_modules/symbol-tree": {
- "version": "3.2.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/table": {
- "version": "6.8.1",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "ajv": "^8.0.1",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/table/node_modules/ansi-styles": {
- "version": "4.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/table/node_modules/astral-regex": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/table/node_modules/color-convert": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/table/node_modules/color-name": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/table/node_modules/emoji-regex": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/table/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/table/node_modules/slice-ansi": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/table/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tar-fs": {
- "version": "3.0.6",
- "resolved": "https://registry.npmmirror.com/tar-fs/-/tar-fs-3.0.6.tgz",
- "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==",
- "dependencies": {
- "pump": "^3.0.0",
- "tar-stream": "^3.1.5"
- },
- "optionalDependencies": {
- "bare-fs": "^2.1.1",
- "bare-path": "^2.1.0"
- }
- },
- "node_modules/tar-stream": {
- "version": "3.1.7",
- "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-3.1.7.tgz",
- "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
- "dependencies": {
- "b4a": "^1.6.4",
- "fast-fifo": "^1.2.0",
- "streamx": "^2.15.0"
- }
- },
- "node_modules/temp": {
- "version": "0.8.3",
- "engines": [
- "node >=0.8.0"
- ],
- "license": "MIT",
- "dependencies": {
- "os-tmpdir": "^1.0.0",
- "rimraf": "~2.2.6"
- }
- },
- "node_modules/temp/node_modules/rimraf": {
- "version": "2.2.8",
- "license": "MIT",
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/terminal-link": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-escapes": "^4.2.1",
- "supports-hyperlinks": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/terser": {
- "version": "5.26.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "@jridgewell/source-map": "^0.3.3",
- "acorn": "^8.8.2",
- "commander": "^2.20.0",
- "source-map-support": "~0.5.20"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/terser/node_modules/acorn": {
- "version": "8.11.3",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/terser/node_modules/commander": {
- "version": "2.20.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/test-exclude": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@istanbuljs/schema": "^0.1.2",
- "glob": "^7.1.4",
- "minimatch": "^3.0.4"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/test-exclude/node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/test-exclude/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/text-decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmmirror.com/text-decoder/-/text-decoder-1.1.1.tgz",
- "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==",
- "dependencies": {
- "b4a": "^1.6.4"
- }
- },
- "node_modules/text-extensions": {
- "version": "1.9.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/text-segmentation": {
- "version": "1.0.3",
- "license": "MIT",
- "dependencies": {
- "utrie": "^1.0.2"
- }
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/throat": {
- "version": "5.0.0",
- "license": "MIT"
- },
- "node_modules/through": {
- "version": "2.3.8",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/through2": {
- "version": "4.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "readable-stream": "3"
- }
- },
- "node_modules/timm": {
- "version": "1.7.1",
- "license": "MIT"
- },
- "node_modules/tinycolor2": {
- "version": "1.6.0",
- "license": "MIT"
- },
- "node_modules/tmpl": {
- "version": "1.0.5",
- "license": "BSD-3-Clause"
- },
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/to-object-path": {
- "version": "0.3.0",
- "license": "MIT",
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-object-path/node_modules/kind-of": {
- "version": "3.2.2",
- "license": "MIT",
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex": {
- "version": "3.0.2",
- "license": "MIT",
- "dependencies": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "license": "MIT",
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/token-types": {
- "version": "4.2.1",
- "license": "MIT",
- "dependencies": {
- "@tokenizer/token": "^0.3.0",
- "ieee754": "^1.2.1"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Borewit"
- }
- },
- "node_modules/tough-cookie": {
- "version": "4.1.3",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "psl": "^1.1.33",
- "punycode": "^2.1.1",
- "universalify": "^0.2.0",
- "url-parse": "^1.5.3"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/tough-cookie/node_modules/universalify": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/tr46": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/trim-newlines": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ts-node": {
- "version": "10.9.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@cspotcode/source-map-support": "^0.8.0",
- "@tsconfig/node10": "^1.0.7",
- "@tsconfig/node12": "^1.0.7",
- "@tsconfig/node14": "^1.0.0",
- "@tsconfig/node16": "^1.0.2",
- "acorn": "^8.4.1",
- "acorn-walk": "^8.1.1",
- "arg": "^4.1.0",
- "create-require": "^1.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "v8-compile-cache-lib": "^3.0.1",
- "yn": "3.1.1"
- },
- "bin": {
- "ts-node": "dist/bin.js",
- "ts-node-cwd": "dist/bin-cwd.js",
- "ts-node-esm": "dist/bin-esm.js",
- "ts-node-script": "dist/bin-script.js",
- "ts-node-transpile-only": "dist/bin-transpile.js",
- "ts-script": "dist/bin-script-deprecated.js"
- },
- "peerDependencies": {
- "@swc/core": ">=1.2.50",
- "@swc/wasm": ">=1.2.50",
- "@types/node": "*",
- "typescript": ">=2.7"
- },
- "peerDependenciesMeta": {
- "@swc/core": {
- "optional": true
- },
- "@swc/wasm": {
- "optional": true
- }
- }
- },
- "node_modules/ts-node/node_modules/acorn": {
- "version": "8.10.0",
- "dev": true,
- "license": "MIT",
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/ts-node/node_modules/acorn-walk": {
- "version": "8.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/ts-object-utils": {
- "version": "0.0.5",
- "license": "ISC"
- },
- "node_modules/tslib": {
- "version": "2.6.3",
- "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.6.3.tgz",
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "node_modules/tsutils/node_modules/tslib": {
- "version": "1.14.1",
- "dev": true,
- "license": "0BSD"
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-detect": {
- "version": "4.0.8",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/type-fest": {
- "version": "0.21.3",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typed-array-buffer": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/typed-array-byte-length": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-byte-offset": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-length": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typedarray-to-buffer": {
- "version": "3.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-typedarray": "^1.0.0"
- }
- },
- "node_modules/typescript": {
- "version": "4.9.5",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/uglify-es": {
- "version": "3.3.9",
- "license": "BSD-2-Clause",
- "dependencies": {
- "commander": "~2.13.0",
- "source-map": "~0.6.1"
- },
- "bin": {
- "uglifyjs": "bin/uglifyjs"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/uglify-es/node_modules/commander": {
- "version": "2.13.0",
- "license": "MIT"
- },
- "node_modules/unbox-primitive": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/unicode-canonical-property-names-ecmascript": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "license": "MIT",
- "dependencies": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-property-aliases-ecmascript": {
- "version": "2.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/union-value": {
- "version": "1.0.1",
- "license": "MIT",
- "dependencies": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/union-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/universalify": {
- "version": "2.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/unset-value": {
- "version": "1.0.0",
- "license": "MIT",
- "dependencies": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value": {
- "version": "0.3.1",
- "license": "MIT",
- "dependencies": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
- "version": "2.1.0",
- "license": "MIT",
- "dependencies": {
- "isarray": "1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-values": {
- "version": "0.1.4",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/isarray": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/update-browserslist-db": {
- "version": "1.0.11",
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/browserslist"
- },
- {
- "type": "tidelift",
- "url": "https://tidelift.com/funding/github/npm/browserslist"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/ai"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
- },
- "bin": {
- "update-browserslist-db": "cli.js"
- },
- "peerDependencies": {
- "browserslist": ">= 4.21.0"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/urix": {
- "version": "0.1.0",
- "license": "MIT"
- },
- "node_modules/url": {
- "version": "0.11.2",
- "license": "MIT",
- "dependencies": {
- "punycode": "^1.4.1",
- "qs": "^6.11.2"
- }
- },
- "node_modules/url-join": {
- "version": "5.0.0",
- "license": "MIT",
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- }
- },
- "node_modules/url-parse": {
- "version": "1.5.10",
- "license": "MIT",
- "dependencies": {
- "querystringify": "^2.1.1",
- "requires-port": "^1.0.0"
- }
- },
- "node_modules/url/node_modules/punycode": {
- "version": "1.4.1",
- "license": "MIT"
- },
- "node_modules/use": {
- "version": "3.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/use-latest-callback": {
- "version": "0.1.6",
- "license": "MIT",
- "peerDependencies": {
- "react": ">=16.8"
- }
- },
- "node_modules/use-sync-external-store": {
- "version": "1.2.0",
- "license": "MIT",
- "peerDependencies": {
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
- }
- },
- "node_modules/utf8": {
- "version": "3.0.0",
- "license": "MIT"
- },
- "node_modules/utif": {
- "version": "2.0.1",
- "license": "MIT",
- "dependencies": {
- "pako": "^1.0.5"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "license": "MIT"
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "license": "MIT",
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/utrie": {
- "version": "1.0.2",
- "license": "MIT",
- "dependencies": {
- "base64-arraybuffer": "^1.0.2"
- }
- },
- "node_modules/uuid": {
- "version": "8.3.2",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "bin": {
- "uuid": "dist/bin/uuid"
- }
- },
- "node_modules/v8-compile-cache": {
- "version": "2.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/v8-compile-cache-lib": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/v8-to-istanbul": {
- "version": "7.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "@types/istanbul-lib-coverage": "^2.0.1",
- "convert-source-map": "^1.6.0",
- "source-map": "^0.7.3"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/v8-to-istanbul/node_modules/source-map": {
- "version": "0.7.4",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "node_modules/vary": {
- "version": "1.1.2",
- "license": "MIT",
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/vlq": {
- "version": "1.0.1",
- "license": "MIT"
- },
- "node_modules/w3c-hr-time": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browser-process-hrtime": "^1.0.0"
- }
- },
- "node_modules/w3c-xmlserializer": {
- "version": "2.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "xml-name-validator": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/walker": {
- "version": "1.0.8",
- "license": "Apache-2.0",
- "dependencies": {
- "makeerror": "1.0.12"
- }
- },
- "node_modules/warn-once": {
- "version": "0.1.1",
- "license": "MIT"
- },
- "node_modules/wcwidth": {
- "version": "1.0.1",
- "license": "MIT",
- "dependencies": {
- "defaults": "^1.0.3"
- }
- },
- "node_modules/web-streams-polyfill": {
- "version": "3.2.1",
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/webdav": {
- "version": "5.3.1",
- "resolved": "git+ssh://git@github.com/maotoumao/webdav-client.git#ab77412d14ec0e6ae3f666d5f872373b13137d67",
- "license": "MIT",
- "dependencies": {
- "@buttercup/fetch": "^0.1.1",
- "base-64": "^1.0.0",
- "byte-length": "^1.0.2",
- "fast-xml-parser": "^4.2.4",
- "hot-patcher": "^2.0.0",
- "layerr": "^2.0.1",
- "md5": "^2.3.0",
- "minimatch": "^7.4.6",
- "nested-property": "^4.0.0",
- "path-posix": "^1.0.0",
- "url-join": "^5.0.0",
- "url-parse": "^1.5.10"
- },
- "engines": {
- "node": ">=14"
- },
- "peerDependencies": {
- "he": "^1.2.0"
- }
- },
- "node_modules/webidl-conversions": {
- "version": "6.1.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=10.4"
- }
- },
- "node_modules/whatwg-encoding": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "iconv-lite": "0.4.24"
- }
- },
- "node_modules/whatwg-fetch": {
- "version": "3.6.18",
- "license": "MIT"
- },
- "node_modules/whatwg-mimetype": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/whatwg-url": {
- "version": "8.7.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "lodash": "^4.7.0",
- "tr46": "^2.1.0",
- "webidl-conversions": "^6.1.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/whatwg-url-without-unicode": {
- "version": "8.0.0-3",
- "license": "MIT",
- "dependencies": {
- "buffer": "^5.4.3",
- "punycode": "^2.1.1",
- "webidl-conversions": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/whatwg-url-without-unicode/node_modules/webidl-conversions": {
- "version": "5.0.0",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/which": {
- "version": "2.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-builtin-type": {
- "version": "1.1.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "function.prototype.name": "^1.1.5",
- "has-tostringtag": "^1.0.0",
- "is-async-function": "^2.0.0",
- "is-date-object": "^1.0.5",
- "is-finalizationregistry": "^1.0.2",
- "is-generator-function": "^1.0.10",
- "is-regex": "^1.1.4",
- "is-weakref": "^1.0.2",
- "isarray": "^2.0.5",
- "which-boxed-primitive": "^1.0.2",
- "which-collection": "^1.0.1",
- "which-typed-array": "^1.1.9"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-collection": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-map": "^2.0.1",
- "is-set": "^2.0.1",
- "is-weakmap": "^2.0.1",
- "is-weakset": "^2.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-module": {
- "version": "2.0.1",
- "license": "ISC"
- },
- "node_modules/which-typed-array": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "8.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^6.1.0",
- "string-width": "^5.0.1",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-regex": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "6.2.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/wrap-ansi/node_modules/strip-ansi": {
- "version": "7.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "license": "ISC"
- },
- "node_modules/write-file-atomic": {
- "version": "3.0.3",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
- }
- },
- "node_modules/ws": {
- "version": "7.5.9",
- "license": "MIT",
- "engines": {
- "node": ">=8.3.0"
- },
- "peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
- },
- "peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
- "optional": true
- }
- }
- },
- "node_modules/xhr": {
- "version": "2.6.0",
- "license": "MIT",
- "dependencies": {
- "global": "~4.4.0",
- "is-function": "^1.0.1",
- "parse-headers": "^2.0.0",
- "xtend": "^4.0.0"
- }
- },
- "node_modules/xml-name-validator": {
- "version": "3.0.0",
- "dev": true,
- "license": "Apache-2.0"
- },
- "node_modules/xml-parse-from-string": {
- "version": "1.0.1",
- "license": "MIT"
- },
- "node_modules/xml2js": {
- "version": "0.4.23",
- "license": "MIT",
- "dependencies": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/xml2js/node_modules/xmlbuilder": {
- "version": "11.0.1",
- "license": "MIT",
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/xmlbuilder": {
- "version": "15.1.1",
- "license": "MIT",
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/xmlchars": {
- "version": "2.2.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/xtend": {
- "version": "4.0.2",
- "license": "MIT",
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/y18n": {
- "version": "5.0.8",
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yallist": {
- "version": "3.1.1",
- "license": "ISC"
- },
- "node_modules/yaml": {
- "version": "2.3.1",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">= 14"
- }
- },
- "node_modules/yargs": {
- "version": "17.7.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yargs-parser": {
- "version": "20.2.9",
- "license": "ISC",
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/yargs/node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/yargs-parser": {
- "version": "21.1.1",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/yn": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yocto-queue": {
- "version": "0.1.0",
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- }
- }
-}
diff --git a/package.json b/package.json
index e8080db4..1cf8e28f 100644
--- a/package.json
+++ b/package.json
@@ -1,152 +1,130 @@
-{
- "name": "MusicFree",
- "version": "0.3.0",
- "license": "GPL",
- "private": true,
- "author": {
- "name": "猫头猫",
- "email": "lhx_xjtu@163.com"
- },
- "scripts": {
- "android": "react-native run-android",
- "ios": "react-native run-ios",
- "start": "react-native start",
- "clean": "cd ./android && ./gradlew clean",
- "test": "jest",
- "commit-lint": "commitlint --edit",
- "lint": "eslint . --ext .js,.jsx,.ts,.tsx src --fix",
- "lint-staged": "lint-staged",
- "connect-mumu": "adb kill-server & adb connect localhost:7555",
- "build-android": "cd .\\android\\ && .\\gradlew assembleRelease",
- "prepare": "husky install"
- },
- "dependencies": {
- "@react-native-async-storage/async-storage": "^1.17.7",
- "@react-native-clipboard/clipboard": "^1.11.2",
- "@react-native-community/netinfo": "^9.4.1",
- "@react-native-community/slider": "^4.2.4",
- "@react-native-cookies/cookies": "^6.2.1",
- "@react-native-masked-view/masked-view": "^0.2.9",
- "@react-navigation/drawer": "^6.7.2",
- "@react-navigation/native": "^6.1.18",
- "@react-navigation/native-stack": "^6.10.1",
- "@sayem314/react-native-keep-awake": "^1.2.2",
- "@shopify/flash-list": "^1.7.0",
- "axios": "^0.27.2",
- "big-integer": "^1.6.51",
- "cheerio": "^1.0.0-rc.12",
- "color": "^4.2.3",
- "compare-versions": "^6.1.0",
- "crypto-js": "^4.1.1",
- "dayjs": "^1.11.12",
- "deepmerge": "^4.3.1",
- "he": "^1.2.0",
- "immer": "^9.0.15",
- "jotai": "^2.7.0",
- "lodash.shuffle": "^4.2.0",
- "lru-cache": "^7.14.0",
- "nanoid": "^4.0.2",
- "object-path": "^0.11.8",
- "p-queue": "^7.4.1",
- "path-browserify": "^1.0.1",
- "qrcode-generator": "^1.4.4",
- "qs": "^6.12.3",
- "react": "18.0.0",
- "react-native": "0.69.12",
- "react-native-background-timer": "^2.4.1",
- "react-native-bootsplash": "^4.3.2",
- "react-native-circular-progress-indicator": "^4.4.2",
- "react-native-device-info": "^10.9.0",
- "react-native-document-picker": "^8.1.1",
- "react-native-fast-image": "^8.6.3",
- "react-native-file-access": "^2.5.0",
- "react-native-fs": "^2.20.0",
- "react-native-gesture-handler": "^2.17.1",
- "react-native-get-random-values": "^1.9.0",
- "react-native-image-colors": "^1.5.1",
- "react-native-image-picker": "^4.10.0",
- "react-native-linear-gradient": "^2.8.3",
- "react-native-logs": "^5.0.1",
- "react-native-mmkv": "^2.5.1",
- "react-native-pager-view": "^5.4.25",
- "react-native-permissions": "^3.9.0",
- "react-native-reanimated": "^2.17.0",
- "react-native-safe-area-context": "^4.10.8",
- "react-native-screens": "^3.15.0",
- "react-native-share": "^9.4.1",
- "react-native-svg": "^12.4.0",
- "react-native-tab-view": "^3.5.2",
- "react-native-track-player": "^4.0.1",
- "react-native-url-polyfill": "^2.0.0",
- "react-native-vector-icons": "^10.0.0",
- "react-native-view-shot": "^3.4.0",
- "react-native-webview": "^13.6.2",
- "react-qr-code": "^2.0.7",
- "recyclerlistview": "^4.2.1",
- "webdav": "github:maotoumao/webdav-client#release"
- },
- "devDependencies": {
- "@babel/core": "^7.12.9",
- "@babel/runtime": "^7.12.5",
- "@commitlint/cli": "^17.0.3",
- "@commitlint/config-conventional": "^17.0.3",
- "@react-native-community/eslint-config": "^2.0.0",
- "@tsconfig/react-native": "^2.0.0",
- "@types/color": "^3.0.3",
- "@types/crypto-js": "^4.1.1",
- "@types/he": "^1.1.2",
- "@types/jest": "^26.0.23",
- "@types/lodash.shuffle": "^4.2.7",
- "@types/node": "^18.0.4",
- "@types/object-path": "^0.11.1",
- "@types/path-browserify": "^1.0.0",
- "@types/qs": "^6.9.7",
- "@types/react": "^18",
- "@types/react-native": "^0.69.1",
- "@types/react-native-background-timer": "^2.0.0",
- "@types/react-native-vector-icons": "^6.4.11",
- "@types/react-test-renderer": "^18.0.0",
- "@typescript-eslint/eslint-plugin": "^5.29.0",
- "@typescript-eslint/parser": "^5.29.0",
- "babel-jest": "^26.6.3",
- "babel-plugin-module-resolver": "^4.1.0",
- "babel-plugin-transform-remove-console": "^6.9.4",
- "eslint": "^7.32.0",
- "eslint-config-prettier": "^8.5.0",
- "eslint-plugin-prettier": "^4.2.1",
- "husky": "^8.0.1",
- "jest": "^26.6.3",
- "lint-staged": "^13.0.3",
- "metro-config": "^0.80.2",
- "metro-react-native-babel-preset": "^0.70.3",
- "prettier": "^2.7.1",
- "react-native-svg-transformer": "^1.3.0",
- "react-test-renderer": "18.0.0",
- "sharp": "^0.33.4",
- "typescript": "^4.4.4"
- },
- "resolutions": {
- "@types/react": "^18"
- },
- "jest": {
- "preset": "react-native",
- "moduleFileExtensions": [
- "ts",
- "tsx",
- "js",
- "jsx",
- "json",
- "node"
- ]
- },
- "lint-staged": {
- "src/**/*.{ts,tsx}": [
- "npm run lint",
- "git add ."
- ]
- },
- "repository": {
- "type": "git",
- "url": "git+https://github.com/maotoumao/MusicFree.git"
- }
-}
+{
+ "name": "MusicFree",
+ "version": "0.3.1",
+ "private": true,
+ "license": "GPL",
+ "author": {
+ "name": "猫头猫",
+ "email": "lhx_xjtu@163.com"
+ },
+ "scripts": {
+ "android": "react-native run-android",
+ "ios": "react-native run-ios",
+ "lint": "eslint . --ext .js,.jsx,.ts,.tsx src --fix",
+ "start": "react-native start --experimental-debugger",
+ "clean": "cd ./android && ./gradlew clean",
+ "test": "jest",
+ "commit-lint": "commitlint --edit",
+ "lint-staged": "lint-staged",
+ "connect-mumu": "adb kill-server & adb connect localhost:7555",
+ "build-android": "cd .\\android\\ && .\\gradlew assembleRelease",
+ "generate-assets": "node ./generator/generate-assets.mjs",
+ "prepare": "husky"
+ },
+ "dependencies": {
+ "@react-native-async-storage/async-storage": "^1.24.0",
+ "@react-native-clipboard/clipboard": "^1.14.1",
+ "@react-native-community/netinfo": "^11.3.2",
+ "@react-native-community/slider": "^4.5.2",
+ "@react-native-cookies/cookies": "^6.2.1",
+ "@react-native-masked-view/masked-view": "^0.3.1",
+ "@react-navigation/drawer": "^6.7.2",
+ "@react-navigation/native": "^6.1.18",
+ "@react-navigation/native-stack": "^6.11.0",
+ "@sayem314/react-native-keep-awake": "^1.2.4",
+ "@shopify/flash-list": "^1.7.0",
+ "axios": "^1.7.3",
+ "big-integer": "^1.6.52",
+ "cheerio": "^1.0.0-rc.12",
+ "color": "^4.2.3",
+ "compare-versions": "^6.1.1",
+ "crypto-js": "^4.2.0",
+ "dayjs": "^1.11.12",
+ "deepmerge": "^4.3.1",
+ "expo": "^51.0.0",
+ "expo-splash-screen": "~0.27.5",
+ "he": "^1.2.0",
+ "immer": "^10.1.1",
+ "jotai": "^2.9.1",
+ "lodash.shuffle": "^4.2.0",
+ "lru-cache": "^11.0.0",
+ "nanoid": "^5.0.7",
+ "object-path": "^0.11.8",
+ "p-queue": "^8.0.1",
+ "path-browserify": "^1.0.1",
+ "qs": "^6.13.0",
+ "react": "18.2.0",
+ "react-native": "0.74.4",
+ "react-native-background-timer": "^2.4.1",
+ "react-native-circular-progress-indicator": "^4.4.2",
+ "react-native-device-info": "^11.1.0",
+ "react-native-document-picker": "^9.3.0",
+ "react-native-fast-image": "^8.6.3",
+ "react-native-file-access": "^3.1.0",
+ "react-native-fs": "^2.20.0",
+ "react-native-gesture-handler": "^2.18.1",
+ "react-native-get-random-values": "^1.11.0",
+ "react-native-image-colors": "^2.4.0",
+ "react-native-image-picker": "^7.1.2",
+ "react-native-linear-gradient": "^2.8.3",
+ "react-native-logs": "^5.1.0",
+ "react-native-mmkv": "^2.12.2",
+ "react-native-pager-view": "^6.3.3",
+ "react-native-permissions": "^4.1.5",
+ "react-native-reanimated": "^3.14.0",
+ "react-native-safe-area-context": "^4.10.8",
+ "react-native-screens": "^3.33.0",
+ "react-native-share": "^10.2.1",
+ "react-native-svg": "^15.4.0",
+ "react-native-tab-view": "^3.5.2",
+ "react-native-track-player": "^4.1.1",
+ "react-native-url-polyfill": "^2.0.0",
+ "recyclerlistview": "^4.2.1",
+ "webdav": "^5.7.0"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.20.0",
+ "@babel/preset-env": "^7.20.0",
+ "@babel/runtime": "^7.20.0",
+ "@commitlint/cli": "^19.3.0",
+ "@commitlint/config-conventional": "^19.2.2",
+ "@react-native/babel-preset": "0.74.86",
+ "@react-native/eslint-config": "0.74.86",
+ "@react-native/metro-config": "0.74.86",
+ "@react-native/typescript-config": "0.74.86",
+ "@types/color": "^3.0.6",
+ "@types/crypto-js": "^4.2.2",
+ "@types/he": "^1.2.3",
+ "@types/lodash.shuffle": "^4.2.9",
+ "@types/object-path": "^0.11.4",
+ "@types/path-browserify": "^1.0.2",
+ "@types/qs": "^6.9.15",
+ "@types/react": "^18.2.6",
+ "@types/react-native-background-timer": "^2.0.2",
+ "@types/react-test-renderer": "^18.0.0",
+ "babel-jest": "^29.6.3",
+ "babel-plugin-module-resolver": "^5.0.2",
+ "babel-plugin-transform-remove-console": "^6.9.4",
+ "eslint": "^8.19.0",
+ "husky": "^9.1.4",
+ "jest": "^29.6.3",
+ "lint-staged": "^15.2.7",
+ "prettier": "2.8.8",
+ "react-native-svg-transformer": "^1.5.0",
+ "react-test-renderer": "18.2.0",
+ "typescript": "5.0.4"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "lint-staged": {
+ "src/**/*.{ts,tsx}": [
+ "npm run lint",
+ "git add ."
+ ]
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/maotoumao/MusicFree.git"
+ }
+}
diff --git a/readme.md b/readme.md
index 72f552ac..7c97df5d 100644
--- a/readme.md
+++ b/readme.md
@@ -2,7 +2,7 @@
> [!CAUTION]
> 👎 小米/华为/vivo等应用市场的 MusicFree 和本软件无关,**是套用本软件名称和 Logo 的广告软件**。
->
+>
> 👎 速悦音乐基于本软件二次开发,改动点仅仅是内置插件、修改一些 UI 以及引流,**并未遵守本项目的开源协议,且拒绝沟通**。
---
@@ -20,7 +20,7 @@
软件下载方式、插件使用说明、插件开发文档可去站点 [https://musicfree.upup.fun](https://musicfree.upup.fun) 查看。
> [!NOTE]
-> - 如果你在其他的平台看到收费版/无广告版/破解版,都是假的,本来就是开源项目,**遇到收费版请直接举报**;
+> - 如果你在其他的平台看到收费版/无广告版/破解版,都是假的,本来就是开源项目,**遇到收费版请直接举报**;
> - 软件首先是自用,顺带分享出来希望可以帮助到有需要的人;是业余作品,会尽量保持维护,不过每天能写的时间有限(半小时左右),目测会有很长一段时间处于不稳定测试版本,且更新频率不定,请谨慎使用;
> - 软件的第三方插件、及其所产生的数据与本软件无关,请合理合法使用,可能产生的版权数据请及时删除。
> - **请不要以 VIP/破解版为噱头进行宣传**,示例仓库基于互联网公开接口封装,并**过滤掉所有 VIP、试听、付费歌曲**,且示例仓库以后也**不会提供具备破解功能的插件**;
@@ -118,27 +118,27 @@
#### 侧边栏
- 基础设置
-![基础设置](./.imgs/basic-setting.jpg)
+ ![基础设置](./.imgs/basic-setting.jpg)
- 主题设置
-![主题设置](./.imgs/theme-setting.jpg)
+ ![主题设置](./.imgs/theme-setting.jpg)
#### 音乐相关
- 歌单页
-![歌单页](./.imgs/song-sheet.jpg)
+ ![歌单页](./.imgs/song-sheet.jpg)
- 歌单内检索
-![歌单内检索](./.imgs/search-in-sheet.jpg)
+ ![歌单内检索](./.imgs/search-in-sheet.jpg)
- 播放页
-![播放页](./.imgs/song-cover.jpg)
+ ![播放页](./.imgs/song-cover.jpg)
- 歌词页
-![歌词页](./.imgs/song-lrc.jpg)
+ ![歌词页](./.imgs/song-lrc.jpg)
#### 搜索相关
- 作者信息
-![专辑信息](./.imgs/artist-detail.jpg)
+ ![专辑信息](./.imgs/artist-detail.jpg)
diff --git a/src/assets/icons/alarm-outline.svg b/src/assets/icons/alarm-outline.svg
new file mode 100644
index 00000000..b4c3b84a
--- /dev/null
+++ b/src/assets/icons/alarm-outline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/album-outline.svg b/src/assets/icons/album-outline.svg
new file mode 100644
index 00000000..b6e9a349
--- /dev/null
+++ b/src/assets/icons/album-outline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/archive-box-x-mark.svg b/src/assets/icons/archive-box-x-mark.svg
new file mode 100644
index 00000000..6df0110e
--- /dev/null
+++ b/src/assets/icons/archive-box-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/arrow-down-tray.svg b/src/assets/icons/arrow-down-tray.svg
new file mode 100644
index 00000000..7f75c8a0
--- /dev/null
+++ b/src/assets/icons/arrow-down-tray.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/arrow-left.svg b/src/assets/icons/arrow-left.svg
new file mode 100644
index 00000000..a8ef7506
--- /dev/null
+++ b/src/assets/icons/arrow-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/arrow-long-left.svg b/src/assets/icons/arrow-long-left.svg
new file mode 100644
index 00000000..3b105f95
--- /dev/null
+++ b/src/assets/icons/arrow-long-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/arrow-path.svg b/src/assets/icons/arrow-path.svg
new file mode 100644
index 00000000..dbeb39e0
--- /dev/null
+++ b/src/assets/icons/arrow-path.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/arrow-right-end-on-rectangle.svg b/src/assets/icons/arrow-right-end-on-rectangle.svg
new file mode 100644
index 00000000..39434c7b
--- /dev/null
+++ b/src/assets/icons/arrow-right-end-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/arrow-uturn-left.svg b/src/assets/icons/arrow-uturn-left.svg
new file mode 100644
index 00000000..1558debd
--- /dev/null
+++ b/src/assets/icons/arrow-uturn-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/arrows-left-right.svg b/src/assets/icons/arrows-left-right.svg
new file mode 100644
index 00000000..adbf5005
--- /dev/null
+++ b/src/assets/icons/arrows-left-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/bars-3.svg b/src/assets/icons/bars-3.svg
new file mode 100644
index 00000000..49f1467a
--- /dev/null
+++ b/src/assets/icons/bars-3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/bookmark-square.svg b/src/assets/icons/bookmark-square.svg
new file mode 100644
index 00000000..d4cf1f7f
--- /dev/null
+++ b/src/assets/icons/bookmark-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/check-circle-outline.svg b/src/assets/icons/check-circle-outline.svg
new file mode 100644
index 00000000..102bf9e5
--- /dev/null
+++ b/src/assets/icons/check-circle-outline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/check-circle.svg b/src/assets/icons/check-circle.svg
new file mode 100644
index 00000000..53d12e3c
--- /dev/null
+++ b/src/assets/icons/check-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/check.svg b/src/assets/icons/check.svg
new file mode 100644
index 00000000..e12382e6
--- /dev/null
+++ b/src/assets/icons/check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/circle-stack.svg b/src/assets/icons/circle-stack.svg
new file mode 100644
index 00000000..4b8555ae
--- /dev/null
+++ b/src/assets/icons/circle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/clock-outline.svg b/src/assets/icons/clock-outline.svg
new file mode 100644
index 00000000..7b88d32b
--- /dev/null
+++ b/src/assets/icons/clock-outline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/code-bracket-square.svg b/src/assets/icons/code-bracket-square.svg
new file mode 100644
index 00000000..e6220b19
--- /dev/null
+++ b/src/assets/icons/code-bracket-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/cog-8-tooth.svg b/src/assets/icons/cog-8-tooth.svg
new file mode 100644
index 00000000..b49bb43c
--- /dev/null
+++ b/src/assets/icons/cog-8-tooth.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/assets/icons/document-outline.svg b/src/assets/icons/document-outline.svg
new file mode 100644
index 00000000..133f13a5
--- /dev/null
+++ b/src/assets/icons/document-outline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/ellipsis-vertical.svg b/src/assets/icons/ellipsis-vertical.svg
new file mode 100644
index 00000000..51f0d3b6
--- /dev/null
+++ b/src/assets/icons/ellipsis-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/exclamation-circle.svg b/src/assets/icons/exclamation-circle.svg
new file mode 100644
index 00000000..a17a6d51
--- /dev/null
+++ b/src/assets/icons/exclamation-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/fire-outline.svg b/src/assets/icons/fire-outline.svg
new file mode 100644
index 00000000..c71d7400
--- /dev/null
+++ b/src/assets/icons/fire-outline.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/assets/icons/fire.svg b/src/assets/icons/fire.svg
new file mode 100644
index 00000000..c71d7400
--- /dev/null
+++ b/src/assets/icons/fire.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/assets/icons/folder-music-outline.svg b/src/assets/icons/folder-music-outline.svg
new file mode 100644
index 00000000..5d135e74
--- /dev/null
+++ b/src/assets/icons/folder-music-outline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/folder-outline.svg b/src/assets/icons/folder-outline.svg
new file mode 100644
index 00000000..91d5d6f3
--- /dev/null
+++ b/src/assets/icons/folder-outline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/folder-plus.svg b/src/assets/icons/folder-plus.svg
new file mode 100644
index 00000000..c6067e2b
--- /dev/null
+++ b/src/assets/icons/folder-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/font-size.svg b/src/assets/icons/font-size.svg
new file mode 100644
index 00000000..d12277ea
--- /dev/null
+++ b/src/assets/icons/font-size.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/heart-outline.svg b/src/assets/icons/heart-outline.svg
new file mode 100644
index 00000000..43f47b82
--- /dev/null
+++ b/src/assets/icons/heart-outline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/heart.svg b/src/assets/icons/heart.svg
new file mode 100644
index 00000000..21e01929
--- /dev/null
+++ b/src/assets/icons/heart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/home-outline.svg b/src/assets/icons/home-outline.svg
new file mode 100644
index 00000000..bb183b60
--- /dev/null
+++ b/src/assets/icons/home-outline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/identification.svg b/src/assets/icons/identification.svg
new file mode 100644
index 00000000..6b5e6b77
--- /dev/null
+++ b/src/assets/icons/identification.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/inbox-arrow-down.svg b/src/assets/icons/inbox-arrow-down.svg
new file mode 100644
index 00000000..19a91a4c
--- /dev/null
+++ b/src/assets/icons/inbox-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/information-circle.svg b/src/assets/icons/information-circle.svg
new file mode 100644
index 00000000..e57f5f39
--- /dev/null
+++ b/src/assets/icons/information-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/javascript.svg b/src/assets/icons/javascript.svg
new file mode 100644
index 00000000..7404b4be
--- /dev/null
+++ b/src/assets/icons/javascript.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/link-slash.svg b/src/assets/icons/link-slash.svg
new file mode 100644
index 00000000..018163a5
--- /dev/null
+++ b/src/assets/icons/link-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/link.svg b/src/assets/icons/link.svg
new file mode 100644
index 00000000..28d33f1a
--- /dev/null
+++ b/src/assets/icons/link.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/lyric.svg b/src/assets/icons/lyric.svg
index 2f5318b5..aed58702 100644
--- a/src/assets/icons/lyric.svg
+++ b/src/assets/icons/lyric.svg
@@ -1,3 +1,3 @@
-
-
-
+
+
+
diff --git a/src/assets/icons/magnifying-glass.svg b/src/assets/icons/magnifying-glass.svg
new file mode 100644
index 00000000..b7bb7645
--- /dev/null
+++ b/src/assets/icons/magnifying-glass.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/minus.svg b/src/assets/icons/minus.svg
new file mode 100644
index 00000000..ed409ccc
--- /dev/null
+++ b/src/assets/icons/minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/motion-play.svg b/src/assets/icons/motion-play.svg
new file mode 100644
index 00000000..3734f050
--- /dev/null
+++ b/src/assets/icons/motion-play.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/assets/icons/musical-note.svg b/src/assets/icons/musical-note.svg
new file mode 100644
index 00000000..f83e9c9a
--- /dev/null
+++ b/src/assets/icons/musical-note.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/pause-circle-outline.svg b/src/assets/icons/pause-circle-outline.svg
new file mode 100644
index 00000000..2956eb56
--- /dev/null
+++ b/src/assets/icons/pause-circle-outline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/pause.svg b/src/assets/icons/pause.svg
new file mode 100644
index 00000000..8cd1f5c8
--- /dev/null
+++ b/src/assets/icons/pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/pencil-outline.svg b/src/assets/icons/pencil-outline.svg
new file mode 100644
index 00000000..be50240d
--- /dev/null
+++ b/src/assets/icons/pencil-outline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/pencil-square.svg b/src/assets/icons/pencil-square.svg
new file mode 100644
index 00000000..d34da416
--- /dev/null
+++ b/src/assets/icons/pencil-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/play-circle-outline.svg b/src/assets/icons/play-circle-outline.svg
new file mode 100644
index 00000000..9858bf44
--- /dev/null
+++ b/src/assets/icons/play-circle-outline.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/assets/icons/play-circle.svg b/src/assets/icons/play-circle.svg
new file mode 100644
index 00000000..d55a08e4
--- /dev/null
+++ b/src/assets/icons/play-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/play.svg b/src/assets/icons/play.svg
new file mode 100644
index 00000000..4dafab6d
--- /dev/null
+++ b/src/assets/icons/play.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/playlist.svg b/src/assets/icons/playlist.svg
new file mode 100644
index 00000000..32d069e3
--- /dev/null
+++ b/src/assets/icons/playlist.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/plus.svg b/src/assets/icons/plus.svg
new file mode 100644
index 00000000..9cc7ee43
--- /dev/null
+++ b/src/assets/icons/plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/power-outline.svg b/src/assets/icons/power-outline.svg
new file mode 100644
index 00000000..b6cd4f77
--- /dev/null
+++ b/src/assets/icons/power-outline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/repeat-song-1.svg b/src/assets/icons/repeat-song-1.svg
new file mode 100644
index 00000000..e5128c4f
--- /dev/null
+++ b/src/assets/icons/repeat-song-1.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/assets/icons/repeat-song.svg b/src/assets/icons/repeat-song.svg
new file mode 100644
index 00000000..1c21f373
--- /dev/null
+++ b/src/assets/icons/repeat-song.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/src/assets/icons/share.svg b/src/assets/icons/share.svg
new file mode 100644
index 00000000..50842d0f
--- /dev/null
+++ b/src/assets/icons/share.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/shield-keyhole-outline.svg b/src/assets/icons/shield-keyhole-outline.svg
new file mode 100644
index 00000000..c89b8684
--- /dev/null
+++ b/src/assets/icons/shield-keyhole-outline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/shuffle.svg b/src/assets/icons/shuffle.svg
new file mode 100644
index 00000000..a1a4c204
--- /dev/null
+++ b/src/assets/icons/shuffle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/src/assets/icons/skip-left.svg b/src/assets/icons/skip-left.svg
new file mode 100644
index 00000000..8e7be99a
--- /dev/null
+++ b/src/assets/icons/skip-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/skip-right.svg b/src/assets/icons/skip-right.svg
new file mode 100644
index 00000000..1f647e67
--- /dev/null
+++ b/src/assets/icons/skip-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/sort-outline.svg b/src/assets/icons/sort-outline.svg
new file mode 100644
index 00000000..a6f4cca8
--- /dev/null
+++ b/src/assets/icons/sort-outline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/t-shirt-outline.svg b/src/assets/icons/t-shirt-outline.svg
new file mode 100644
index 00000000..4e829784
--- /dev/null
+++ b/src/assets/icons/t-shirt-outline.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/translation.svg b/src/assets/icons/translation.svg
index 662004bb..a71f5052 100644
--- a/src/assets/icons/translation.svg
+++ b/src/assets/icons/translation.svg
@@ -1,4 +1,4 @@
-
-
-
-
+
+
+
+
diff --git a/src/assets/icons/trash-outline.svg b/src/assets/icons/trash-outline.svg
new file mode 100644
index 00000000..d459e66c
--- /dev/null
+++ b/src/assets/icons/trash-outline.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/trophy.svg b/src/assets/icons/trophy.svg
new file mode 100644
index 00000000..286dc8f0
--- /dev/null
+++ b/src/assets/icons/trophy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/user.svg b/src/assets/icons/user.svg
new file mode 100644
index 00000000..c65608ad
--- /dev/null
+++ b/src/assets/icons/user.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/icons/x-mark.svg b/src/assets/icons/x-mark.svg
new file mode 100644
index 00000000..7af25f61
--- /dev/null
+++ b/src/assets/icons/x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/src/assets/imgs/logo1.png b/src/assets/imgs/logo1.png
deleted file mode 100644
index 213604a8..00000000
Binary files a/src/assets/imgs/logo1.png and /dev/null differ
diff --git a/src/components/base/SortableFlatList.tsx b/src/components/base/SortableFlatList.tsx
index b6001d26..b411d590 100644
--- a/src/components/base/SortableFlatList.tsx
+++ b/src/components/base/SortableFlatList.tsx
@@ -1,465 +1,465 @@
-/**
- * 支持长按拖拽排序的flatlist,右边加个固定的按钮,拖拽排序。
- * 考虑到方便实现+节省性能,整个app内的拖拽排序都遵守以下实现。
- * 点击会出现
- */
-
-import globalStyle from '@/constants/globalStyle';
-import {iconSizeConst} from '@/constants/uiConst';
-import useTextColor from '@/hooks/useTextColor';
-import rpx from '@/utils/rpx';
-import {FlashList} from '@shopify/flash-list';
-import React, {
- ForwardedRef,
- forwardRef,
- memo,
- useEffect,
- useMemo,
- useRef,
- useState,
-} from 'react';
-import {LayoutRectangle, Pressable, StyleSheet, View} from 'react-native';
-import {
- runOnJS,
- useDerivedValue,
- useSharedValue,
-} from 'react-native-reanimated';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-
-const defaultZIndex = 10;
-
-interface ISortableFlatListProps {
- data: T[];
- renderItem: (props: {item: T; index: number}) => JSX.Element;
- // 高度
- itemHeight: number;
- itemJustifyContent?:
- | 'flex-start'
- | 'flex-end'
- | 'center'
- | 'space-between'
- | 'space-around'
- | 'space-evenly';
- // 滚动list距离顶部的距离, 这里写的不好
- marginTop: number;
- /** 拖拽时的背景色 */
- activeBackgroundColor?: string;
- /** 交换结束 */
- onSortEnd?: (newData: T[]) => void;
-}
-
-export default function SortableFlatList(
- props: ISortableFlatListProps,
-) {
- const {
- data,
- renderItem,
- itemHeight,
- itemJustifyContent,
- marginTop,
- activeBackgroundColor,
- onSortEnd,
- } = props;
-
- // 不要干扰原始数据
- const [_data, _setData] = useState([...(data ?? [])]);
- // 是否禁止滚动
- const [scrollEnabled, setScrollEnabled] = useState(true);
- // 是否处在激活状态, -1表示无,其他表示当前激活的下标
- const activeRef = useRef(-1);
- const [activeItem, setActiveItem] = useState(null);
-
- const layoutRef = useRef();
- // listref
- const listRef = useRef | null>(null);
- // fakeref
- const fakeItemRef = useRef(null);
- // contentoffset
- const contentOffsetYRef = useRef(-1);
- const targetOffsetYRef = useRef(0);
-
- const direction = useSharedValue(0);
-
- useEffect(() => {
- _setData([...(data ?? [])]);
- }, [data]);
-
- const initDragPageY = useRef(0);
- const initDragLocationY = useRef(0);
- const offsetRef = useRef(0);
-
- //#region 滚动
- const scrollingRef = useRef(false);
-
- // 列表整体的高度
- const listContentHeight = useMemo(
- () => itemHeight * data.length,
- [data, itemHeight],
- );
-
- function scrollToTarget(forceScroll = false) {
- // 未选中
- if (activeRef.current === -1) {
- scrollingRef.current = false;
- return;
- }
-
- // 滚动中就不滚了 /
- if (scrollingRef.current && !forceScroll) {
- scrollingRef.current = true;
- return;
- }
- // 方向是0
- if (direction.value === 0) {
- scrollingRef.current = false;
- return;
- }
-
- const nextTarget =
- Math.sign(direction.value) *
- Math.max(Math.abs(direction.value), 0.3) *
- 300 +
- contentOffsetYRef.current;
- // 当前到极限了
- if (
- (contentOffsetYRef.current <= 2 &&
- nextTarget < contentOffsetYRef.current) ||
- (contentOffsetYRef.current >=
- listContentHeight - (layoutRef.current?.height ?? 0) - 2 &&
- nextTarget > contentOffsetYRef.current)
- ) {
- scrollingRef.current = false;
- return;
- }
- scrollingRef.current = true;
- // 超出区域
- targetOffsetYRef.current = Math.min(
- Math.max(0, nextTarget),
- listContentHeight - (layoutRef.current?.height ?? 0),
- );
- listRef.current?.scrollToOffset({
- animated: true,
- offset: targetOffsetYRef.current,
- });
- }
-
- useDerivedValue(() => {
- // 正在滚动
- if (scrollingRef.current) {
- return;
- } else if (direction.value !== 0) {
- // 开始滚动
- runOnJS(scrollToTarget)();
- }
- }, []);
-
- //#endregion
-
- return (
-
- {/* 纯展示 */}
- (fakeItemRef.current = _)}
- backgroundColor={activeBackgroundColor}
- renderItem={renderItem}
- itemHeight={itemHeight}
- item={activeItem}
- itemJustifyContent={itemJustifyContent}
- />
- {
- listRef.current = _;
- }}
- onLayout={evt => {
- layoutRef.current = evt.nativeEvent.layout;
- }}
- data={_data}
- estimatedItemSize={itemHeight}
- scrollEventThrottle={16}
- onTouchStart={e => {
- if (activeRef.current !== -1) {
- // 相对于整个页面顶部的距离
- initDragPageY.current = e.nativeEvent.pageY;
- initDragLocationY.current = e.nativeEvent.locationY;
- }
- }}
- onTouchMove={e => {
- if (activeRef.current !== -1) {
- offsetRef.current =
- e.nativeEvent.pageY -
- (marginTop ?? layoutRef.current?.y ?? 0) -
- itemHeight / 2;
-
- if (offsetRef.current < 0) {
- offsetRef.current = 0;
- } else if (
- offsetRef.current >
- (layoutRef.current?.height ?? 0) - itemHeight
- ) {
- offsetRef.current =
- (layoutRef.current?.height ?? 0) - itemHeight;
- }
- fakeItemRef.current!.setNativeProps({
- top: offsetRef.current,
- opacity: 1,
- zIndex: 100,
- });
-
- // 如果超出范围,停止
- if (offsetRef.current < itemHeight * 2) {
- // 上滑
- direction.value =
- offsetRef.current / itemHeight / 2 - 1;
- } else if (
- offsetRef.current >
- (layoutRef.current?.height ?? 0) - 3 * itemHeight
- ) {
- // 下滑
- direction.value =
- (offsetRef.current -
- (layoutRef.current?.height ?? 0) +
- 3 * itemHeight) /
- itemHeight /
- 2;
- } else {
- // 不滑动
- direction.value = 0;
- }
- }
- }}
- onTouchEnd={e => {
- if (activeRef.current !== -1) {
- // 计算最终的位置,触发onSortEnd
- let index = activeRef.current;
- if (contentOffsetYRef.current !== -1) {
- index = Math.round(
- (contentOffsetYRef.current +
- offsetRef.current) /
- itemHeight,
- );
- } else {
- // 拖动的距离
- index =
- activeRef.current +
- Math.round(
- (e.nativeEvent.pageY -
- initDragPageY.current +
- initDragLocationY.current) /
- itemHeight,
- );
- }
- index = Math.min(data.length, Math.max(index, 0));
- // from: activeRef.current to: index
- if (activeRef.current !== index) {
- let nData = _data
- .slice(0, activeRef.current)
- .concat(_data.slice(activeRef.current + 1));
- nData.splice(index, 0, activeItem as T);
- onSortEnd?.(nData);
- // 测试用,正式时移除掉
- // _setData(nData);
- }
- }
- scrollingRef.current = false;
- activeRef.current = -1;
- setScrollEnabled(true);
- setActiveItem(null);
- fakeItemRef.current!.setNativeProps({
- top: 0,
- opacity: 0,
- zIndex: -1,
- });
- }}
- onTouchCancel={() => {
- // todo: 滑动很快的时候会触发取消,native的flatlist就这样
- activeRef.current = -1;
- scrollingRef.current = false;
- setScrollEnabled(true);
- setActiveItem(null);
- fakeItemRef.current!.setNativeProps({
- top: 0,
- opacity: 0,
- zIndex: -1,
- });
- contentOffsetYRef.current = -1;
- }}
- onScroll={e => {
- contentOffsetYRef.current = e.nativeEvent.contentOffset.y;
- if (
- activeRef.current !== -1 &&
- Math.abs(
- contentOffsetYRef.current -
- targetOffsetYRef.current,
- ) < 2
- ) {
- scrollToTarget(true);
- }
- }}
- renderItem={({item, index}) => {
- return (
-
- );
- }}
- />
-
- );
-}
-
-interface ISortableFlatListItemProps {
- item: T;
- index: number;
- // 高度
- itemHeight: number;
- itemJustifyContent?:
- | 'flex-start'
- | 'flex-end'
- | 'center'
- | 'space-between'
- | 'space-around'
- | 'space-evenly';
- setScrollEnabled: (scrollEnabled: boolean) => void;
- renderItem: (props: {item: T; index: number}) => JSX.Element;
- setActiveItem: (item: T | null) => void;
- activeRef: React.MutableRefObject;
-}
-function _SortableFlatListItem(props: ISortableFlatListItemProps) {
- const {
- itemHeight,
- setScrollEnabled,
- renderItem,
- setActiveItem,
- itemJustifyContent,
- item,
- index,
- activeRef,
- } = props;
-
- // 省一点性能,height是顺着传下来的,放ref就好了
- const styleRef = useRef(
- StyleSheet.create({
- viewWrapper: {
- height: itemHeight,
- width: '100%',
- flexDirection: 'row',
- justifyContent: itemJustifyContent ?? 'flex-end',
- zIndex: defaultZIndex,
- },
- btn: {
- height: itemHeight,
- justifyContent: 'center',
- alignItems: 'center',
- position: 'absolute',
- top: 0,
- right: 0,
- width: rpx(100),
- textAlignVertical: 'center',
- },
- }),
- );
- const textColor = useTextColor();
-
- return (
-
- {renderItem({item, index})}
- {
- if (activeRef.current !== -1) {
- return;
- }
- /** 使用ref避免其它组件重新渲染; 由于事件冒泡,这里会先触发 */
- activeRef.current = index;
- /** 锁定滚动 */
- setScrollEnabled(false);
- setActiveItem(item);
- }}
- style={styleRef.current.btn}>
-
-
-
- );
-}
-
-const SortableFlatListItem = memo(
- _SortableFlatListItem,
- (prev, curr) => prev.index === curr.index && prev.item === curr.item,
-);
-
-const FakeFlatListItem = forwardRef(function (
- props: Pick<
- ISortableFlatListItemProps,
- 'itemHeight' | 'renderItem' | 'item' | 'itemJustifyContent'
- > & {
- backgroundColor?: string;
- },
- ref: ForwardedRef,
-) {
- const {itemHeight, renderItem, item, backgroundColor, itemJustifyContent} =
- props;
-
- const styleRef = useRef(
- StyleSheet.create({
- viewWrapper: {
- height: itemHeight,
- width: '100%',
- flexDirection: 'row',
- justifyContent: itemJustifyContent ?? 'flex-end',
- zIndex: defaultZIndex,
- },
- btn: {
- height: itemHeight,
- paddingHorizontal: rpx(28),
- justifyContent: 'center',
- alignItems: 'center',
- position: 'absolute',
- top: 0,
- right: 0,
- width: rpx(100),
- textAlignVertical: 'center',
- },
- }),
- );
- const textColor = useTextColor();
-
- return (
-
- {item ? renderItem({item, index: -1}) : null}
-
-
-
-
- );
-});
-
-const style = StyleSheet.create({
- activeItemDefault: {
- opacity: 0,
- zIndex: -1,
- position: 'absolute',
- top: 0,
- left: 0,
- },
-});
+/**
+ * 支持长按拖拽排序的flatlist,右边加个固定的按钮,拖拽排序。
+ * 考虑到方便实现+节省性能,整个app内的拖拽排序都遵守以下实现。
+ * 点击会出现
+ */
+
+import globalStyle from '@/constants/globalStyle';
+import {iconSizeConst} from '@/constants/uiConst';
+import useTextColor from '@/hooks/useTextColor';
+import rpx from '@/utils/rpx';
+import {FlashList} from '@shopify/flash-list';
+import React, {
+ ForwardedRef,
+ forwardRef,
+ memo,
+ useEffect,
+ useMemo,
+ useRef,
+ useState,
+} from 'react';
+import {LayoutRectangle, Pressable, StyleSheet, View} from 'react-native';
+import {
+ runOnJS,
+ useDerivedValue,
+ useSharedValue,
+} from 'react-native-reanimated';
+import Icon from '@/components/base/icon.tsx';
+
+const defaultZIndex = 10;
+
+interface ISortableFlatListProps {
+ data: T[];
+ renderItem: (props: {item: T; index: number}) => JSX.Element;
+ // 高度
+ itemHeight: number;
+ itemJustifyContent?:
+ | 'flex-start'
+ | 'flex-end'
+ | 'center'
+ | 'space-between'
+ | 'space-around'
+ | 'space-evenly';
+ // 滚动list距离顶部的距离, 这里写的不好
+ marginTop: number;
+ /** 拖拽时的背景色 */
+ activeBackgroundColor?: string;
+ /** 交换结束 */
+ onSortEnd?: (newData: T[]) => void;
+}
+
+export default function SortableFlatList(
+ props: ISortableFlatListProps,
+) {
+ const {
+ data,
+ renderItem,
+ itemHeight,
+ itemJustifyContent,
+ marginTop,
+ activeBackgroundColor,
+ onSortEnd,
+ } = props;
+
+ // 不要干扰原始数据
+ const [_data, _setData] = useState([...(data ?? [])]);
+ // 是否禁止滚动
+ const [scrollEnabled, setScrollEnabled] = useState(true);
+ // 是否处在激活状态, -1表示无,其他表示当前激活的下标
+ const activeRef = useRef(-1);
+ const [activeItem, setActiveItem] = useState(null);
+
+ const layoutRef = useRef();
+ // listref
+ const listRef = useRef | null>(null);
+ // fakeref
+ const fakeItemRef = useRef(null);
+ // contentoffset
+ const contentOffsetYRef = useRef(-1);
+ const targetOffsetYRef = useRef(0);
+
+ const direction = useSharedValue(0);
+
+ useEffect(() => {
+ _setData([...(data ?? [])]);
+ }, [data]);
+
+ const initDragPageY = useRef(0);
+ const initDragLocationY = useRef(0);
+ const offsetRef = useRef(0);
+
+ //#region 滚动
+ const scrollingRef = useRef(false);
+
+ // 列表整体的高度
+ const listContentHeight = useMemo(
+ () => itemHeight * data.length,
+ [data, itemHeight],
+ );
+
+ function scrollToTarget(forceScroll = false) {
+ // 未选中
+ if (activeRef.current === -1) {
+ scrollingRef.current = false;
+ return;
+ }
+
+ // 滚动中就不滚了 /
+ if (scrollingRef.current && !forceScroll) {
+ scrollingRef.current = true;
+ return;
+ }
+ // 方向是0
+ if (direction.value === 0) {
+ scrollingRef.current = false;
+ return;
+ }
+
+ const nextTarget =
+ Math.sign(direction.value) *
+ Math.max(Math.abs(direction.value), 0.3) *
+ 300 +
+ contentOffsetYRef.current;
+ // 当前到极限了
+ if (
+ (contentOffsetYRef.current <= 2 &&
+ nextTarget < contentOffsetYRef.current) ||
+ (contentOffsetYRef.current >=
+ listContentHeight - (layoutRef.current?.height ?? 0) - 2 &&
+ nextTarget > contentOffsetYRef.current)
+ ) {
+ scrollingRef.current = false;
+ return;
+ }
+ scrollingRef.current = true;
+ // 超出区域
+ targetOffsetYRef.current = Math.min(
+ Math.max(0, nextTarget),
+ listContentHeight - (layoutRef.current?.height ?? 0),
+ );
+ listRef.current?.scrollToOffset({
+ animated: true,
+ offset: targetOffsetYRef.current,
+ });
+ }
+
+ useDerivedValue(() => {
+ // 正在滚动
+ if (scrollingRef.current) {
+ return;
+ } else if (direction.value !== 0) {
+ // 开始滚动
+ runOnJS(scrollToTarget)();
+ }
+ }, []);
+
+ //#endregion
+
+ return (
+
+ {/* 纯展示 */}
+ (fakeItemRef.current = _)}
+ backgroundColor={activeBackgroundColor}
+ renderItem={renderItem}
+ itemHeight={itemHeight}
+ item={activeItem}
+ itemJustifyContent={itemJustifyContent}
+ />
+ {
+ listRef.current = _;
+ }}
+ onLayout={evt => {
+ layoutRef.current = evt.nativeEvent.layout;
+ }}
+ data={_data}
+ estimatedItemSize={itemHeight}
+ scrollEventThrottle={16}
+ onTouchStart={e => {
+ if (activeRef.current !== -1) {
+ // 相对于整个页面顶部的距离
+ initDragPageY.current = e.nativeEvent.pageY;
+ initDragLocationY.current = e.nativeEvent.locationY;
+ }
+ }}
+ onTouchMove={e => {
+ if (activeRef.current !== -1) {
+ offsetRef.current =
+ e.nativeEvent.pageY -
+ (marginTop ?? layoutRef.current?.y ?? 0) -
+ itemHeight / 2;
+
+ if (offsetRef.current < 0) {
+ offsetRef.current = 0;
+ } else if (
+ offsetRef.current >
+ (layoutRef.current?.height ?? 0) - itemHeight
+ ) {
+ offsetRef.current =
+ (layoutRef.current?.height ?? 0) - itemHeight;
+ }
+ fakeItemRef.current!.setNativeProps({
+ top: offsetRef.current,
+ opacity: 1,
+ zIndex: 100,
+ });
+
+ // 如果超出范围,停止
+ if (offsetRef.current < itemHeight * 2) {
+ // 上滑
+ direction.value =
+ offsetRef.current / itemHeight / 2 - 1;
+ } else if (
+ offsetRef.current >
+ (layoutRef.current?.height ?? 0) - 3 * itemHeight
+ ) {
+ // 下滑
+ direction.value =
+ (offsetRef.current -
+ (layoutRef.current?.height ?? 0) +
+ 3 * itemHeight) /
+ itemHeight /
+ 2;
+ } else {
+ // 不滑动
+ direction.value = 0;
+ }
+ }
+ }}
+ onTouchEnd={e => {
+ if (activeRef.current !== -1) {
+ // 计算最终的位置,触发onSortEnd
+ let index = activeRef.current;
+ if (contentOffsetYRef.current !== -1) {
+ index = Math.round(
+ (contentOffsetYRef.current +
+ offsetRef.current) /
+ itemHeight,
+ );
+ } else {
+ // 拖动的距离
+ index =
+ activeRef.current +
+ Math.round(
+ (e.nativeEvent.pageY -
+ initDragPageY.current +
+ initDragLocationY.current) /
+ itemHeight,
+ );
+ }
+ index = Math.min(data.length, Math.max(index, 0));
+ // from: activeRef.current to: index
+ if (activeRef.current !== index) {
+ let nData = _data
+ .slice(0, activeRef.current)
+ .concat(_data.slice(activeRef.current + 1));
+ nData.splice(index, 0, activeItem as T);
+ onSortEnd?.(nData);
+ // 测试用,正式时移除掉
+ // _setData(nData);
+ }
+ }
+ scrollingRef.current = false;
+ activeRef.current = -1;
+ setScrollEnabled(true);
+ setActiveItem(null);
+ fakeItemRef.current!.setNativeProps({
+ top: 0,
+ opacity: 0,
+ zIndex: -1,
+ });
+ }}
+ onTouchCancel={() => {
+ // todo: 滑动很快的时候会触发取消,native的flatlist就这样
+ activeRef.current = -1;
+ scrollingRef.current = false;
+ setScrollEnabled(true);
+ setActiveItem(null);
+ fakeItemRef.current!.setNativeProps({
+ top: 0,
+ opacity: 0,
+ zIndex: -1,
+ });
+ contentOffsetYRef.current = -1;
+ }}
+ onScroll={e => {
+ contentOffsetYRef.current = e.nativeEvent.contentOffset.y;
+ if (
+ activeRef.current !== -1 &&
+ Math.abs(
+ contentOffsetYRef.current -
+ targetOffsetYRef.current,
+ ) < 2
+ ) {
+ scrollToTarget(true);
+ }
+ }}
+ renderItem={({item, index}) => {
+ return (
+
+ );
+ }}
+ />
+
+ );
+}
+
+interface ISortableFlatListItemProps {
+ item: T;
+ index: number;
+ // 高度
+ itemHeight: number;
+ itemJustifyContent?:
+ | 'flex-start'
+ | 'flex-end'
+ | 'center'
+ | 'space-between'
+ | 'space-around'
+ | 'space-evenly';
+ setScrollEnabled: (scrollEnabled: boolean) => void;
+ renderItem: (props: {item: T; index: number}) => JSX.Element;
+ setActiveItem: (item: T | null) => void;
+ activeRef: React.MutableRefObject;
+}
+function _SortableFlatListItem(props: ISortableFlatListItemProps) {
+ const {
+ itemHeight,
+ setScrollEnabled,
+ renderItem,
+ setActiveItem,
+ itemJustifyContent,
+ item,
+ index,
+ activeRef,
+ } = props;
+
+ // 省一点性能,height是顺着传下来的,放ref就好了
+ const styleRef = useRef(
+ StyleSheet.create({
+ viewWrapper: {
+ height: itemHeight,
+ width: '100%',
+ flexDirection: 'row',
+ justifyContent: itemJustifyContent ?? 'flex-end',
+ zIndex: defaultZIndex,
+ },
+ btn: {
+ height: itemHeight,
+ justifyContent: 'center',
+ alignItems: 'center',
+ position: 'absolute',
+ top: 0,
+ right: 0,
+ width: rpx(100),
+ textAlignVertical: 'center',
+ },
+ }),
+ );
+ const textColor = useTextColor();
+
+ return (
+
+ {renderItem({item, index})}
+ {
+ if (activeRef.current !== -1) {
+ return;
+ }
+ /** 使用ref避免其它组件重新渲染; 由于事件冒泡,这里会先触发 */
+ activeRef.current = index;
+ /** 锁定滚动 */
+ setScrollEnabled(false);
+ setActiveItem(item);
+ }}
+ style={styleRef.current.btn}>
+
+
+
+ );
+}
+
+const SortableFlatListItem = memo(
+ _SortableFlatListItem,
+ (prev, curr) => prev.index === curr.index && prev.item === curr.item,
+);
+
+const FakeFlatListItem = forwardRef(function (
+ props: Pick<
+ ISortableFlatListItemProps,
+ 'itemHeight' | 'renderItem' | 'item' | 'itemJustifyContent'
+ > & {
+ backgroundColor?: string;
+ },
+ ref: ForwardedRef,
+) {
+ const {itemHeight, renderItem, item, backgroundColor, itemJustifyContent} =
+ props;
+
+ const styleRef = useRef(
+ StyleSheet.create({
+ viewWrapper: {
+ height: itemHeight,
+ width: '100%',
+ flexDirection: 'row',
+ justifyContent: itemJustifyContent ?? 'flex-end',
+ zIndex: defaultZIndex,
+ },
+ btn: {
+ height: itemHeight,
+ paddingHorizontal: rpx(28),
+ justifyContent: 'center',
+ alignItems: 'center',
+ position: 'absolute',
+ top: 0,
+ right: 0,
+ width: rpx(100),
+ textAlignVertical: 'center',
+ },
+ }),
+ );
+ const textColor = useTextColor();
+
+ return (
+
+ {item ? renderItem({item, index: -1}) : null}
+
+
+
+
+ );
+});
+
+const style = StyleSheet.create({
+ activeItemDefault: {
+ opacity: 0,
+ zIndex: -1,
+ position: 'absolute',
+ top: 0,
+ left: 0,
+ },
+});
diff --git a/src/components/base/appBar.tsx b/src/components/base/appBar.tsx
index 969e7989..986f7ca6 100644
--- a/src/components/base/appBar.tsx
+++ b/src/components/base/appBar.tsx
@@ -1,11 +1,11 @@
import React, {ReactNode, useEffect, useState} from 'react';
import {
LayoutRectangle,
+ StatusBar as OriginalStatusBar,
+ StyleProp,
StyleSheet,
TouchableWithoutFeedback,
View,
- StatusBar as OriginalStatusBar,
- StyleProp,
ViewStyle,
} from 'react-native';
import rpx from '@/utils/rpx';
@@ -24,17 +24,18 @@ import Animated, {
} from 'react-native-reanimated';
import Portal from './portal';
import ListItem from './listItem';
+import {IIconName} from '@/components/base/icon.tsx';
interface IAppBarProps {
titleTextOpacity?: number;
withStatusBar?: boolean;
color?: string;
actions?: Array<{
- icon: string;
+ icon: IIconName;
onPress?: () => void;
}>;
menu?: Array<{
- icon: string;
+ icon: IIconName;
title: string;
show?: boolean;
onPress?: () => void;
@@ -143,10 +144,10 @@ export default function AppBar(props: IAppBarProps) {
{actionComponent ?? null}
{menu?.length ? (
{
- setMenuIconLayout(e.nativeEvent.layout);
+ onLayout={evt => {
+ setMenuIconLayout(evt.nativeEvent.layout);
}}
color={contentColor}
style={[globalStyle.notShrink, styles.rightButton]}
@@ -208,7 +209,7 @@ export default function AppBar(props: IAppBarProps) {
it.show !== false ? (
{
it.onPress?.();
@@ -232,6 +233,7 @@ const styles = StyleSheet.create({
zIndex: 10000,
height: rpx(88),
flexDirection: 'row',
+ alignItems: 'center',
paddingHorizontal: rpx(24),
},
content: {
diff --git a/src/components/base/button.tsx b/src/components/base/button.tsx
index 8fa15e0f..bbdfbdd4 100644
--- a/src/components/base/button.tsx
+++ b/src/components/base/button.tsx
@@ -5,7 +5,7 @@ import rpx from '@/utils/rpx';
import {CustomizedColors} from '@/hooks/useColors';
interface IButtonProps {
- withHorizonalPadding?: boolean;
+ withHorizontalPadding?: boolean;
style?: any;
hitSlop?: number;
children: string;
@@ -13,19 +13,20 @@ interface IButtonProps {
onPress?: () => void;
}
export default function (props: IButtonProps) {
- const {children, onPress, fontColor, hitSlop, withHorizonalPadding} = props;
+ const {children, onPress, fontColor, hitSlop, withHorizontalPadding} =
+ props;
return (
diff --git a/src/components/base/checkbox.tsx b/src/components/base/checkbox.tsx
index f12638ca..9bb2c66b 100644
--- a/src/components/base/checkbox.tsx
+++ b/src/components/base/checkbox.tsx
@@ -1,65 +1,65 @@
-import React from 'react';
-import {StyleProp, StyleSheet, View, ViewProps} from 'react-native';
-import rpx from '@/utils/rpx';
-import useColors from '@/hooks/useColors';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-import {TouchableOpacity} from 'react-native-gesture-handler';
-
-interface ICheckboxProps {
- checked?: boolean;
- onPress?: () => void;
- style?: StyleProp;
-}
-
-const slop = rpx(24);
-
-export default function Checkbox(props: ICheckboxProps) {
- const {checked, onPress, style} = props;
- const colors = useColors();
-
- const innerNode = (
-
- {checked ? (
-
- ) : null}
-
- );
-
- return onPress ? (
-
- {innerNode}
-
- ) : (
- innerNode
- );
-}
-
-const styles = StyleSheet.create({
- container: {
- width: rpx(36),
- height: rpx(36),
- borderRadius: rpx(2),
- borderWidth: rpx(1),
- alignItems: 'center',
- justifyContent: 'center',
- },
-});
+import React from 'react';
+import {StyleProp, StyleSheet, View, ViewProps} from 'react-native';
+import rpx from '@/utils/rpx';
+import useColors from '@/hooks/useColors';
+import {TouchableOpacity} from 'react-native-gesture-handler';
+import Icon from '@/components/base/icon.tsx';
+
+interface ICheckboxProps {
+ checked?: boolean;
+ onPress?: () => void;
+ style?: StyleProp;
+}
+
+const slop = rpx(24);
+
+export default function Checkbox(props: ICheckboxProps) {
+ const {checked, onPress, style} = props;
+ const colors = useColors();
+
+ const innerNode = (
+
+ {checked ? (
+
+ ) : null}
+
+ );
+
+ return onPress ? (
+
+ {innerNode}
+
+ ) : (
+ innerNode
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ width: rpx(36),
+ height: rpx(36),
+ borderRadius: rpx(2),
+ borderWidth: rpx(1),
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+});
diff --git a/src/components/base/chip.tsx b/src/components/base/chip.tsx
index 3c581231..6ba2b58c 100644
--- a/src/components/base/chip.tsx
+++ b/src/components/base/chip.tsx
@@ -1,57 +1,57 @@
-import React, {ReactNode} from 'react';
-import {Pressable, StyleProp, StyleSheet, ViewStyle} from 'react-native';
-import rpx from '@/utils/rpx';
-import ThemeText from './themeText';
-import useColors from '@/hooks/useColors';
-import IconButton from './iconButton';
-
-interface IChipProps {
- containerStyle?: StyleProp;
- children?: ReactNode;
- onPress?: () => void;
- onClose?: () => void;
-}
-export default function Chip(props: IChipProps) {
- const {containerStyle, children, onPress, onClose} = props;
- const colors = useColors();
-
- return (
-
- {typeof children === 'string' ? (
-
- {children}
-
- ) : (
- children
- )}
-
-
- );
-}
-
-const styles = StyleSheet.create({
- container: {
- height: rpx(56),
- paddingHorizontal: rpx(18),
- borderRadius: rpx(28),
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center',
- },
- icon: {
- marginLeft: rpx(8),
- },
-});
+import React, {ReactNode} from 'react';
+import {Pressable, StyleProp, StyleSheet, ViewStyle} from 'react-native';
+import rpx from '@/utils/rpx';
+import ThemeText from './themeText';
+import useColors from '@/hooks/useColors';
+import IconButton from './iconButton';
+
+interface IChipProps {
+ containerStyle?: StyleProp;
+ children?: ReactNode;
+ onPress?: () => void;
+ onClose?: () => void;
+}
+export default function Chip(props: IChipProps) {
+ const {containerStyle, children, onPress, onClose} = props;
+ const colors = useColors();
+
+ return (
+
+ {typeof children === 'string' ? (
+
+ {children}
+
+ ) : (
+ children
+ )}
+
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ height: rpx(56),
+ paddingHorizontal: rpx(18),
+ borderRadius: rpx(28),
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ },
+ icon: {
+ marginLeft: rpx(8),
+ },
+});
diff --git a/src/components/base/colorBlock.tsx b/src/components/base/colorBlock.tsx
index 19dcb469..411ca61b 100644
--- a/src/components/base/colorBlock.tsx
+++ b/src/components/base/colorBlock.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import {StyleSheet, Image, View} from 'react-native';
+import {Image, StyleSheet, View} from 'react-native';
import rpx from '@/utils/rpx';
import {ImgAsset} from '@/constants/assetsConst';
diff --git a/src/components/base/fab.tsx b/src/components/base/fab.tsx
index aa0fe692..7274baa0 100644
--- a/src/components/base/fab.tsx
+++ b/src/components/base/fab.tsx
@@ -1,58 +1,58 @@
-import React from 'react';
-import {Pressable, StyleSheet} from 'react-native';
-import rpx from '@/utils/rpx';
-import useColors from '@/hooks/useColors';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-import {iconSizeConst} from '@/constants/uiConst';
-
-interface IFabProps {
- icon?: string;
- onPress?: () => void;
-}
-export default function Fab(props: IFabProps) {
- const {icon, onPress} = props;
-
- const colors = useColors();
-
- return (
-
- {icon ? (
-
- ) : null}
-
- );
-}
-
-const styles = StyleSheet.create({
- container: {
- width: rpx(108),
- height: rpx(108),
- borderRadius: rpx(54),
- position: 'absolute',
- zIndex: 10010,
- right: rpx(36),
- bottom: rpx(72),
- justifyContent: 'center',
- alignItems: 'center',
- shadowOffset: {
- width: 0,
- height: 5,
- },
- shadowOpacity: 0.34,
- shadowRadius: 6.27,
-
- elevation: 10,
- },
-});
+import React from 'react';
+import {Pressable, StyleSheet} from 'react-native';
+import rpx from '@/utils/rpx';
+import useColors from '@/hooks/useColors';
+import {iconSizeConst} from '@/constants/uiConst';
+import Icon, {IIconName} from '@/components/base/icon.tsx';
+
+interface IFabProps {
+ icon?: IIconName;
+ onPress?: () => void;
+}
+export default function Fab(props: IFabProps) {
+ const {icon, onPress} = props;
+
+ const colors = useColors();
+
+ return (
+
+ {icon ? (
+
+ ) : null}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ container: {
+ width: rpx(108),
+ height: rpx(108),
+ borderRadius: rpx(54),
+ position: 'absolute',
+ zIndex: 10010,
+ right: rpx(36),
+ bottom: rpx(72),
+ justifyContent: 'center',
+ alignItems: 'center',
+ shadowOffset: {
+ width: 0,
+ height: 5,
+ },
+ shadowOpacity: 0.34,
+ shadowRadius: 6.27,
+
+ elevation: 10,
+ },
+});
diff --git a/src/components/base/icon.tsx b/src/components/base/icon.tsx
new file mode 100644
index 00000000..3b871afd
--- /dev/null
+++ b/src/components/base/icon.tsx
@@ -0,0 +1,227 @@
+// This file is generated by generate-assets.mjs. DO NOT MODIFY.
+import {SvgProps} from 'react-native-svg';
+
+import AlarmOutlineIcon from '@/assets/icons/alarm-outline.svg';
+import AlbumOutlineIcon from '@/assets/icons/album-outline.svg';
+import ArchiveBoxXMarkIcon from '@/assets/icons/archive-box-x-mark.svg';
+import ArrowDownTrayIcon from '@/assets/icons/arrow-down-tray.svg';
+import ArrowLeftIcon from '@/assets/icons/arrow-left.svg';
+import ArrowLongLeftIcon from '@/assets/icons/arrow-long-left.svg';
+import ArrowPathIcon from '@/assets/icons/arrow-path.svg';
+import ArrowRightEndOnRectangleIcon from '@/assets/icons/arrow-right-end-on-rectangle.svg';
+import ArrowUturnLeftIcon from '@/assets/icons/arrow-uturn-left.svg';
+import ArrowsLeftRightIcon from '@/assets/icons/arrows-left-right.svg';
+import Bars3Icon from '@/assets/icons/bars-3.svg';
+import BookmarkSquareIcon from '@/assets/icons/bookmark-square.svg';
+import CheckCircleOutlineIcon from '@/assets/icons/check-circle-outline.svg';
+import CheckCircleIcon from '@/assets/icons/check-circle.svg';
+import CheckIcon from '@/assets/icons/check.svg';
+import CircleStackIcon from '@/assets/icons/circle-stack.svg';
+import ClockOutlineIcon from '@/assets/icons/clock-outline.svg';
+import CodeBracketSquareIcon from '@/assets/icons/code-bracket-square.svg';
+import Cog8ToothIcon from '@/assets/icons/cog-8-tooth.svg';
+import DocumentOutlineIcon from '@/assets/icons/document-outline.svg';
+import EllipsisVerticalIcon from '@/assets/icons/ellipsis-vertical.svg';
+import ExclamationCircleIcon from '@/assets/icons/exclamation-circle.svg';
+import FireOutlineIcon from '@/assets/icons/fire-outline.svg';
+import FireIcon from '@/assets/icons/fire.svg';
+import FolderMusicOutlineIcon from '@/assets/icons/folder-music-outline.svg';
+import FolderOutlineIcon from '@/assets/icons/folder-outline.svg';
+import FolderPlusIcon from '@/assets/icons/folder-plus.svg';
+import FontSizeIcon from '@/assets/icons/font-size.svg';
+import HeartOutlineIcon from '@/assets/icons/heart-outline.svg';
+import HeartIcon from '@/assets/icons/heart.svg';
+import HomeOutlineIcon from '@/assets/icons/home-outline.svg';
+import IdentificationIcon from '@/assets/icons/identification.svg';
+import InboxArrowDownIcon from '@/assets/icons/inbox-arrow-down.svg';
+import InformationCircleIcon from '@/assets/icons/information-circle.svg';
+import JavascriptIcon from '@/assets/icons/javascript.svg';
+import LinkSlashIcon from '@/assets/icons/link-slash.svg';
+import LinkIcon from '@/assets/icons/link.svg';
+import LyricIcon from '@/assets/icons/lyric.svg';
+import MagnifyingGlassIcon from '@/assets/icons/magnifying-glass.svg';
+import MinusIcon from '@/assets/icons/minus.svg';
+import MotionPlayIcon from '@/assets/icons/motion-play.svg';
+import MusicalNoteIcon from '@/assets/icons/musical-note.svg';
+import PauseCircleOutlineIcon from '@/assets/icons/pause-circle-outline.svg';
+import PauseIcon from '@/assets/icons/pause.svg';
+import PencilOutlineIcon from '@/assets/icons/pencil-outline.svg';
+import PencilSquareIcon from '@/assets/icons/pencil-square.svg';
+import PlayCircleOutlineIcon from '@/assets/icons/play-circle-outline.svg';
+import PlayCircleIcon from '@/assets/icons/play-circle.svg';
+import PlayIcon from '@/assets/icons/play.svg';
+import PlaylistIcon from '@/assets/icons/playlist.svg';
+import PlusIcon from '@/assets/icons/plus.svg';
+import PowerOutlineIcon from '@/assets/icons/power-outline.svg';
+import RepeatSong1Icon from '@/assets/icons/repeat-song-1.svg';
+import RepeatSongIcon from '@/assets/icons/repeat-song.svg';
+import ShareIcon from '@/assets/icons/share.svg';
+import ShieldKeyholeOutlineIcon from '@/assets/icons/shield-keyhole-outline.svg';
+import ShuffleIcon from '@/assets/icons/shuffle.svg';
+import SkipLeftIcon from '@/assets/icons/skip-left.svg';
+import SkipRightIcon from '@/assets/icons/skip-right.svg';
+import SortOutlineIcon from '@/assets/icons/sort-outline.svg';
+import TShirtOutlineIcon from '@/assets/icons/t-shirt-outline.svg';
+import TranslationIcon from '@/assets/icons/translation.svg';
+import TrashOutlineIcon from '@/assets/icons/trash-outline.svg';
+import TrophyIcon from '@/assets/icons/trophy.svg';
+import UserIcon from '@/assets/icons/user.svg';
+import XMarkIcon from '@/assets/icons/x-mark.svg';
+
+export type IIconName =
+ | 'alarm-outline'
+ | 'album-outline'
+ | 'archive-box-x-mark'
+ | 'arrow-down-tray'
+ | 'arrow-left'
+ | 'arrow-long-left'
+ | 'arrow-path'
+ | 'arrow-right-end-on-rectangle'
+ | 'arrow-uturn-left'
+ | 'arrows-left-right'
+ | 'bars-3'
+ | 'bookmark-square'
+ | 'check-circle-outline'
+ | 'check-circle'
+ | 'check'
+ | 'circle-stack'
+ | 'clock-outline'
+ | 'code-bracket-square'
+ | 'cog-8-tooth'
+ | 'document-outline'
+ | 'ellipsis-vertical'
+ | 'exclamation-circle'
+ | 'fire-outline'
+ | 'fire'
+ | 'folder-music-outline'
+ | 'folder-outline'
+ | 'folder-plus'
+ | 'font-size'
+ | 'heart-outline'
+ | 'heart'
+ | 'home-outline'
+ | 'identification'
+ | 'inbox-arrow-down'
+ | 'information-circle'
+ | 'javascript'
+ | 'link-slash'
+ | 'link'
+ | 'lyric'
+ | 'magnifying-glass'
+ | 'minus'
+ | 'motion-play'
+ | 'musical-note'
+ | 'pause-circle-outline'
+ | 'pause'
+ | 'pencil-outline'
+ | 'pencil-square'
+ | 'play-circle-outline'
+ | 'play-circle'
+ | 'play'
+ | 'playlist'
+ | 'plus'
+ | 'power-outline'
+ | 'repeat-song-1'
+ | 'repeat-song'
+ | 'share'
+ | 'shield-keyhole-outline'
+ | 'shuffle'
+ | 'skip-left'
+ | 'skip-right'
+ | 'sort-outline'
+ | 't-shirt-outline'
+ | 'translation'
+ | 'trash-outline'
+ | 'trophy'
+ | 'user'
+ | 'x-mark';
+
+interface IProps extends SvgProps {
+ /** 图标名称 */
+ name: IIconName;
+ /** 图标大小 */
+ size?: number;
+}
+
+const iconMap = {
+ 'alarm-outline': AlarmOutlineIcon,
+ 'album-outline': AlbumOutlineIcon,
+ 'archive-box-x-mark': ArchiveBoxXMarkIcon,
+ 'arrow-down-tray': ArrowDownTrayIcon,
+ 'arrow-left': ArrowLeftIcon,
+ 'arrow-long-left': ArrowLongLeftIcon,
+ 'arrow-path': ArrowPathIcon,
+ 'arrow-right-end-on-rectangle': ArrowRightEndOnRectangleIcon,
+ 'arrow-uturn-left': ArrowUturnLeftIcon,
+ 'arrows-left-right': ArrowsLeftRightIcon,
+ 'bars-3': Bars3Icon,
+ 'bookmark-square': BookmarkSquareIcon,
+ 'check-circle-outline': CheckCircleOutlineIcon,
+ 'check-circle': CheckCircleIcon,
+ check: CheckIcon,
+ 'circle-stack': CircleStackIcon,
+ 'clock-outline': ClockOutlineIcon,
+ 'code-bracket-square': CodeBracketSquareIcon,
+ 'cog-8-tooth': Cog8ToothIcon,
+ 'document-outline': DocumentOutlineIcon,
+ 'ellipsis-vertical': EllipsisVerticalIcon,
+ 'exclamation-circle': ExclamationCircleIcon,
+ 'fire-outline': FireOutlineIcon,
+ fire: FireIcon,
+ 'folder-music-outline': FolderMusicOutlineIcon,
+ 'folder-outline': FolderOutlineIcon,
+ 'folder-plus': FolderPlusIcon,
+ 'font-size': FontSizeIcon,
+ 'heart-outline': HeartOutlineIcon,
+ heart: HeartIcon,
+ 'home-outline': HomeOutlineIcon,
+ identification: IdentificationIcon,
+ 'inbox-arrow-down': InboxArrowDownIcon,
+ 'information-circle': InformationCircleIcon,
+ javascript: JavascriptIcon,
+ 'link-slash': LinkSlashIcon,
+ link: LinkIcon,
+ lyric: LyricIcon,
+ 'magnifying-glass': MagnifyingGlassIcon,
+ minus: MinusIcon,
+ 'motion-play': MotionPlayIcon,
+ 'musical-note': MusicalNoteIcon,
+ 'pause-circle-outline': PauseCircleOutlineIcon,
+ pause: PauseIcon,
+ 'pencil-outline': PencilOutlineIcon,
+ 'pencil-square': PencilSquareIcon,
+ 'play-circle-outline': PlayCircleOutlineIcon,
+ 'play-circle': PlayCircleIcon,
+ play: PlayIcon,
+ playlist: PlaylistIcon,
+ plus: PlusIcon,
+ 'power-outline': PowerOutlineIcon,
+ 'repeat-song-1': RepeatSong1Icon,
+ 'repeat-song': RepeatSongIcon,
+ share: ShareIcon,
+ 'shield-keyhole-outline': ShieldKeyholeOutlineIcon,
+ shuffle: ShuffleIcon,
+ 'skip-left': SkipLeftIcon,
+ 'skip-right': SkipRightIcon,
+ 'sort-outline': SortOutlineIcon,
+ 't-shirt-outline': TShirtOutlineIcon,
+ translation: TranslationIcon,
+ 'trash-outline': TrashOutlineIcon,
+ trophy: TrophyIcon,
+ user: UserIcon,
+ 'x-mark': XMarkIcon,
+} as const;
+
+export default function Icon(props: IProps) {
+ const {name, size} = props;
+
+ const newProps = {
+ ...props,
+ width: props.width ?? size,
+ height: props.width ?? size,
+ } as SvgProps;
+
+ const Component = iconMap[name];
+
+ return ;
+}
diff --git a/src/components/base/iconButton.tsx b/src/components/base/iconButton.tsx
index 6010885b..13d1a3bf 100644
--- a/src/components/base/iconButton.tsx
+++ b/src/components/base/iconButton.tsx
@@ -1,14 +1,14 @@
import React from 'react';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-import {ColorKey, iconSizeConst, colorMap} from '@/constants/uiConst';
-import {IconProps} from 'react-native-vector-icons/Icon';
+import {ColorKey, colorMap, iconSizeConst} from '@/constants/uiConst';
import {TapGestureHandler} from 'react-native-gesture-handler';
import {StyleSheet} from 'react-native';
import useColors from '@/hooks/useColors';
+import {SvgProps} from 'react-native-svg';
+import Icon, {IIconName} from '@/components/base/icon.tsx';
-interface IIconButtonProps extends IconProps {
- name: string;
- style?: IconProps['style'];
+interface IIconButtonProps extends SvgProps {
+ name: IIconName;
+ style?: SvgProps['style'];
sizeType?: keyof typeof iconSizeConst;
fontColor?: ColorKey;
color?: string;
diff --git a/src/components/base/iconTextButton.tsx b/src/components/base/iconTextButton.tsx
index 83ecc33a..97587e79 100644
--- a/src/components/base/iconTextButton.tsx
+++ b/src/components/base/iconTextButton.tsx
@@ -1,43 +1,43 @@
-import React from 'react';
-import {StyleProp, StyleSheet, ViewStyle} from 'react-native';
-import rpx from '@/utils/rpx';
-import ThemeText from './themeText';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-import {iconSizeConst} from '@/constants/uiConst';
-import useColors from '@/hooks/useColors';
-import {TouchableOpacity} from 'react-native-gesture-handler';
-
-interface IProps {
- icon: string;
- onPress?: () => void;
- containerStyle?: StyleProp;
- children?: string;
-}
-export default function (props: IProps) {
- const {icon, children, onPress, containerStyle} = props;
- const colors = useColors();
-
- return (
-
-
-
- {children}
-
-
- );
-}
-
-const style = StyleSheet.create({
- container: {
- flexDirection: 'row',
- alignItems: 'center',
- paddingHorizontal: rpx(16),
- paddingVertical: rpx(8),
- },
- text: {
- marginLeft: rpx(8),
- },
-});
+import React from 'react';
+import {StyleProp, StyleSheet, ViewStyle} from 'react-native';
+import rpx from '@/utils/rpx';
+import ThemeText from './themeText';
+import {iconSizeConst} from '@/constants/uiConst';
+import useColors from '@/hooks/useColors';
+import {TouchableOpacity} from 'react-native-gesture-handler';
+import Icon, {IIconName} from '@/components/base/icon.tsx';
+
+interface IProps {
+ icon: IIconName;
+ onPress?: () => void;
+ containerStyle?: StyleProp;
+ children?: string;
+}
+export default function (props: IProps) {
+ const {icon, children, onPress, containerStyle} = props;
+ const colors = useColors();
+
+ return (
+
+
+
+ {children}
+
+
+ );
+}
+
+const style = StyleSheet.create({
+ container: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ paddingHorizontal: rpx(16),
+ paddingVertical: rpx(8),
+ },
+ text: {
+ marginLeft: rpx(8),
+ },
+});
diff --git a/src/components/base/imageBtn.tsx b/src/components/base/imageBtn.tsx
index cd2c99a9..78230328 100644
--- a/src/components/base/imageBtn.tsx
+++ b/src/components/base/imageBtn.tsx
@@ -1,7 +1,6 @@
import React from 'react';
-import {StyleProp, StyleSheet, ViewStyle} from 'react-native';
+import {StyleProp, StyleSheet, TouchableOpacity, ViewStyle} from 'react-native';
import rpx from '@/utils/rpx';
-import {TouchableOpacity} from 'react-native';
import Image from './image';
import {ImgAsset} from '@/constants/assetsConst';
import ThemeText from './themeText';
diff --git a/src/components/base/listItem.tsx b/src/components/base/listItem.tsx
index abfb89b2..bf3b39c5 100644
--- a/src/components/base/listItem.tsx
+++ b/src/components/base/listItem.tsx
@@ -1,346 +1,346 @@
-import React, {ReactNode} from 'react';
-import {
- StyleProp,
- StyleSheet,
- TextProps,
- TextStyle,
- TouchableHighlight,
- TouchableOpacity,
- View,
- ViewStyle,
-} from 'react-native';
-import rpx from '@/utils/rpx';
-import useColors from '@/hooks/useColors';
-import ThemeText from './themeText';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-import {
- fontSizeConst,
- fontWeightConst,
- iconSizeConst,
-} from '@/constants/uiConst';
-import FastImage from './fastImage';
-import {ImageStyle} from 'react-native-fast-image';
-
-interface IListItemProps {
- // 是否有左右边距
- withHorizonalPadding?: boolean;
- // 左边距
- leftPadding?: number;
- // 右边距
- rightPadding?: number;
- // height:
- style?: StyleProp;
- // 高度类型
- heightType?: 'big' | 'small' | 'smallest' | 'normal' | 'none';
- children?: ReactNode;
- onPress?: () => void;
- onLongPress?: () => void;
-}
-
-const defaultPadding = rpx(24);
-const defaultActionWidth = rpx(80);
-
-const Size = {
- big: rpx(120),
- normal: rpx(108),
- small: rpx(96),
- smallest: rpx(72),
- none: undefined,
-};
-
-function ListItem(props: IListItemProps) {
- const {
- withHorizonalPadding,
- leftPadding = defaultPadding,
- rightPadding = defaultPadding,
- style,
- heightType = 'normal',
- children,
- onPress,
- onLongPress,
- } = props;
-
- const defaultStyle: StyleProp = {
- paddingLeft: withHorizonalPadding ? leftPadding : 0,
- paddingRight: withHorizonalPadding ? rightPadding : 0,
- height: Size[heightType],
- };
-
- const colors = useColors();
-
- return (
-
-
- {children}
-
-
- );
-}
-
-interface IListItemTextProps {
- children?: number | string;
- fontSize?: keyof typeof fontSizeConst;
- fontWeight?: keyof typeof fontWeightConst;
- width?: number;
- position?: 'left' | 'right' | 'none';
- fixedWidth?: boolean;
- containerStyle?: StyleProp;
- contentStyle?: StyleProp;
- contentProps?: TextProps;
-}
-
-function ListItemText(props: IListItemTextProps) {
- const {
- children,
- fontSize,
- fontWeight,
- position = 'left',
- fixedWidth,
- width,
- containerStyle,
- contentStyle,
- contentProps = {},
- } = props;
-
- const defaultStyle: StyleProp = {
- marginRight: position === 'left' ? defaultPadding : 0,
- marginLeft: position === 'right' ? defaultPadding : 0,
- width: fixedWidth ? width ?? defaultActionWidth : undefined,
- flexBasis: fixedWidth ? width ?? defaultActionWidth : undefined,
- };
-
- return (
-
-
- {children}
-
-
- );
-}
-
-interface IListItemIconProps {
- icon: string;
- iconSize?: number;
- width?: number;
- position?: 'left' | 'right' | 'none';
- fixedWidth?: boolean;
- containerStyle?: StyleProp;
- contentStyle?: StyleProp;
- onPress?: () => void;
-}
-
-function ListItemIcon(props: IListItemIconProps) {
- const {
- icon,
- iconSize = iconSizeConst.normal,
- position = 'left',
- fixedWidth,
- width,
- containerStyle,
- contentStyle,
- onPress,
- } = props;
-
- const colors = useColors();
-
- const defaultStyle: StyleProp = {
- marginRight: position === 'left' ? defaultPadding : 0,
- marginLeft: position === 'right' ? defaultPadding : 0,
- width: fixedWidth ? width ?? defaultActionWidth : undefined,
- flexBasis: fixedWidth ? width ?? defaultActionWidth : undefined,
- };
-
- const innerContent = (
-
-
-
- );
-
- return onPress ? (
- {innerContent}
- ) : (
- innerContent
- );
-}
-
-interface IListItemImageProps {
- uri?: string;
- fallbackImg?: number;
- imageSize?: number;
- width?: number;
- position?: 'left' | 'right';
- fixedWidth?: boolean;
- containerStyle?: StyleProp;
- contentStyle?: StyleProp;
- maskIcon?: string | null;
-}
-
-function ListItemImage(props: IListItemImageProps) {
- const {
- uri,
- fallbackImg,
- position = 'left',
- fixedWidth,
- width,
- containerStyle,
- contentStyle,
- maskIcon,
- } = props;
-
- const defaultStyle: StyleProp = {
- marginRight: position === 'left' ? defaultPadding : 0,
- marginLeft: position === 'right' ? defaultPadding : 0,
- width: fixedWidth ? width ?? defaultActionWidth : undefined,
- flexBasis: fixedWidth ? width ?? defaultActionWidth : undefined,
- };
-
- return (
-
-
- {maskIcon ? (
-
-
-
- ) : null}
-
- );
-}
-
-interface IContentProps {
- title?: ReactNode;
- children?: ReactNode;
- description?: ReactNode;
- containerStyle?: StyleProp;
-}
-
-function Content(props: IContentProps) {
- const {
- children,
- title = children,
- description = null,
- containerStyle,
- } = props;
-
- let realTitle;
- let realDescription;
-
- if (typeof title === 'string' || typeof title === 'number') {
- realTitle = {title} ;
- } else {
- realTitle = title;
- }
-
- if (typeof description === 'string' || typeof description === 'number') {
- realDescription = (
-
- {description}
-
- );
- } else {
- realDescription = description;
- }
-
- return (
-
- {realTitle}
- {realDescription}
-
- );
-}
-
-export function ListItemHeader(props: {children?: ReactNode}) {
- const {children} = props;
- return (
-
- {typeof children === 'string' ? (
-
- {children}
-
- ) : (
- children
- )}
-
- );
-}
-
-const styles = StyleSheet.create({
- /** listitem */
- container: {
- width: '100%',
- flexDirection: 'row',
- alignItems: 'center',
- },
- /** left */
- actionBase: {
- height: '100%',
- flexShrink: 0,
- flexGrow: 0,
- flexBasis: 0,
- flexDirection: 'row',
- justifyContent: 'center',
- alignItems: 'center',
- },
-
- leftImage: {
- width: rpx(80),
- height: rpx(80),
- borderRadius: rpx(16),
- },
- imageMask: {
- position: 'absolute',
- alignItems: 'center',
- justifyContent: 'center',
- backgroundColor: '#00000022',
- },
- itemContentContainer: {
- flex: 1,
- height: '100%',
- justifyContent: 'center',
- },
- contentDesc: {
- marginTop: rpx(16),
- },
-
- listItemHeader: {
- marginTop: rpx(20),
- },
-});
-
-ListItem.Size = Size;
-ListItem.ListItemIcon = ListItemIcon;
-ListItem.ListItemImage = ListItemImage;
-ListItem.ListItemText = ListItemText;
-ListItem.Content = Content;
-
-export default ListItem;
+import React, {ReactNode} from 'react';
+import {
+ StyleProp,
+ StyleSheet,
+ TextProps,
+ TextStyle,
+ TouchableHighlight,
+ TouchableOpacity,
+ View,
+ ViewStyle,
+} from 'react-native';
+import rpx from '@/utils/rpx';
+import useColors from '@/hooks/useColors';
+import ThemeText from './themeText';
+import {
+ fontSizeConst,
+ fontWeightConst,
+ iconSizeConst,
+} from '@/constants/uiConst';
+import FastImage from './fastImage';
+import {ImageStyle} from 'react-native-fast-image';
+import Icon, {IIconName} from '@/components/base/icon.tsx';
+
+interface IListItemProps {
+ // 是否有左右边距
+ withHorizontalPadding?: boolean;
+ // 左边距
+ leftPadding?: number;
+ // 右边距
+ rightPadding?: number;
+ // height:
+ style?: StyleProp;
+ // 高度类型
+ heightType?: 'big' | 'small' | 'smallest' | 'normal' | 'none';
+ children?: ReactNode;
+ onPress?: () => void;
+ onLongPress?: () => void;
+}
+
+const defaultPadding = rpx(24);
+const defaultActionWidth = rpx(80);
+
+const Size = {
+ big: rpx(120),
+ normal: rpx(108),
+ small: rpx(96),
+ smallest: rpx(72),
+ none: undefined,
+};
+
+function ListItem(props: IListItemProps) {
+ const {
+ withHorizontalPadding,
+ leftPadding = defaultPadding,
+ rightPadding = defaultPadding,
+ style,
+ heightType = 'normal',
+ children,
+ onPress,
+ onLongPress,
+ } = props;
+
+ const defaultStyle: StyleProp = {
+ paddingLeft: withHorizontalPadding ? leftPadding : 0,
+ paddingRight: withHorizontalPadding ? rightPadding : 0,
+ height: Size[heightType],
+ };
+
+ const colors = useColors();
+
+ return (
+
+
+ {children}
+
+
+ );
+}
+
+interface IListItemTextProps {
+ children?: number | string;
+ fontSize?: keyof typeof fontSizeConst;
+ fontWeight?: keyof typeof fontWeightConst;
+ width?: number;
+ position?: 'left' | 'right' | 'none';
+ fixedWidth?: boolean;
+ containerStyle?: StyleProp;
+ contentStyle?: StyleProp;
+ contentProps?: TextProps;
+}
+
+function ListItemText(props: IListItemTextProps) {
+ const {
+ children,
+ fontSize,
+ fontWeight,
+ position = 'left',
+ fixedWidth,
+ width,
+ containerStyle,
+ contentStyle,
+ contentProps = {},
+ } = props;
+
+ const defaultStyle: StyleProp = {
+ marginRight: position === 'left' ? defaultPadding : 0,
+ marginLeft: position === 'right' ? defaultPadding : 0,
+ width: fixedWidth ? width ?? defaultActionWidth : undefined,
+ flexBasis: fixedWidth ? width ?? defaultActionWidth : undefined,
+ };
+
+ return (
+
+
+ {children}
+
+
+ );
+}
+
+interface IListItemIconProps {
+ icon: IIconName;
+ iconSize?: number;
+ width?: number;
+ position?: 'left' | 'right' | 'none';
+ fixedWidth?: boolean;
+ containerStyle?: StyleProp;
+ contentStyle?: StyleProp;
+ onPress?: () => void;
+}
+
+function ListItemIcon(props: IListItemIconProps) {
+ const {
+ icon,
+ iconSize = iconSizeConst.normal,
+ position = 'left',
+ fixedWidth,
+ width,
+ containerStyle,
+ contentStyle,
+ onPress,
+ } = props;
+
+ const colors = useColors();
+
+ const defaultStyle: StyleProp = {
+ marginRight: position === 'left' ? defaultPadding : 0,
+ marginLeft: position === 'right' ? defaultPadding : 0,
+ width: fixedWidth ? width ?? defaultActionWidth : undefined,
+ flexBasis: fixedWidth ? width ?? defaultActionWidth : undefined,
+ };
+
+ const innerContent = (
+
+
+
+ );
+
+ return onPress ? (
+ {innerContent}
+ ) : (
+ innerContent
+ );
+}
+
+interface IListItemImageProps {
+ uri?: string;
+ fallbackImg?: number;
+ imageSize?: number;
+ width?: number;
+ position?: 'left' | 'right';
+ fixedWidth?: boolean;
+ containerStyle?: StyleProp;
+ contentStyle?: StyleProp;
+ maskIcon?: IIconName | null;
+}
+
+function ListItemImage(props: IListItemImageProps) {
+ const {
+ uri,
+ fallbackImg,
+ position = 'left',
+ fixedWidth,
+ width,
+ containerStyle,
+ contentStyle,
+ maskIcon,
+ } = props;
+
+ const defaultStyle: StyleProp = {
+ marginRight: position === 'left' ? defaultPadding : 0,
+ marginLeft: position === 'right' ? defaultPadding : 0,
+ width: fixedWidth ? width ?? defaultActionWidth : undefined,
+ flexBasis: fixedWidth ? width ?? defaultActionWidth : undefined,
+ };
+
+ return (
+
+
+ {maskIcon ? (
+
+
+
+ ) : null}
+
+ );
+}
+
+interface IContentProps {
+ title?: ReactNode;
+ children?: ReactNode;
+ description?: ReactNode;
+ containerStyle?: StyleProp;
+}
+
+function Content(props: IContentProps) {
+ const {
+ children,
+ title = children,
+ description = null,
+ containerStyle,
+ } = props;
+
+ let realTitle;
+ let realDescription;
+
+ if (typeof title === 'string' || typeof title === 'number') {
+ realTitle = {title} ;
+ } else {
+ realTitle = title;
+ }
+
+ if (typeof description === 'string' || typeof description === 'number') {
+ realDescription = (
+
+ {description}
+
+ );
+ } else {
+ realDescription = description;
+ }
+
+ return (
+
+ {realTitle}
+ {realDescription}
+
+ );
+}
+
+export function ListItemHeader(props: {children?: ReactNode}) {
+ const {children} = props;
+ return (
+
+ {typeof children === 'string' ? (
+
+ {children}
+
+ ) : (
+ children
+ )}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ /** listitem */
+ container: {
+ width: '100%',
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+ /** left */
+ actionBase: {
+ height: '100%',
+ flexShrink: 0,
+ flexGrow: 0,
+ flexBasis: 0,
+ flexDirection: 'row',
+ justifyContent: 'center',
+ alignItems: 'center',
+ },
+
+ leftImage: {
+ width: rpx(80),
+ height: rpx(80),
+ borderRadius: rpx(16),
+ },
+ imageMask: {
+ position: 'absolute',
+ alignItems: 'center',
+ justifyContent: 'center',
+ backgroundColor: '#00000022',
+ },
+ itemContentContainer: {
+ flex: 1,
+ height: '100%',
+ justifyContent: 'center',
+ },
+ contentDesc: {
+ marginTop: rpx(16),
+ },
+
+ listItemHeader: {
+ marginTop: rpx(20),
+ },
+});
+
+ListItem.Size = Size;
+ListItem.ListItemIcon = ListItemIcon;
+ListItem.ListItemImage = ListItemImage;
+ListItem.ListItemText = ListItemText;
+ListItem.Content = Content;
+
+export default ListItem;
diff --git a/src/components/base/loading.tsx b/src/components/base/loading.tsx
index 0d9f80ab..fae9bf8c 100644
--- a/src/components/base/loading.tsx
+++ b/src/components/base/loading.tsx
@@ -1,7 +1,6 @@
import React from 'react';
-import {StyleSheet, View} from 'react-native';
+import {ActivityIndicator, StyleSheet, View} from 'react-native';
import rpx from '@/utils/rpx';
-import {ActivityIndicator} from 'react-native';
import ThemeText from './themeText';
import useColors from '@/hooks/useColors';
diff --git a/src/components/base/playAllBar.tsx b/src/components/base/playAllBar.tsx
index 8ce80ab1..6a5812ec 100644
--- a/src/components/base/playAllBar.tsx
+++ b/src/components/base/playAllBar.tsx
@@ -1,116 +1,116 @@
-import React from 'react';
-import {Pressable, StyleSheet, View} from 'react-native';
-import rpx from '@/utils/rpx';
-import {iconSizeConst} from '@/constants/uiConst';
-import {ROUTE_PATH, useNavigate} from '@/entry/router';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-import ThemeText from './themeText';
-import useColors from '@/hooks/useColors';
-import {showPanel} from '../panels/usePanel';
-import IconButton from './iconButton';
-import TrackPlayer from '@/core/trackPlayer';
-import MusicSheet from '@/core/musicSheet';
-import Toast from '@/utils/toast';
-
-interface IProps {
- musicList: IMusic.IMusicItem[] | null;
- canStar?: boolean;
- musicSheet?: IMusic.IMusicSheetItem | null;
-}
-export default function (props: IProps) {
- const {musicList, canStar, musicSheet} = props;
-
- const sheetName = musicSheet?.title;
- const sheetId = musicSheet?.id;
-
- const colors = useColors();
- const navigate = useNavigate();
-
- const starred = MusicSheet.useSheetStarred(musicSheet);
-
- return (
-
- {
- if (musicList) {
- TrackPlayer.playWithReplacePlayList(
- musicList[0],
- musicList,
- );
- }
- }}>
-
- 播放全部
-
- {canStar && musicSheet ? (
- {
- if (!starred) {
- MusicSheet.starMusicSheet(musicSheet);
- Toast.success('收藏歌单成功');
- } else {
- MusicSheet.unstarMusicSheet(musicSheet);
- Toast.success('已取消收藏歌单');
- }
- }}
- />
- ) : null}
- {
- showPanel('AddToMusicSheet', {
- musicItem: musicList ?? [],
- newSheetDefaultName: sheetName,
- });
- }}
- />
- {
- navigate(ROUTE_PATH.MUSIC_LIST_EDITOR, {
- musicList: musicList,
- musicSheet: {
- title: sheetName,
- id: sheetId,
- },
- });
- }}
- />
-
- );
-}
-
-const style = StyleSheet.create({
- /** playall */
- topWrapper: {
- height: rpx(84),
- paddingHorizontal: rpx(24),
- flexDirection: 'row',
- alignItems: 'center',
- },
- playAll: {
- flex: 1,
- flexDirection: 'row',
- alignItems: 'center',
- },
- playAllIcon: {
- marginRight: rpx(12),
- },
- optionButton: {
- marginLeft: rpx(36),
- },
-});
+import React from 'react';
+import {Pressable, StyleSheet, View} from 'react-native';
+import rpx from '@/utils/rpx';
+import {iconSizeConst} from '@/constants/uiConst';
+import {ROUTE_PATH, useNavigate} from '@/entry/router';
+import ThemeText from './themeText';
+import useColors from '@/hooks/useColors';
+import {showPanel} from '../panels/usePanel';
+import IconButton from './iconButton';
+import TrackPlayer from '@/core/trackPlayer';
+import MusicSheet from '@/core/musicSheet';
+import Toast from '@/utils/toast';
+import Icon from '@/components/base/icon.tsx';
+
+interface IProps {
+ musicList: IMusic.IMusicItem[] | null;
+ canStar?: boolean;
+ musicSheet?: IMusic.IMusicSheetItem | null;
+}
+export default function (props: IProps) {
+ const {musicList, canStar, musicSheet} = props;
+
+ const sheetName = musicSheet?.title;
+ const sheetId = musicSheet?.id;
+
+ const colors = useColors();
+ const navigate = useNavigate();
+
+ const starred = MusicSheet.useSheetStarred(musicSheet);
+
+ return (
+
+ {
+ if (musicList) {
+ TrackPlayer.playWithReplacePlayList(
+ musicList[0],
+ musicList,
+ );
+ }
+ }}>
+
+ 播放全部
+
+ {canStar && musicSheet ? (
+ {
+ if (!starred) {
+ MusicSheet.starMusicSheet(musicSheet);
+ Toast.success('收藏歌单成功');
+ } else {
+ MusicSheet.unstarMusicSheet(musicSheet);
+ Toast.success('已取消收藏歌单');
+ }
+ }}
+ />
+ ) : null}
+ {
+ showPanel('AddToMusicSheet', {
+ musicItem: musicList ?? [],
+ newSheetDefaultName: sheetName,
+ });
+ }}
+ />
+ {
+ navigate(ROUTE_PATH.MUSIC_LIST_EDITOR, {
+ musicList: musicList,
+ musicSheet: {
+ title: sheetName,
+ id: sheetId,
+ },
+ });
+ }}
+ />
+
+ );
+}
+
+const style = StyleSheet.create({
+ /** playall */
+ topWrapper: {
+ height: rpx(84),
+ paddingHorizontal: rpx(24),
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+ playAll: {
+ flex: 1,
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+ playAllIcon: {
+ marginRight: rpx(12),
+ },
+ optionButton: {
+ marginLeft: rpx(36),
+ },
+});
diff --git a/src/components/base/toast.tsx b/src/components/base/toast.tsx
index ed568835..9b10f167 100644
--- a/src/components/base/toast.tsx
+++ b/src/components/base/toast.tsx
@@ -1,223 +1,219 @@
-import {timingConfig} from '@/constants/commonConst';
-import {fontSizeConst} from '@/constants/uiConst';
-import useColors from '@/hooks/useColors';
-import rpx from '@/utils/rpx';
-import {GlobalState} from '@/utils/stateMapper';
-import {nanoid} from 'nanoid';
-import React, {useCallback, useEffect} from 'react';
-import {Pressable, StyleSheet, Text, View} from 'react-native';
-import {
- Directions,
- Gesture,
- GestureDetector,
-} from 'react-native-gesture-handler';
-import Animated, {
- cancelAnimation,
- runOnJS,
- useAnimatedStyle,
- useSharedValue,
- withDelay,
- withTiming,
-} from 'react-native-reanimated';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-
-export interface IToastConfig {
- /** 类型 */
- type: 'success' | 'warn';
- /** 消息内容 */
- message?: string;
- /** 行动点 */
- actionText?: string;
- /** 行动点按钮行为 */
- onActionClick?: () => void;
- /** 展示时间 */
- duration?: number;
-}
-
-type IToastConfigInner = IToastConfig & {
- id: string;
-};
-
-const toastQueue: IToastConfigInner[] = [];
-
-const fixedTop = rpx(250);
-
-const activeToastStore = new GlobalState(null);
-
-const typeConfig = {
- success: {
- name: 'check-circle',
- color: '#457236',
- },
- warn: {
- name: 'alert-circle',
- color: '#de7622',
- },
-};
-
-export function ToastBaseComponent() {
- const activeToast = activeToastStore.useValue();
- const colors = useColors();
-
- const toastAnim = useSharedValue(0);
-
- const setNextToast = useCallback(() => {
- activeToastStore.setValue(toastQueue.shift() || null);
- }, []);
-
- useEffect(() => {
- if (activeToast) {
- toastAnim.value = withTiming(1, timingConfig.animationSlow, () => {
- toastAnim.value = withDelay(
- activeToast.duration || 1200,
- withTiming(0, timingConfig.animationSlow, finished => {
- if (finished) {
- runOnJS(setNextToast)();
- }
- }),
- );
- });
- }
- }, [activeToast]);
-
- function removeCurrentToast() {
- if (toastAnim.value === 1) {
- cancelAnimation(toastAnim);
- toastAnim.value = withTiming(
- 0,
- timingConfig.animationSlow,
- finished => {
- if (finished) {
- runOnJS(setNextToast)();
- }
- },
- );
- }
- }
-
- const flingGesture = Gesture.Fling()
- .direction(Directions.UP)
- .onEnd(() => {
- removeCurrentToast();
- })
- .runOnJS(true);
-
- const toastAnimStyle = useAnimatedStyle(() => {
- return {
- transform: [
- {
- translateY: (toastAnim.value - 1) * fixedTop,
- },
- ],
- opacity: toastAnim.value,
- };
- });
-
- return activeToast ? (
-
-
-
-
-
- {activeToast.message}
-
- {activeToast.actionText && activeToast.onActionClick ? (
-
-
- {activeToast.actionText}
-
-
- ) : null}
-
-
-
- ) : null;
-}
-
-const styles = StyleSheet.create({
- container: {
- position: 'absolute',
- top: rpx(128),
- width: '100%',
- alignItems: 'center',
- height: rpx(100),
- zIndex: 20000,
- },
- contentContainer: {
- width: rpx(688),
- height: '100%',
- borderRadius: rpx(12),
- backgroundColor: 'blue',
- flexDirection: 'row',
- alignItems: 'center',
- paddingHorizontal: rpx(24),
- shadowOffset: {
- width: 0,
- height: 2,
- },
- shadowOpacity: 0.2,
- shadowRadius: 1.41,
-
- elevation: 2,
- },
- icon: {
- fontSize: fontSizeConst.appbar,
- includeFontPadding: false,
- },
- text: {
- fontSize: fontSizeConst.content,
- includeFontPadding: false,
- flex: 1,
- marginLeft: rpx(24),
- },
- actionText: {
- fontSize: fontSizeConst.content,
- includeFontPadding: false,
- color: 'white',
- },
- actionTextContainer: {
- marginLeft: rpx(24),
- width: rpx(120),
- paddingHorizonal: rpx(12),
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'center',
- borderRadius: rpx(30),
- height: rpx(58),
- },
-});
-
-export function showToast(config: IToastConfig) {
- const id = nanoid();
- const _config = {
- ...config,
- id,
- };
- const activeToast = activeToastStore.getValue();
- if (!activeToast) {
- activeToastStore.setValue(_config);
- } else {
- toastQueue.push(_config);
- }
-
- return id;
-}
+import {timingConfig} from '@/constants/commonConst';
+import {fontSizeConst} from '@/constants/uiConst';
+import useColors from '@/hooks/useColors';
+import rpx from '@/utils/rpx';
+import {GlobalState} from '@/utils/stateMapper';
+import {nanoid} from 'nanoid';
+import React, {useCallback, useEffect} from 'react';
+import {Pressable, StyleSheet, Text, View} from 'react-native';
+import {
+ Directions,
+ Gesture,
+ GestureDetector,
+} from 'react-native-gesture-handler';
+import Animated, {
+ cancelAnimation,
+ runOnJS,
+ useAnimatedStyle,
+ useSharedValue,
+ withDelay,
+ withTiming,
+} from 'react-native-reanimated';
+import Icon from '@/components/base/icon.tsx';
+
+export interface IToastConfig {
+ /** 类型 */
+ type: 'success' | 'warn';
+ /** 消息内容 */
+ message?: string;
+ /** 行动点 */
+ actionText?: string;
+ /** 行动点按钮行为 */
+ onActionClick?: () => void;
+ /** 展示时间 */
+ duration?: number;
+}
+
+type IToastConfigInner = IToastConfig & {
+ id: string;
+};
+
+const toastQueue: IToastConfigInner[] = [];
+
+const fixedTop = rpx(250);
+
+const activeToastStore = new GlobalState(null);
+
+const typeConfig = {
+ success: {
+ name: 'check-circle',
+ color: '#457236',
+ },
+ warn: {
+ name: 'exclamation-circle',
+ color: '#de7622',
+ },
+} as const;
+
+export function ToastBaseComponent() {
+ const activeToast = activeToastStore.useValue();
+ const colors = useColors();
+
+ const toastAnim = useSharedValue(0);
+
+ const setNextToast = useCallback(() => {
+ activeToastStore.setValue(toastQueue.shift() || null);
+ }, []);
+
+ useEffect(() => {
+ if (activeToast) {
+ toastAnim.value = withTiming(1, timingConfig.animationSlow, () => {
+ toastAnim.value = withDelay(
+ activeToast.duration || 1200,
+ withTiming(0, timingConfig.animationSlow, finished => {
+ if (finished) {
+ runOnJS(setNextToast)();
+ }
+ }),
+ );
+ });
+ }
+ }, [activeToast]);
+
+ function removeCurrentToast() {
+ if (toastAnim.value === 1) {
+ cancelAnimation(toastAnim);
+ toastAnim.value = withTiming(
+ 0,
+ timingConfig.animationSlow,
+ finished => {
+ if (finished) {
+ runOnJS(setNextToast)();
+ }
+ },
+ );
+ }
+ }
+
+ const flingGesture = Gesture.Fling()
+ .direction(Directions.UP)
+ .onEnd(() => {
+ removeCurrentToast();
+ })
+ .runOnJS(true);
+
+ const toastAnimStyle = useAnimatedStyle(() => {
+ return {
+ transform: [
+ {
+ translateY: (toastAnim.value - 1) * fixedTop,
+ },
+ ],
+ opacity: toastAnim.value,
+ };
+ });
+
+ return activeToast ? (
+
+
+
+
+
+ {activeToast.message}
+
+ {activeToast.actionText && activeToast.onActionClick ? (
+
+
+ {activeToast.actionText}
+
+
+ ) : null}
+
+
+
+ ) : null;
+}
+
+const styles = StyleSheet.create({
+ container: {
+ position: 'absolute',
+ top: rpx(128),
+ width: '100%',
+ alignItems: 'center',
+ height: rpx(100),
+ zIndex: 20000,
+ },
+ contentContainer: {
+ width: rpx(688),
+ height: '100%',
+ borderRadius: rpx(12),
+ backgroundColor: 'blue',
+ flexDirection: 'row',
+ alignItems: 'center',
+ paddingHorizontal: rpx(24),
+ shadowOffset: {
+ width: 0,
+ height: 2,
+ },
+ shadowOpacity: 0.2,
+ shadowRadius: 1.41,
+
+ elevation: 2,
+ },
+ text: {
+ fontSize: fontSizeConst.content,
+ includeFontPadding: false,
+ flex: 1,
+ marginLeft: rpx(24),
+ },
+ actionText: {
+ fontSize: fontSizeConst.content,
+ includeFontPadding: false,
+ color: 'white',
+ },
+ actionTextContainer: {
+ marginLeft: rpx(24),
+ width: rpx(120),
+ paddingHorizontal: rpx(12),
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'center',
+ borderRadius: rpx(30),
+ height: rpx(58),
+ },
+});
+
+export function showToast(config: IToastConfig) {
+ const id = nanoid();
+ const _config = {
+ ...config,
+ id,
+ };
+ const activeToast = activeToastStore.getValue();
+ if (!activeToast) {
+ activeToastStore.setValue(_config);
+ } else {
+ toastQueue.push(_config);
+ }
+
+ return id;
+}
diff --git a/src/components/base/typeTag.tsx b/src/components/base/typeTag.tsx
index 81193f7a..c1b6375d 100644
--- a/src/components/base/typeTag.tsx
+++ b/src/components/base/typeTag.tsx
@@ -1,9 +1,15 @@
import React from 'react';
-import {ColorValue, StyleProp, StyleSheet, View, ViewStyle} from 'react-native';
+import {
+ ColorValue,
+ StyleProp,
+ StyleSheet,
+ TouchableOpacity,
+ View,
+ ViewStyle,
+} from 'react-native';
import rpx from '@/utils/rpx';
import ThemeText from '@/components/base/themeText';
import useColors from '@/hooks/useColors';
-import {TouchableOpacity} from 'react-native';
interface ITypeTagProps {
title: string;
diff --git a/src/components/dialogs/components/editSheetDetail.tsx b/src/components/dialogs/components/editSheetDetail.tsx
index dacb8d55..1e1f290a 100644
--- a/src/components/dialogs/components/editSheetDetail.tsx
+++ b/src/components/dialogs/components/editSheetDetail.tsx
@@ -1,10 +1,9 @@
import React, {useState} from 'react';
import useColors from '@/hooks/useColors';
import rpx from '@/utils/rpx';
-import {StyleSheet, View} from 'react-native';
+import {StyleSheet, TouchableOpacity, View} from 'react-native';
import ThemeText from '@/components/base/themeText';
import {ImgAsset} from '@/constants/assetsConst';
-import {TouchableOpacity} from 'react-native';
import {launchImageLibrary} from 'react-native-image-picker';
import pathConst from '@/constants/pathConst';
import Image from '@/components/base/image';
diff --git a/src/components/dialogs/components/radioDialog.tsx b/src/components/dialogs/components/radioDialog.tsx
index 0c602cc5..bf742603 100644
--- a/src/components/dialogs/components/radioDialog.tsx
+++ b/src/components/dialogs/components/radioDialog.tsx
@@ -1,56 +1,56 @@
-import React from 'react';
-import {FlatList} from 'react-native-gesture-handler';
-import {hideDialog} from '../useDialog';
-import Dialog from './base';
-import ListItem from '@/components/base/listItem';
-import useOrientation from '@/hooks/useOrientation';
-import {vmax, vmin} from '@/utils/rpx';
-
-interface IKV {
- key: T;
- value: T;
-}
-
-interface IRadioDialogProps {
- title: string;
- content: Array>;
- onOk?: (value: T) => void;
-}
-
-function isObject(v: string | number | IKV): v is IKV {
- return typeof v === 'string' || typeof v === 'number' ? false : true;
-}
-
-export default function RadioDialog(props: IRadioDialogProps) {
- const {title, content, onOk} = props;
- const orientation = useOrientation();
- return (
-
- {title}
- (
- {
- if (isObject(item)) {
- onOk?.(item.value);
- } else {
- onOk?.(item);
- }
- hideDialog();
- }}
- heightType="small">
-
-
- )}
- />
-
- );
-}
+import React from 'react';
+import {FlatList} from 'react-native-gesture-handler';
+import {hideDialog} from '../useDialog';
+import Dialog from './base';
+import ListItem from '@/components/base/listItem';
+import useOrientation from '@/hooks/useOrientation';
+import {vmax, vmin} from '@/utils/rpx';
+
+interface IKV {
+ key: T;
+ value: T;
+}
+
+interface IRadioDialogProps {
+ title: string;
+ content: Array>;
+ onOk?: (value: T) => void;
+}
+
+function isObject(v: string | number | IKV): v is IKV {
+ return typeof v === 'string' || typeof v === 'number' ? false : true;
+}
+
+export default function RadioDialog(props: IRadioDialogProps) {
+ const {title, content, onOk} = props;
+ const orientation = useOrientation();
+ return (
+
+ {title}
+ (
+ {
+ if (isObject(item)) {
+ onOk?.(item.value);
+ } else {
+ onOk?.(item);
+ }
+ hideDialog();
+ }}
+ heightType="small">
+
+
+ )}
+ />
+
+ );
+}
diff --git a/src/components/dialogs/components/subscribePluginDialog.tsx b/src/components/dialogs/components/subscribePluginDialog.tsx
index f84accc0..36b15718 100644
--- a/src/components/dialogs/components/subscribePluginDialog.tsx
+++ b/src/components/dialogs/components/subscribePluginDialog.tsx
@@ -6,6 +6,7 @@ import {hideDialog} from '../useDialog';
import Dialog from './base';
import Input from '@/components/base/input';
import useColors from '@/hooks/useColors';
+
interface ISubscribeItem {
name: string;
url: string;
diff --git a/src/components/mediaItem/LyricItem.tsx b/src/components/mediaItem/LyricItem.tsx
index 207bc858..216092f8 100644
--- a/src/components/mediaItem/LyricItem.tsx
+++ b/src/components/mediaItem/LyricItem.tsx
@@ -1,35 +1,35 @@
-import React from 'react';
-import ListItem from '@/components/base/listItem';
-import {ImgAsset} from '@/constants/assetsConst';
-import TitleAndTag from './titleAndTag';
-
-interface IAlbumResultsProps {
- lyricItem: ILyric.ILyricItem;
- onPress?: (musicItem: ILyric.ILyricItem) => void;
-}
-export default function LyricItem(props: IAlbumResultsProps) {
- const {lyricItem, onPress} = props;
-
- return (
- {
- onPress?.(lyricItem);
- }}>
-
-
- }
- />
-
- );
-}
+import React from 'react';
+import ListItem from '@/components/base/listItem';
+import {ImgAsset} from '@/constants/assetsConst';
+import TitleAndTag from './titleAndTag';
+
+interface IAlbumResultsProps {
+ lyricItem: ILyric.ILyricItem;
+ onPress?: (musicItem: ILyric.ILyricItem) => void;
+}
+export default function LyricItem(props: IAlbumResultsProps) {
+ const {lyricItem, onPress} = props;
+
+ return (
+ {
+ onPress?.(lyricItem);
+ }}>
+
+
+ }
+ />
+
+ );
+}
diff --git a/src/components/mediaItem/albumItem.tsx b/src/components/mediaItem/albumItem.tsx
index bb83d133..35879f6c 100644
--- a/src/components/mediaItem/albumItem.tsx
+++ b/src/components/mediaItem/albumItem.tsx
@@ -1,55 +1,55 @@
-import React from 'react';
-import {ROUTE_PATH, useNavigate} from '@/entry/router';
-import ListItem from '@/components/base/listItem';
-import {ImgAsset} from '@/constants/assetsConst';
-import TitleAndTag from './titleAndTag';
-
-interface IAlbumResultsProps {
- albumItem: IAlbum.IAlbumItem;
-}
-
-export default function AlbumItem(props: IAlbumResultsProps) {
- const {albumItem} = props;
- const navigate = useNavigate();
-
- return (
- {
- navigate(ROUTE_PATH.ALBUM_DETAIL, {
- albumItem,
- });
- }}>
-
-
- }
- description={`${albumItem.artist ?? ''} ${
- albumItem.date ?? ''
- }`}
- />
-
- // {
- // navigate(ROUTE_PATH.ALBUM_DETAIL, {
- // albumItem,
- // });
- // }}
- // />
- );
-}
+import React from 'react';
+import {ROUTE_PATH, useNavigate} from '@/entry/router';
+import ListItem from '@/components/base/listItem';
+import {ImgAsset} from '@/constants/assetsConst';
+import TitleAndTag from './titleAndTag';
+
+interface IAlbumResultsProps {
+ albumItem: IAlbum.IAlbumItem;
+}
+
+export default function AlbumItem(props: IAlbumResultsProps) {
+ const {albumItem} = props;
+ const navigate = useNavigate();
+
+ return (
+ {
+ navigate(ROUTE_PATH.ALBUM_DETAIL, {
+ albumItem,
+ });
+ }}>
+
+
+ }
+ description={`${albumItem.artist ?? ''} ${
+ albumItem.date ?? ''
+ }`}
+ />
+
+ // {
+ // navigate(ROUTE_PATH.ALBUM_DETAIL, {
+ // albumItem,
+ // });
+ // }}
+ // />
+ );
+}
diff --git a/src/components/mediaItem/musicItem.tsx b/src/components/mediaItem/musicItem.tsx
index 1786b3bf..2b474cef 100644
--- a/src/components/mediaItem/musicItem.tsx
+++ b/src/components/mediaItem/musicItem.tsx
@@ -1,119 +1,119 @@
-import React, {ReactNode} from 'react';
-import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native';
-import rpx from '@/utils/rpx';
-import ListItem from '../base/listItem';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-
-import LocalMusicSheet from '@/core/localMusicSheet';
-import {showPanel} from '../panels/usePanel';
-import TitleAndTag from './titleAndTag';
-import ThemeText from '../base/themeText';
-import TrackPlayer from '@/core/trackPlayer';
-
-interface IMusicItemProps {
- index?: string | number;
- showMoreIcon?: boolean;
- musicItem: IMusic.IMusicItem;
- musicSheet?: IMusic.IMusicSheetItem;
- onItemPress?: (musicItem: IMusic.IMusicItem) => void;
- onItemLongPress?: () => void;
- itemPaddingRight?: number;
- left?: () => ReactNode;
- containerStyle?: StyleProp;
-}
-export default function MusicItem(props: IMusicItemProps) {
- const {
- musicItem,
- index,
- onItemPress,
- onItemLongPress,
- musicSheet,
- itemPaddingRight,
- showMoreIcon = true,
- left: Left,
- containerStyle,
- } = props;
-
- return (
- {
- if (onItemPress) {
- onItemPress(musicItem);
- } else {
- TrackPlayer.play(musicItem);
- }
- }}>
- {Left ? : null}
- {index !== undefined ? (
-
- {index}
-
- ) : null}
-
- }
- description={
-
- {LocalMusicSheet.isLocalMusic(musicItem) && (
-
- )}
-
- {musicItem.artist}
- {musicItem.album ? ` - ${musicItem.album}` : ''}
-
-
- }
- />
- {showMoreIcon ? (
- {
- showPanel('MusicItemOptions', {
- musicItem,
- musicSheet,
- });
- }}
- />
- ) : null}
-
- );
-}
-
-const styles = StyleSheet.create({
- icon: {
- marginRight: rpx(6),
- },
- descContainer: {
- flexDirection: 'row',
- marginTop: rpx(16),
- },
-
- indexText: {
- fontStyle: 'italic',
- textAlign: 'center',
- },
-});
+import React from 'react';
+import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native';
+import rpx from '@/utils/rpx';
+import ListItem from '../base/listItem';
+
+import LocalMusicSheet from '@/core/localMusicSheet';
+import {showPanel} from '../panels/usePanel';
+import TitleAndTag from './titleAndTag';
+import ThemeText from '../base/themeText';
+import TrackPlayer from '@/core/trackPlayer';
+import Icon from '@/components/base/icon.tsx';
+
+interface IMusicItemProps {
+ index?: string | number;
+ showMoreIcon?: boolean;
+ musicItem: IMusic.IMusicItem;
+ musicSheet?: IMusic.IMusicSheetItem;
+ onItemPress?: (musicItem: IMusic.IMusicItem) => void;
+ onItemLongPress?: () => void;
+ itemPaddingRight?: number;
+ left?: () => JSX.Element;
+ containerStyle?: StyleProp;
+}
+export default function MusicItem(props: IMusicItemProps) {
+ const {
+ musicItem,
+ index,
+ onItemPress,
+ onItemLongPress,
+ musicSheet,
+ itemPaddingRight,
+ showMoreIcon = true,
+ left: Left,
+ containerStyle,
+ } = props;
+
+ return (
+ {
+ if (onItemPress) {
+ onItemPress(musicItem);
+ } else {
+ TrackPlayer.play(musicItem);
+ }
+ }}>
+ {Left ? : null}
+ {index !== undefined ? (
+
+ {index}
+
+ ) : null}
+
+ }
+ description={
+
+ {LocalMusicSheet.isLocalMusic(musicItem) && (
+
+ )}
+
+ {musicItem.artist}
+ {musicItem.album ? ` - ${musicItem.album}` : ''}
+
+
+ }
+ />
+ {showMoreIcon ? (
+ {
+ showPanel('MusicItemOptions', {
+ musicItem,
+ musicSheet,
+ });
+ }}
+ />
+ ) : null}
+
+ );
+}
+
+const styles = StyleSheet.create({
+ icon: {
+ marginRight: rpx(6),
+ },
+ descContainer: {
+ flexDirection: 'row',
+ marginTop: rpx(16),
+ },
+
+ indexText: {
+ fontStyle: 'italic',
+ textAlign: 'center',
+ },
+});
diff --git a/src/components/mediaItem/topListItem.tsx b/src/components/mediaItem/topListItem.tsx
index 9ed528fb..337070c9 100644
--- a/src/components/mediaItem/topListItem.tsx
+++ b/src/components/mediaItem/topListItem.tsx
@@ -1,35 +1,35 @@
-import React from 'react';
-// import {ROUTE_PATH, useNavigate} from '@/entry/router';
-import ListItem from '@/components/base/listItem';
-import {ImgAsset} from '@/constants/assetsConst';
-import {ROUTE_PATH, useNavigate} from '@/entry/router';
-
-interface ITopListResultsProps {
- pluginHash: string;
- topListItem: IMusic.IMusicSheetItemBase;
-}
-
-export default function TopListItem(props: ITopListResultsProps) {
- const {pluginHash, topListItem} = props;
- const navigate = useNavigate();
-
- return (
- {
- navigate(ROUTE_PATH.TOP_LIST_DETAIL, {
- pluginHash: pluginHash,
- topList: topListItem,
- });
- }}>
-
-
-
- );
-}
+import React from 'react';
+// import {ROUTE_PATH, useNavigate} from '@/entry/router';
+import ListItem from '@/components/base/listItem';
+import {ImgAsset} from '@/constants/assetsConst';
+import {ROUTE_PATH, useNavigate} from '@/entry/router';
+
+interface ITopListResultsProps {
+ pluginHash: string;
+ topListItem: IMusic.IMusicSheetItemBase;
+}
+
+export default function TopListItem(props: ITopListResultsProps) {
+ const {pluginHash, topListItem} = props;
+ const navigate = useNavigate();
+
+ return (
+ {
+ navigate(ROUTE_PATH.TOP_LIST_DETAIL, {
+ pluginHash: pluginHash,
+ topList: topListItem,
+ });
+ }}>
+
+
+
+ );
+}
diff --git a/src/components/musicBar/index.tsx b/src/components/musicBar/index.tsx
index 54216d1b..8aebd13c 100644
--- a/src/components/musicBar/index.tsx
+++ b/src/components/musicBar/index.tsx
@@ -1,133 +1,131 @@
-import React, {memo, useEffect, useState} from 'react';
-import {Keyboard, StyleSheet, View} from 'react-native';
-import rpx from '@/utils/rpx';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-import {CircularProgressBase} from 'react-native-circular-progress-indicator';
-
-import {useSafeAreaInsets} from 'react-native-safe-area-context';
-import {showPanel} from '../panels/usePanel';
-import useColors from '@/hooks/useColors';
-import IconButton from '../base/iconButton';
-import TrackPlayer from '@/core/trackPlayer';
-import {musicIsPaused} from '@/utils/trackUtils';
-import MusicInfo from './musicInfo';
-
-function CircularPlayBtn() {
- const progress = TrackPlayer.useProgress();
- const musicState = TrackPlayer.useMusicState();
- const colors = useColors();
-
- const isPaused = musicIsPaused(musicState);
-
- return (
-
- {
- if (isPaused) {
- await TrackPlayer.play();
- } else {
- await TrackPlayer.pause();
- }
- }}
- />
-
- );
-}
-function MusicBar() {
- const musicItem = TrackPlayer.useCurrentMusic();
-
- const [showKeyboard, setKeyboardStatus] = useState(false);
-
- const colors = useColors();
- const safeAreaInsets = useSafeAreaInsets();
-
- useEffect(() => {
- const showSubscription = Keyboard.addListener('keyboardDidShow', () => {
- setKeyboardStatus(true);
- });
- const hideSubscription = Keyboard.addListener('keyboardDidHide', () => {
- setKeyboardStatus(false);
- });
-
- return () => {
- showSubscription.remove();
- hideSubscription.remove();
- };
- }, []);
-
- return (
- <>
- {musicItem && !showKeyboard && (
- {
- // navigate(ROUTE_PATH.MUSIC_DETAIL);
- // }}
- >
-
-
-
- {
- showPanel('PlayList');
- }}
- style={[
- style.actionIcon,
- {color: colors.musicBarText},
- ]}
- />
-
-
- )}
- >
- );
-}
-
-export default memo(MusicBar, () => true);
-
-const style = StyleSheet.create({
- wrapper: {
- width: '100%',
- height: rpx(132),
- flexDirection: 'row',
- alignItems: 'center',
- paddingRight: rpx(24),
- },
- actionGroup: {
- width: rpx(200),
- justifyContent: 'flex-end',
- flexDirection: 'row',
- alignItems: 'center',
- },
- actionIcon: {
- marginLeft: rpx(36),
- },
-});
+import React, {memo, useEffect, useState} from 'react';
+import {Keyboard, StyleSheet, View} from 'react-native';
+import rpx from '@/utils/rpx';
+import {CircularProgressBase} from 'react-native-circular-progress-indicator';
+
+import {useSafeAreaInsets} from 'react-native-safe-area-context';
+import {showPanel} from '../panels/usePanel';
+import useColors from '@/hooks/useColors';
+import IconButton from '../base/iconButton';
+import TrackPlayer from '@/core/trackPlayer';
+import {musicIsPaused} from '@/utils/trackUtils';
+import MusicInfo from './musicInfo';
+import Icon from '@/components/base/icon.tsx';
+
+function CircularPlayBtn() {
+ const progress = TrackPlayer.useProgress();
+ const musicState = TrackPlayer.useMusicState();
+ const colors = useColors();
+
+ const isPaused = musicIsPaused(musicState);
+
+ return (
+
+ {
+ if (isPaused) {
+ await TrackPlayer.play();
+ } else {
+ await TrackPlayer.pause();
+ }
+ }}
+ />
+
+ );
+}
+function MusicBar() {
+ const musicItem = TrackPlayer.useCurrentMusic();
+
+ const [showKeyboard, setKeyboardStatus] = useState(false);
+
+ const colors = useColors();
+ const safeAreaInsets = useSafeAreaInsets();
+
+ useEffect(() => {
+ const showSubscription = Keyboard.addListener('keyboardDidShow', () => {
+ setKeyboardStatus(true);
+ });
+ const hideSubscription = Keyboard.addListener('keyboardDidHide', () => {
+ setKeyboardStatus(false);
+ });
+
+ return () => {
+ showSubscription.remove();
+ hideSubscription.remove();
+ };
+ }, []);
+
+ return (
+ <>
+ {musicItem && !showKeyboard && (
+ {
+ // navigate(ROUTE_PATH.MUSIC_DETAIL);
+ // }}
+ >
+
+
+
+ {
+ showPanel('PlayList');
+ }}
+ color={colors.musicBarText}
+ style={[style.actionIcon]}
+ />
+
+
+ )}
+ >
+ );
+}
+
+export default memo(MusicBar, () => true);
+
+const style = StyleSheet.create({
+ wrapper: {
+ width: '100%',
+ height: rpx(132),
+ flexDirection: 'row',
+ alignItems: 'center',
+ paddingRight: rpx(24),
+ },
+ actionGroup: {
+ width: rpx(200),
+ justifyContent: 'flex-end',
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+ actionIcon: {
+ marginLeft: rpx(36),
+ },
+});
diff --git a/src/components/musicBar/musicInfo.tsx b/src/components/musicBar/musicInfo.tsx
index b3a27b5d..aa1caebc 100644
--- a/src/components/musicBar/musicInfo.tsx
+++ b/src/components/musicBar/musicInfo.tsx
@@ -10,8 +10,8 @@ import {ROUTE_PATH, useNavigate} from '@/entry/router';
import {Gesture, GestureDetector} from 'react-native-gesture-handler';
import TrackPlayer from '@/core/trackPlayer';
import Animated, {
- SharedValue,
runOnJS,
+ SharedValue,
useAnimatedStyle,
useSharedValue,
withTiming,
diff --git a/src/components/musicSheetPage/components/navBar.tsx b/src/components/musicSheetPage/components/navBar.tsx
index 01c80378..62ce3551 100644
--- a/src/components/musicSheetPage/components/navBar.tsx
+++ b/src/components/musicSheetPage/components/navBar.tsx
@@ -1,44 +1,44 @@
-import React from 'react';
-
-import {ROUTE_PATH, useNavigate} from '@/entry/router';
-import AppBar from '@/components/base/appBar';
-
-interface INavBarProps {
- navTitle: string;
- musicList: IMusic.IMusicItem[] | null;
-}
-
-export default function (props: INavBarProps) {
- const navigate = useNavigate();
- const {navTitle, musicList = []} = props;
-
- return (
-
- {navTitle}
-
- );
-}
+import React from 'react';
+
+import {ROUTE_PATH, useNavigate} from '@/entry/router';
+import AppBar from '@/components/base/appBar';
+
+interface INavBarProps {
+ navTitle: string;
+ musicList: IMusic.IMusicItem[] | null;
+}
+
+export default function (props: INavBarProps) {
+ const navigate = useNavigate();
+ const {navTitle, musicList = []} = props;
+
+ return (
+
+ {navTitle}
+
+ );
+}
diff --git a/src/components/panels/types/addToMusicSheet.tsx b/src/components/panels/types/addToMusicSheet.tsx
index d1c8de9c..eed82b85 100644
--- a/src/components/panels/types/addToMusicSheet.tsx
+++ b/src/components/panels/types/addToMusicSheet.tsx
@@ -1,127 +1,127 @@
-import React from 'react';
-import {StyleSheet, View} from 'react-native';
-import rpx, {vmax} from '@/utils/rpx';
-import ListItem from '@/components/base/listItem';
-import MusicSheet from '@/core/musicSheet';
-import {ImgAsset} from '@/constants/assetsConst';
-import Toast from '@/utils/toast';
-
-import {useSafeAreaInsets} from 'react-native-safe-area-context';
-import PanelBase from '../base/panelBase';
-import {FlatList} from 'react-native-gesture-handler';
-import {showPanel, hidePanel} from '../usePanel';
-import PanelHeader from '../base/panelHeader';
-
-interface IAddToMusicSheetProps {
- musicItem: IMusic.IMusicItem | IMusic.IMusicItem[];
- // 如果是新建歌单,可以传入一个默认的名称
- newSheetDefaultName?: string;
-}
-
-export default function AddToMusicSheet(props: IAddToMusicSheetProps) {
- const sheets = MusicSheet.useSheets();
-
- const {musicItem = [], newSheetDefaultName} = props ?? {};
- const safeAreaInsets = useSafeAreaInsets();
-
- return (
- (
- <>
-
-
- sheet.id}
- style={{
- marginBottom: safeAreaInsets.bottom,
- }}
- ListHeaderComponent={
- {
- showPanel('NewMusicSheet', {
- defaultName: newSheetDefaultName,
- async onSheetCreated(sheetId) {
- try {
- await MusicSheet.addMusic(
- sheetId,
- musicItem,
- );
- Toast.success(
- '添加到歌单成功',
- );
- } catch {
- Toast.warn(
- '添加到歌单失败',
- );
- }
- },
- onCancel() {
- showPanel('AddToMusicSheet', {
- musicItem: musicItem,
- newSheetDefaultName,
- });
- },
- });
- }}>
-
-
-
- }
- renderItem={({item: sheet}) => (
- {
- try {
- await MusicSheet.addMusic(
- sheet.id,
- musicItem,
- );
- hidePanel();
- Toast.success('添加到歌单成功');
- } catch {
- Toast.warn('添加到歌单失败');
- }
- }}>
-
-
-
- )}
- />
-
- >
- )}
- height={vmax(70)}
- />
- );
-}
-
-const style = StyleSheet.create({
- wrapper: {
- width: '100%',
- flex: 1,
- },
- header: {
- paddingHorizontal: rpx(24),
- marginTop: rpx(36),
- marginBottom: rpx(36),
- },
-});
+import React from 'react';
+import {StyleSheet, View} from 'react-native';
+import rpx, {vmax} from '@/utils/rpx';
+import ListItem from '@/components/base/listItem';
+import MusicSheet from '@/core/musicSheet';
+import {ImgAsset} from '@/constants/assetsConst';
+import Toast from '@/utils/toast';
+
+import {useSafeAreaInsets} from 'react-native-safe-area-context';
+import PanelBase from '../base/panelBase';
+import {FlatList} from 'react-native-gesture-handler';
+import {hidePanel, showPanel} from '../usePanel';
+import PanelHeader from '../base/panelHeader';
+
+interface IAddToMusicSheetProps {
+ musicItem: IMusic.IMusicItem | IMusic.IMusicItem[];
+ // 如果是新建歌单,可以传入一个默认的名称
+ newSheetDefaultName?: string;
+}
+
+export default function AddToMusicSheet(props: IAddToMusicSheetProps) {
+ const sheets = MusicSheet.useSheets();
+
+ const {musicItem = [], newSheetDefaultName} = props ?? {};
+ const safeAreaInsets = useSafeAreaInsets();
+
+ return (
+ (
+ <>
+
+
+ sheet.id}
+ style={{
+ marginBottom: safeAreaInsets.bottom,
+ }}
+ ListHeaderComponent={
+ {
+ showPanel('NewMusicSheet', {
+ defaultName: newSheetDefaultName,
+ async onSheetCreated(sheetId) {
+ try {
+ await MusicSheet.addMusic(
+ sheetId,
+ musicItem,
+ );
+ Toast.success(
+ '添加到歌单成功',
+ );
+ } catch {
+ Toast.warn(
+ '添加到歌单失败',
+ );
+ }
+ },
+ onCancel() {
+ showPanel('AddToMusicSheet', {
+ musicItem: musicItem,
+ newSheetDefaultName,
+ });
+ },
+ });
+ }}>
+
+
+
+ }
+ renderItem={({item: sheet}) => (
+ {
+ try {
+ await MusicSheet.addMusic(
+ sheet.id,
+ musicItem,
+ );
+ hidePanel();
+ Toast.success('添加到歌单成功');
+ } catch {
+ Toast.warn('添加到歌单失败');
+ }
+ }}>
+
+
+
+ )}
+ />
+
+ >
+ )}
+ height={vmax(70)}
+ />
+ );
+}
+
+const style = StyleSheet.create({
+ wrapper: {
+ width: '100%',
+ flex: 1,
+ },
+ header: {
+ paddingHorizontal: rpx(24),
+ marginTop: rpx(36),
+ marginBottom: rpx(36),
+ },
+});
diff --git a/src/components/panels/types/colorPicker.tsx b/src/components/panels/types/colorPicker.tsx
index 469d1845..ef53aceb 100644
--- a/src/components/panels/types/colorPicker.tsx
+++ b/src/components/panels/types/colorPicker.tsx
@@ -61,7 +61,7 @@ export default function ColorPicker(props: IColorPickerProps) {
const slPan = Gesture.Pan()
.onUpdate(event => {
const newTimeStamp = Date.now();
- if (newTimeStamp - lastTimestampRef.current > 33) {
+ if (newTimeStamp - lastTimestampRef.current > 60) {
lastTimestampRef.current = newTimeStamp;
} else {
return;
diff --git a/src/components/panels/types/importMusicSheet.tsx b/src/components/panels/types/importMusicSheet.tsx
index ca8e4573..45e3e411 100644
--- a/src/components/panels/types/importMusicSheet.tsx
+++ b/src/components/panels/types/importMusicSheet.tsx
@@ -1,95 +1,95 @@
-import React from 'react';
-import {View} from 'react-native';
-import {vmax} from '@/utils/rpx';
-import ListItem from '@/components/base/listItem';
-import Toast from '@/utils/toast';
-
-import {useSafeAreaInsets} from 'react-native-safe-area-context';
-import PanelBase from '../base/panelBase';
-import {FlatList} from 'react-native-gesture-handler';
-import {showPanel} from '../usePanel';
-import PanelHeader from '../base/panelHeader';
-import PluginManager from '@/core/pluginManager';
-import NoPlugin from '@/components/base/noPlugin';
-import globalStyle from '@/constants/globalStyle';
-import {showDialog} from '@/components/dialogs/useDialog';
-
-export default function ImportMusicSheet() {
- const plugins = PluginManager.useSortedPlugins() || [];
-
- const validPlugins = plugins.filter(it => !!it.instance?.importMusicSheet);
-
- const safeAreaInsets = useSafeAreaInsets();
-
- return (
- (
- <>
-
- {validPlugins.length ? (
-
- plugin.hash}
- style={{
- marginBottom: safeAreaInsets.bottom,
- }}
- renderItem={({item: plugin}) => (
- {
- showPanel('SimpleInput', {
- title: '导入歌单',
- placeholder: '输入目标歌单',
- hints: plugin.instance.hints
- ?.importMusicSheet,
- maxLength: 1000,
- async onOk(text, closePanel) {
- Toast.success(
- '正在导入中...',
- );
- closePanel();
- const result =
- await plugin.methods.importMusicSheet(
- text,
- );
- if (result.length > 0) {
- showDialog(
- 'SimpleDialog',
- {
- title: '准备导入',
- content: `发现${result.length}首歌曲! 现在开始导入吗?`,
- onOk() {
- showPanel(
- 'AddToMusicSheet',
- {
- musicItem:
- result,
- },
- );
- },
- },
- );
- } else {
- Toast.warn(
- '链接有误或目标歌单为空',
- );
- }
- },
- });
- }}>
-
-
- )}
- />
-
- ) : (
-
- )}
- >
- )}
- />
- );
-}
+import React from 'react';
+import {View} from 'react-native';
+import {vmax} from '@/utils/rpx';
+import ListItem from '@/components/base/listItem';
+import Toast from '@/utils/toast';
+
+import {useSafeAreaInsets} from 'react-native-safe-area-context';
+import PanelBase from '../base/panelBase';
+import {FlatList} from 'react-native-gesture-handler';
+import {showPanel} from '../usePanel';
+import PanelHeader from '../base/panelHeader';
+import PluginManager from '@/core/pluginManager';
+import NoPlugin from '@/components/base/noPlugin';
+import globalStyle from '@/constants/globalStyle';
+import {showDialog} from '@/components/dialogs/useDialog';
+
+export default function ImportMusicSheet() {
+ const plugins = PluginManager.useSortedPlugins() || [];
+
+ const validPlugins = plugins.filter(it => !!it.instance?.importMusicSheet);
+
+ const safeAreaInsets = useSafeAreaInsets();
+
+ return (
+ (
+ <>
+
+ {validPlugins.length ? (
+
+ plugin.hash}
+ style={{
+ marginBottom: safeAreaInsets.bottom,
+ }}
+ renderItem={({item: plugin}) => (
+ {
+ showPanel('SimpleInput', {
+ title: '导入歌单',
+ placeholder: '输入目标歌单',
+ hints: plugin.instance.hints
+ ?.importMusicSheet,
+ maxLength: 1000,
+ async onOk(text, closePanel) {
+ Toast.success(
+ '正在导入中...',
+ );
+ closePanel();
+ const result =
+ await plugin.methods.importMusicSheet(
+ text,
+ );
+ if (result.length > 0) {
+ showDialog(
+ 'SimpleDialog',
+ {
+ title: '准备导入',
+ content: `发现${result.length}首歌曲! 现在开始导入吗?`,
+ onOk() {
+ showPanel(
+ 'AddToMusicSheet',
+ {
+ musicItem:
+ result,
+ },
+ );
+ },
+ },
+ );
+ } else {
+ Toast.warn(
+ '链接有误或目标歌单为空',
+ );
+ }
+ },
+ });
+ }}>
+
+
+ )}
+ />
+
+ ) : (
+
+ )}
+ >
+ )}
+ />
+ );
+}
diff --git a/src/components/panels/types/musicItemOptions.tsx b/src/components/panels/types/musicItemOptions.tsx
index bc59f056..c36d0a8f 100644
--- a/src/components/panels/types/musicItemOptions.tsx
+++ b/src/components/panels/types/musicItemOptions.tsx
@@ -1,308 +1,316 @@
-import React from 'react';
-import {StyleSheet, View} from 'react-native';
-import rpx from '@/utils/rpx';
-import MusicSheet from '@/core/musicSheet';
-import ListItem from '@/components/base/listItem';
-import ThemeText from '@/components/base/themeText';
-import Download from '@/core/download';
-import {ImgAsset} from '@/constants/assetsConst';
-import Clipboard from '@react-native-clipboard/clipboard';
-
-import MediaMeta from '@/core/mediaExtra';
-import {getMediaKey} from '@/utils/mediaItem';
-import FastImage from '@/components/base/fastImage';
-import Toast from '@/utils/toast';
-import LocalMusicSheet from '@/core/localMusicSheet';
-import {localMusicSheetId, musicHistorySheetId} from '@/constants/commonConst';
-import {ROUTE_PATH} from '@/entry/router';
-
-import {useSafeAreaInsets} from 'react-native-safe-area-context';
-import PanelBase from '../base/panelBase';
-import {FlatList} from 'react-native-gesture-handler';
-import musicHistory from '@/core/musicHistory';
-import {showDialog} from '@/components/dialogs/useDialog';
-import {hidePanel, showPanel} from '../usePanel';
-import Divider from '@/components/base/divider';
-import {iconSizeConst} from '@/constants/uiConst';
-import Config from '@/core/config';
-import TrackPlayer from '@/core/trackPlayer';
-import mediaCache from '@/core/mediaCache';
-import LyricManager from '@/core/lyricManager';
-
-interface IMusicItemOptionsProps {
- /** 歌曲信息 */
- musicItem: IMusic.IMusicItem;
- /** 歌曲所在歌单 */
- musicSheet?: IMusic.IMusicSheetItem;
- /** 来源 */
- from?: string;
-}
-
-const ITEM_HEIGHT = rpx(96);
-
-export default function MusicItemOptions(props: IMusicItemOptionsProps) {
- const {musicItem, musicSheet, from} = props ?? {};
-
- const safeAreaInsets = useSafeAreaInsets();
-
- const downloaded = LocalMusicSheet.isLocalMusic(musicItem);
- const associatedLrc = MediaMeta.get(musicItem)?.associatedLrc;
-
- const options = [
- {
- icon: 'id-card',
- title: `ID: ${getMediaKey(musicItem)}`,
- onPress: () => {
- mediaCache.setMediaCache(musicItem);
- Clipboard.setString(
- JSON.stringify(
- {
- platform: musicItem.platform,
- id: musicItem.id,
- },
- null,
- '',
- ),
- );
- Toast.success('已复制到剪切板');
- },
- },
- {
- icon: 'account-music-outline',
- title: `作者: ${musicItem.artist}`,
- onPress: () => {
- try {
- Clipboard.setString(musicItem.artist.toString());
- Toast.success('已复制到剪切板');
- } catch {
- Toast.warn('复制失败');
- }
- },
- },
- {
- icon: 'album',
- show: !!musicItem.album,
- title: `专辑: ${musicItem.album}`,
- onPress: () => {
- try {
- Clipboard.setString(musicItem.album.toString());
- Toast.success('已复制到剪切板');
- } catch {
- Toast.warn('复制失败');
- }
- },
- },
- {
- icon: 'motion-play-outline',
- title: '下一首播放',
- onPress: () => {
- TrackPlayer.addNext(musicItem);
- hidePanel();
- },
- },
- {
- icon: 'plus-box-multiple-outline',
- title: '添加到歌单',
- onPress: () => {
- showPanel('AddToMusicSheet', {musicItem});
- },
- },
- {
- icon: 'download',
- title: '下载',
- show: !downloaded,
- onPress: async () => {
- showPanel('MusicQuality', {
- musicItem,
- async onQualityPress(quality) {
- Download.downloadMusic(musicItem, quality);
- },
- });
- },
- },
- {
- icon: 'check-circle-outline',
- title: '已下载',
- show: !!downloaded,
- },
- {
- icon: 'trash-can-outline',
- title: '删除',
- show: !!musicSheet,
- onPress: async () => {
- if (musicSheet?.id === localMusicSheetId) {
- await LocalMusicSheet.removeMusic(musicItem);
- } else if (musicSheet?.id === musicHistorySheetId) {
- await musicHistory.removeMusic(musicItem);
- } else {
- await MusicSheet.removeMusic(musicSheet!.id, musicItem);
- }
- Toast.success('已删除');
- hidePanel();
- },
- },
- {
- icon: 'delete-forever-outline',
- title: '删除本地下载',
- show: !!downloaded,
- onPress: () => {
- showDialog('SimpleDialog', {
- title: '删除本地下载',
- content: '将会删除已下载的本地文件,确定继续吗?',
- async onOk() {
- try {
- await LocalMusicSheet.removeMusic(musicItem, true);
- Toast.success('已删除本地下载');
- } catch (e: any) {
- Toast.warn(`删除失败 ${e?.message ?? e}`);
- }
- },
- });
- hidePanel();
- },
- },
- {
- icon: 'link-variant',
- title: associatedLrc
- ? `已关联歌词 ${associatedLrc.platform}@${associatedLrc.id}`
- : '关联歌词',
- onPress: async () => {
- if (
- Config.get('setting.basic.associateLyricType') === 'input'
- ) {
- showPanel('AssociateLrc', {
- musicItem,
- });
- } else {
- showPanel('SearchLrc', {
- musicItem,
- });
- }
- },
- },
- {
- icon: 'link-variant-remove',
- title: '解除关联歌词',
- show: !!associatedLrc,
- onPress: async () => {
- MediaMeta.update(musicItem, {
- associatedLrc: undefined,
- });
- LyricManager.refreshLyric(false, true);
- Toast.success('已解除关联歌词');
- hidePanel();
- },
- },
- {
- icon: 'timer-outline',
- title: '定时关闭',
- show: from === ROUTE_PATH.MUSIC_DETAIL,
- onPress: () => {
- showPanel('TimingClose');
- },
- },
- {
- icon: 'file-remove-outline',
- title: '清除插件缓存(播放异常时使用)',
- onPress: () => {
- mediaCache.removeMediaCache(musicItem);
- Toast.success('缓存已清除');
- },
- },
- ];
-
- return (
- (
- <>
-
-
-
-
- {musicItem?.title}
-
-
- {musicItem?.artist}{' '}
- {musicItem?.album ? `- ${musicItem.album}` : ''}
-
-
-
-
-
- ({
- length: ITEM_HEIGHT,
- offset: ITEM_HEIGHT * index,
- index,
- })}
- ListFooterComponent={ }
- style={[
- style.listWrapper,
- {
- marginBottom: safeAreaInsets.bottom,
- },
- ]}
- keyExtractor={_ => _.title}
- renderItem={({item}) =>
- item.show !== false ? (
-
-
-
-
- ) : null
- }
- />
-
- >
- )}
- />
- );
-}
-
-const style = StyleSheet.create({
- wrapper: {
- width: rpx(750),
- flex: 1,
- },
- header: {
- width: rpx(750),
- height: rpx(200),
- flexDirection: 'row',
- padding: rpx(24),
- },
- listWrapper: {
- paddingTop: rpx(12),
- },
- artwork: {
- width: rpx(140),
- height: rpx(140),
- borderRadius: rpx(16),
- },
- content: {
- marginLeft: rpx(36),
- width: rpx(526),
- height: rpx(140),
- justifyContent: 'space-around',
- },
- title: {
- paddingRight: rpx(24),
- },
- footer: {
- width: rpx(750),
- height: rpx(30),
- },
-});
+import React from 'react';
+import {StyleSheet, View} from 'react-native';
+import rpx from '@/utils/rpx';
+import MusicSheet from '@/core/musicSheet';
+import ListItem from '@/components/base/listItem';
+import ThemeText from '@/components/base/themeText';
+import Download from '@/core/download';
+import {ImgAsset} from '@/constants/assetsConst';
+import Clipboard from '@react-native-clipboard/clipboard';
+
+import MediaMeta from '@/core/mediaExtra';
+import {getMediaKey} from '@/utils/mediaItem';
+import FastImage from '@/components/base/fastImage';
+import Toast from '@/utils/toast';
+import LocalMusicSheet from '@/core/localMusicSheet';
+import {localMusicSheetId, musicHistorySheetId} from '@/constants/commonConst';
+import {ROUTE_PATH} from '@/entry/router';
+
+import {useSafeAreaInsets} from 'react-native-safe-area-context';
+import PanelBase from '../base/panelBase';
+import {FlatList} from 'react-native-gesture-handler';
+import musicHistory from '@/core/musicHistory';
+import {showDialog} from '@/components/dialogs/useDialog';
+import {hidePanel, showPanel} from '../usePanel';
+import Divider from '@/components/base/divider';
+import {iconSizeConst} from '@/constants/uiConst';
+import Config from '@/core/config';
+import TrackPlayer from '@/core/trackPlayer';
+import mediaCache from '@/core/mediaCache';
+import LyricManager from '@/core/lyricManager';
+import {IIconName} from '@/components/base/icon.tsx';
+
+interface IMusicItemOptionsProps {
+ /** 歌曲信息 */
+ musicItem: IMusic.IMusicItem;
+ /** 歌曲所在歌单 */
+ musicSheet?: IMusic.IMusicSheetItem;
+ /** 来源 */
+ from?: string;
+}
+
+const ITEM_HEIGHT = rpx(96);
+
+interface IOption {
+ icon: IIconName;
+ title: string;
+ onPress?: () => void;
+ show?: boolean;
+}
+
+export default function MusicItemOptions(props: IMusicItemOptionsProps) {
+ const {musicItem, musicSheet, from} = props ?? {};
+
+ const safeAreaInsets = useSafeAreaInsets();
+
+ const downloaded = LocalMusicSheet.isLocalMusic(musicItem);
+ const associatedLrc = MediaMeta.get(musicItem)?.associatedLrc;
+
+ const options: IOption[] = [
+ {
+ icon: 'identification',
+ title: `ID: ${getMediaKey(musicItem)}`,
+ onPress: () => {
+ mediaCache.setMediaCache(musicItem);
+ Clipboard.setString(
+ JSON.stringify(
+ {
+ platform: musicItem.platform,
+ id: musicItem.id,
+ },
+ null,
+ '',
+ ),
+ );
+ Toast.success('已复制到剪切板');
+ },
+ },
+ {
+ icon: 'user',
+ title: `作者: ${musicItem.artist}`,
+ onPress: () => {
+ try {
+ Clipboard.setString(musicItem.artist.toString());
+ Toast.success('已复制到剪切板');
+ } catch {
+ Toast.warn('复制失败');
+ }
+ },
+ },
+ {
+ icon: 'album-outline',
+ show: !!musicItem.album,
+ title: `专辑: ${musicItem.album}`,
+ onPress: () => {
+ try {
+ Clipboard.setString(musicItem.album.toString());
+ Toast.success('已复制到剪切板');
+ } catch {
+ Toast.warn('复制失败');
+ }
+ },
+ },
+ {
+ icon: 'motion-play',
+ title: '下一首播放',
+ onPress: () => {
+ TrackPlayer.addNext(musicItem);
+ hidePanel();
+ },
+ },
+ {
+ icon: 'folder-plus',
+ title: '添加到歌单',
+ onPress: () => {
+ showPanel('AddToMusicSheet', {musicItem});
+ },
+ },
+ {
+ icon: 'arrow-down-tray',
+ title: '下载',
+ show: !downloaded,
+ onPress: async () => {
+ showPanel('MusicQuality', {
+ musicItem,
+ async onQualityPress(quality) {
+ Download.downloadMusic(musicItem, quality);
+ },
+ });
+ },
+ },
+ {
+ icon: 'check-circle-outline',
+ title: '已下载',
+ show: !!downloaded,
+ },
+ {
+ icon: 'trash-outline',
+ title: '删除',
+ show: !!musicSheet,
+ onPress: async () => {
+ if (musicSheet?.id === localMusicSheetId) {
+ await LocalMusicSheet.removeMusic(musicItem);
+ } else if (musicSheet?.id === musicHistorySheetId) {
+ await musicHistory.removeMusic(musicItem);
+ } else {
+ await MusicSheet.removeMusic(musicSheet!.id, musicItem);
+ }
+ Toast.success('已删除');
+ hidePanel();
+ },
+ },
+ {
+ icon: 'trash-outline',
+ title: '删除本地下载',
+ show: !!downloaded,
+ onPress: () => {
+ showDialog('SimpleDialog', {
+ title: '删除本地下载',
+ content: '将会删除已下载的本地文件,确定继续吗?',
+ async onOk() {
+ try {
+ await LocalMusicSheet.removeMusic(musicItem, true);
+ Toast.success('已删除本地下载');
+ } catch (e: any) {
+ Toast.warn(`删除失败 ${e?.message ?? e}`);
+ }
+ },
+ });
+ hidePanel();
+ },
+ },
+ {
+ icon: 'link',
+ title: associatedLrc
+ ? `已关联歌词 ${associatedLrc.platform}@${associatedLrc.id}`
+ : '关联歌词',
+ onPress: async () => {
+ if (
+ Config.get('setting.basic.associateLyricType') === 'input'
+ ) {
+ showPanel('AssociateLrc', {
+ musicItem,
+ });
+ } else {
+ showPanel('SearchLrc', {
+ musicItem,
+ });
+ }
+ },
+ },
+ {
+ icon: 'link-slash',
+ title: '解除关联歌词',
+ show: !!associatedLrc,
+ onPress: async () => {
+ MediaMeta.update(musicItem, {
+ associatedLrc: undefined,
+ });
+ LyricManager.refreshLyric(false, true);
+ Toast.success('已解除关联歌词');
+ hidePanel();
+ },
+ },
+ {
+ icon: 'alarm-outline',
+ title: '定时关闭',
+ show: from === ROUTE_PATH.MUSIC_DETAIL,
+ onPress: () => {
+ showPanel('TimingClose');
+ },
+ },
+ {
+ icon: 'archive-box-x-mark',
+ title: '清除插件缓存(播放异常时使用)',
+ onPress: () => {
+ mediaCache.removeMediaCache(musicItem);
+ Toast.success('缓存已清除');
+ },
+ },
+ ];
+
+ return (
+ (
+ <>
+
+
+
+
+ {musicItem?.title}
+
+
+ {musicItem?.artist}{' '}
+ {musicItem?.album ? `- ${musicItem.album}` : ''}
+
+
+
+
+
+ ({
+ length: ITEM_HEIGHT,
+ offset: ITEM_HEIGHT * index,
+ index,
+ })}
+ ListFooterComponent={ }
+ style={[
+ style.listWrapper,
+ {
+ marginBottom: safeAreaInsets.bottom,
+ },
+ ]}
+ keyExtractor={_ => _.title}
+ renderItem={({item}) =>
+ item.show !== false ? (
+
+
+
+
+ ) : null
+ }
+ />
+
+ >
+ )}
+ />
+ );
+}
+
+const style = StyleSheet.create({
+ wrapper: {
+ width: rpx(750),
+ flex: 1,
+ },
+ header: {
+ width: rpx(750),
+ height: rpx(200),
+ flexDirection: 'row',
+ padding: rpx(24),
+ },
+ listWrapper: {
+ paddingTop: rpx(12),
+ },
+ artwork: {
+ width: rpx(140),
+ height: rpx(140),
+ borderRadius: rpx(16),
+ },
+ content: {
+ marginLeft: rpx(36),
+ width: rpx(526),
+ height: rpx(140),
+ justifyContent: 'space-around',
+ },
+ title: {
+ paddingRight: rpx(24),
+ },
+ footer: {
+ width: rpx(750),
+ height: rpx(30),
+ },
+});
diff --git a/src/components/panels/types/playList/body.tsx b/src/components/panels/types/playList/body.tsx
index dffb701b..136eec0a 100644
--- a/src/components/panels/types/playList/body.tsx
+++ b/src/components/panels/types/playList/body.tsx
@@ -1,153 +1,153 @@
-import React, {useMemo, useRef} from 'react';
-import {Pressable, StyleSheet, Text, View} from 'react-native';
-import rpx from '@/utils/rpx';
-import Tag from '@/components/base/tag';
-import ThemeText from '@/components/base/themeText';
-import {fontSizeConst} from '@/constants/uiConst';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-import {isSameMediaItem} from '@/utils/mediaItem';
-import IconButton from '@/components/base/iconButton';
-import Loading from '@/components/base/loading';
-import {useSafeAreaInsets} from 'react-native-safe-area-context';
-import useColors from '@/hooks/useColors';
-import TrackPlayer from '@/core/trackPlayer';
-import {FlashList} from '@shopify/flash-list';
-
-const ITEM_HEIGHT = rpx(108);
-const ITEM_WIDTH = rpx(750);
-
-interface IPlayListProps {
- item: IMusic.IMusicItem;
- isCurrentMusic: boolean;
-}
-
-function _PlayListItem(props: IPlayListProps) {
- const colors = useColors();
- const {item, isCurrentMusic} = props;
-
- return (
- {
- TrackPlayer.play(item);
- }}
- style={style.musicItem}>
- {isCurrentMusic && (
-
- )}
-
- {item.title}
- {item.artist && (
-
- {' '}
- - {item.artist}
-
- )}
-
-
- {
- TrackPlayer.remove(item);
- }}
- />
-
- );
-}
-
-const PlayListItem = React.memo(
- _PlayListItem,
- (prev, next) =>
- !!isSameMediaItem(prev.item, next.item) &&
- prev.isCurrentMusic === next.isCurrentMusic,
-);
-
-interface IBodyProps {
- loading?: boolean;
-}
-export default function Body(props: IBodyProps) {
- const {loading} = props;
- const playList = TrackPlayer.usePlayList();
- const currentMusicItem = TrackPlayer.useCurrentMusic();
- const listRef = useRef | null>();
- const safeAreaInsets = useSafeAreaInsets();
-
- const initIndex = useMemo(() => {
- const id = playList.findIndex(_ =>
- isSameMediaItem(currentMusicItem, _),
- );
-
- if (id !== -1) {
- return id;
- }
- return undefined;
- }, []);
-
- const renderItem = ({item}: {item: IMusic.IMusicItem; index: number}) => {
- return (
-
- );
- };
-
- return loading ? (
-
- ) : (
-
- {
- listRef.current = _;
- }}
- extraData={{currentMusicItem}}
- estimatedItemSize={ITEM_HEIGHT}
- data={playList}
- initialScrollIndex={initIndex}
- renderItem={renderItem}
- />
-
- );
-}
-
-const style = StyleSheet.create({
- playList: {
- width: rpx(750),
- flex: 1,
- },
- currentPlaying: {
- marginRight: rpx(6),
- },
- musicItem: {
- width: ITEM_WIDTH,
- height: ITEM_HEIGHT,
- paddingHorizontal: rpx(24),
- flexDirection: 'row',
- alignItems: 'center',
- },
- musicItemTitle: {
- flex: 1,
- },
-});
+import React, {useMemo, useRef} from 'react';
+import {Pressable, StyleSheet, Text, View} from 'react-native';
+import rpx from '@/utils/rpx';
+import Tag from '@/components/base/tag';
+import ThemeText from '@/components/base/themeText';
+import {fontSizeConst} from '@/constants/uiConst';
+import {isSameMediaItem} from '@/utils/mediaItem';
+import IconButton from '@/components/base/iconButton';
+import Loading from '@/components/base/loading';
+import {useSafeAreaInsets} from 'react-native-safe-area-context';
+import useColors from '@/hooks/useColors';
+import TrackPlayer from '@/core/trackPlayer';
+import {FlashList} from '@shopify/flash-list';
+import Icon from '@/components/base/icon.tsx';
+
+const ITEM_HEIGHT = rpx(108);
+const ITEM_WIDTH = rpx(750);
+
+interface IPlayListProps {
+ item: IMusic.IMusicItem;
+ isCurrentMusic: boolean;
+}
+
+function _PlayListItem(props: IPlayListProps) {
+ const colors = useColors();
+ const {item, isCurrentMusic} = props;
+
+ return (
+ {
+ TrackPlayer.play(item);
+ }}
+ style={style.musicItem}>
+ {isCurrentMusic && (
+
+ )}
+
+ {item.title}
+ {item.artist && (
+
+ {' '}
+ - {item.artist}
+
+ )}
+
+
+ {
+ TrackPlayer.remove(item);
+ }}
+ />
+
+ );
+}
+
+const PlayListItem = React.memo(
+ _PlayListItem,
+ (prev, next) =>
+ !!isSameMediaItem(prev.item, next.item) &&
+ prev.isCurrentMusic === next.isCurrentMusic,
+);
+
+interface IBodyProps {
+ loading?: boolean;
+}
+export default function Body(props: IBodyProps) {
+ const {loading} = props;
+ const playList = TrackPlayer.usePlayList();
+ const currentMusicItem = TrackPlayer.useCurrentMusic();
+ const listRef = useRef | null>();
+ const safeAreaInsets = useSafeAreaInsets();
+
+ const initIndex = useMemo(() => {
+ const id = playList.findIndex(_ =>
+ isSameMediaItem(currentMusicItem, _),
+ );
+
+ if (id !== -1) {
+ return id;
+ }
+ return undefined;
+ }, []);
+
+ const renderItem = ({item}: {item: IMusic.IMusicItem; index: number}) => {
+ return (
+
+ );
+ };
+
+ return loading ? (
+
+ ) : (
+
+ {
+ listRef.current = _;
+ }}
+ extraData={{currentMusicItem}}
+ estimatedItemSize={ITEM_HEIGHT}
+ data={playList}
+ initialScrollIndex={initIndex}
+ renderItem={renderItem}
+ />
+
+ );
+}
+
+const style = StyleSheet.create({
+ playList: {
+ width: rpx(750),
+ flex: 1,
+ },
+ currentPlaying: {
+ marginRight: rpx(6),
+ },
+ musicItem: {
+ width: ITEM_WIDTH,
+ height: ITEM_HEIGHT,
+ paddingHorizontal: rpx(24),
+ flexDirection: 'row',
+ alignItems: 'center',
+ },
+ musicItemTitle: {
+ flex: 1,
+ },
+});
diff --git a/src/components/panels/types/playList/header.tsx b/src/components/panels/types/playList/header.tsx
index 27800b8d..0027256a 100644
--- a/src/components/panels/types/playList/header.tsx
+++ b/src/components/panels/types/playList/header.tsx
@@ -1,59 +1,59 @@
-import React from 'react';
-import {InteractionManager, StyleSheet, View} from 'react-native';
-import rpx from '@/utils/rpx';
-import ThemeText from '@/components/base/themeText';
-import repeatModeConst from '@/constants/repeatModeConst';
-import IconTextButton from '@/components/base/iconTextButton';
-import TrackPlayer from '@/core/trackPlayer';
-
-export default function Header() {
- const repeatMode = TrackPlayer.useRepeatMode();
- const playList = TrackPlayer.usePlayList();
-
- return (
-
-
- 播放列表
-
- {' '}
- ({playList.length}首)
-
-
- {
- InteractionManager.runAfterInteractions(() => {
- TrackPlayer.toggleRepeatMode();
- });
- }}
- icon={repeatModeConst[repeatMode].icon}>
- {repeatModeConst[repeatMode].text}
-
- {
- TrackPlayer.clear();
- }}>
- 清空
-
-
- );
-}
-
-const style = StyleSheet.create({
- wrapper: {
- width: rpx(750),
- height: rpx(80),
- paddingHorizontal: rpx(24),
- marginTop: rpx(18),
- marginBottom: rpx(12),
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'space-between',
- },
- headerText: {
- flex: 1,
- },
-});
+import React from 'react';
+import {InteractionManager, StyleSheet, View} from 'react-native';
+import rpx from '@/utils/rpx';
+import ThemeText from '@/components/base/themeText';
+import repeatModeConst from '@/constants/repeatModeConst';
+import IconTextButton from '@/components/base/iconTextButton';
+import TrackPlayer from '@/core/trackPlayer';
+
+export default function Header() {
+ const repeatMode = TrackPlayer.useRepeatMode();
+ const playList = TrackPlayer.usePlayList();
+
+ return (
+
+
+ 播放列表
+
+ {' '}
+ ({playList.length}首)
+
+
+ {
+ InteractionManager.runAfterInteractions(() => {
+ TrackPlayer.toggleRepeatMode();
+ });
+ }}
+ icon={repeatModeConst[repeatMode].icon}>
+ {repeatModeConst[repeatMode].text}
+
+ {
+ TrackPlayer.clear();
+ }}>
+ 清空
+
+
+ );
+}
+
+const style = StyleSheet.create({
+ wrapper: {
+ width: rpx(750),
+ height: rpx(80),
+ paddingHorizontal: rpx(24),
+ marginTop: rpx(18),
+ marginBottom: rpx(12),
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ },
+ headerText: {
+ flex: 1,
+ },
+});
diff --git a/src/components/panels/types/searchLrc/useSearchLrc.ts b/src/components/panels/types/searchLrc/useSearchLrc.ts
index 6974cfb6..d1365b30 100644
--- a/src/components/panels/types/searchLrc/useSearchLrc.ts
+++ b/src/components/panels/types/searchLrc/useSearchLrc.ts
@@ -1,6 +1,6 @@
import {devLog, errorLog} from '@/utils/log';
import {RequestStateCode} from '@/constants/commonConst';
-import produce from 'immer';
+import {produce} from 'immer';
import {useCallback, useRef} from 'react';
import PluginManager, {Plugin} from '@/core/pluginManager';
import searchResultStore from './searchResultStore';
diff --git a/src/components/panels/types/setLyricOffset.tsx b/src/components/panels/types/setLyricOffset.tsx
index 0cdad9f4..5415213e 100644
--- a/src/components/panels/types/setLyricOffset.tsx
+++ b/src/components/panels/types/setLyricOffset.tsx
@@ -1,115 +1,115 @@
-import React, {useState} from 'react';
-import {StyleSheet, View} from 'react-native';
-import rpx from '@/utils/rpx';
-import ThemeText from '@/components/base/themeText';
-
-import PanelBase from '../base/panelBase';
-import MediaExtra from '@/core/mediaExtra';
-import {iconSizeConst} from '@/constants/uiConst';
-import PanelHeader from '../base/panelHeader';
-import {TouchableOpacity} from 'react-native-gesture-handler';
-import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
-import {hidePanel} from '../usePanel';
-import useColors from '@/hooks/useColors';
-
-interface IProps {
- musicItem: IMusic.IMusicItem;
- /** 点击回调 */
- onSubmit?: (offset: number) => void;
-}
-
-export default function SetLyricOffset(props: IProps) {
- const {musicItem, onSubmit} = props ?? {};
-
- const [offset, setOffset] = useState(
- MediaExtra.get(musicItem)?.lyricOffset ?? 0,
- );
-
- const colors = useColors();
-
- let titleStr =
- offset === 0
- ? '正常'
- : offset < 0
- ? `延后${(-offset).toFixed(1)}s`
- : `提前${offset.toFixed(1)}s`;
-
- return (
- (
- <>
- {
- onSubmit?.(offset);
- }}
- onCancel={hidePanel}
- />
-
- {
- setOffset(prev => prev - 0.2);
- }}>
-
- -0.2s
-
- {
- setOffset(0);
- }}>
-
- 重置
-
- {
- setOffset(prev => prev + 0.2);
- }}>
-
- +0.2s
-
-
- >
- )}
- />
- );
-}
-
-const styles = StyleSheet.create({
- header: {
- width: '100%',
- flexDirection: 'row',
- padding: rpx(24),
- },
- container: {
- flex: 1,
- paddingHorizontal: rpx(24),
- paddingBottom: rpx(36),
- width: '100%',
- flexDirection: 'row',
- alignItems: 'center',
- justifyContent: 'space-around',
- },
- btn: {
- width: rpx(144),
- height: rpx(144),
- alignItems: 'center',
- justifyContent: 'space-around',
- },
-});
+import React, {useState} from 'react';
+import {StyleSheet, View} from 'react-native';
+import rpx from '@/utils/rpx';
+import ThemeText from '@/components/base/themeText';
+
+import PanelBase from '../base/panelBase';
+import MediaExtra from '@/core/mediaExtra';
+import {iconSizeConst} from '@/constants/uiConst';
+import PanelHeader from '../base/panelHeader';
+import {TouchableOpacity} from 'react-native-gesture-handler';
+import {hidePanel} from '../usePanel';
+import useColors from '@/hooks/useColors';
+import Icon from '@/components/base/icon.tsx';
+
+interface IProps {
+ musicItem: IMusic.IMusicItem;
+ /** 点击回调 */
+ onSubmit?: (offset: number) => void;
+}
+
+export default function SetLyricOffset(props: IProps) {
+ const {musicItem, onSubmit} = props ?? {};
+
+ const [offset, setOffset] = useState(
+ MediaExtra.get(musicItem)?.lyricOffset ?? 0,
+ );
+
+ const colors = useColors();
+
+ let titleStr =
+ offset === 0
+ ? '正常'
+ : offset < 0
+ ? `延后${(-offset).toFixed(1)}s`
+ : `提前${offset.toFixed(1)}s`;
+
+ return (
+ (
+ <>
+ {
+ onSubmit?.(offset);
+ }}
+ onCancel={hidePanel}
+ />
+
+ {
+ setOffset(prev => prev - 0.2);
+ }}>
+
+ -0.2s
+
+ {
+ setOffset(0);
+ }}>
+
+ 重置
+
+ {
+ setOffset(prev => prev + 0.2);
+ }}>
+
+ +0.2s
+
+
+ >
+ )}
+ />
+ );
+}
+
+const styles = StyleSheet.create({
+ header: {
+ width: '100%',
+ flexDirection: 'row',
+ padding: rpx(24),
+ },
+ container: {
+ flex: 1,
+ paddingHorizontal: rpx(24),
+ paddingBottom: rpx(36),
+ width: '100%',
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-around',
+ },
+ btn: {
+ width: rpx(144),
+ height: rpx(144),
+ alignItems: 'center',
+ justifyContent: 'space-around',
+ },
+});
diff --git a/src/components/panels/types/setUserVariables.tsx b/src/components/panels/types/setUserVariables.tsx
index 8c64327f..7907cba7 100644
--- a/src/components/panels/types/setUserVariables.tsx
+++ b/src/components/panels/types/setUserVariables.tsx
@@ -1,110 +1,110 @@
-import React, {useRef} from 'react';
-import {KeyboardAvoidingView, StyleSheet} from 'react-native';
-import rpx, {vmax} from '@/utils/rpx';
-import useColors from '@/hooks/useColors';
-
-import ThemeText from '@/components/base/themeText';
-import {ScrollView} from 'react-native-gesture-handler';
-import PanelBase from '../base/panelBase';
-import {hidePanel} from '../usePanel';
-import ListItem from '@/components/base/listItem';
-import Input from '@/components/base/input';
-import globalStyle from '@/constants/globalStyle';
-import PanelHeader from '../base/panelHeader';
-
-interface IUserVariablesProps {
- onOk: (values: Record, closePanel: () => void) => void;
- variables: IPlugin.IUserVariable[];
- initValues?: Record;
- onCancel?: () => void;
-}
-
-export default function SetUserVariables(props: IUserVariablesProps) {
- const {onOk, onCancel, variables, initValues = {}} = props;
-
- const colors = useColors();
-
- const resultRef = useRef({...initValues});
-
- return (
- (
- <>
- {
- onCancel?.();
- hidePanel();
- }}
- onOk={async () => {
- onOk(resultRef.current, hidePanel);
- }}
- />
-
-
- {variables.map(it => (
-
-
- {it.name ?? it.key}
-
- {
- resultRef.current[it.key] = e;
- }}
- style={[
- styles.input,
- {
- backgroundColor:
- colors.placeholder,
- },
- ]}
- placeholder={it.hint}
- />
-
- ))}
-
-
- >
- )}
- />
- );
-}
-
-const styles = StyleSheet.create({
- wrapper: {
- width: rpx(750),
- },
- opeartions: {
- width: rpx(750),
- paddingHorizontal: rpx(24),
- flexDirection: 'row',
- height: rpx(100),
- alignItems: 'center',
- justifyContent: 'space-between',
- },
- listItem: {
- justifyContent: 'space-between',
- },
- varName: {
- maxWidth: '35%',
- },
- input: {
- width: '50%',
- paddingVertical: rpx(8),
- paddingHorizontal: rpx(12),
- borderRadius: rpx(8),
- },
-});
+import React, {useRef} from 'react';
+import {KeyboardAvoidingView, StyleSheet} from 'react-native';
+import rpx, {vmax} from '@/utils/rpx';
+import useColors from '@/hooks/useColors';
+
+import ThemeText from '@/components/base/themeText';
+import {ScrollView} from 'react-native-gesture-handler';
+import PanelBase from '../base/panelBase';
+import {hidePanel} from '../usePanel';
+import ListItem from '@/components/base/listItem';
+import Input from '@/components/base/input';
+import globalStyle from '@/constants/globalStyle';
+import PanelHeader from '../base/panelHeader';
+
+interface IUserVariablesProps {
+ onOk: (values: Record, closePanel: () => void) => void;
+ variables: IPlugin.IUserVariable[];
+ initValues?: Record;
+ onCancel?: () => void;
+}
+
+export default function SetUserVariables(props: IUserVariablesProps) {
+ const {onOk, onCancel, variables, initValues = {}} = props;
+
+ const colors = useColors();
+
+ const resultRef = useRef({...initValues});
+
+ return (
+ (
+ <>
+ {
+ onCancel?.();
+ hidePanel();
+ }}
+ onOk={async () => {
+ onOk(resultRef.current, hidePanel);
+ }}
+ />
+
+
+ {variables.map(it => (
+
+
+ {it.name ?? it.key}
+
+ {
+ resultRef.current[it.key] = e;
+ }}
+ style={[
+ styles.input,
+ {
+ backgroundColor:
+ colors.placeholder,
+ },
+ ]}
+ placeholder={it.hint}
+ />
+
+ ))}
+
+
+ >
+ )}
+ />
+ );
+}
+
+const styles = StyleSheet.create({
+ wrapper: {
+ width: rpx(750),
+ },
+ opeartions: {
+ width: rpx(750),
+ paddingHorizontal: rpx(24),
+ flexDirection: 'row',
+ height: rpx(100),
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ },
+ listItem: {
+ justifyContent: 'space-between',
+ },
+ varName: {
+ maxWidth: '35%',
+ },
+ input: {
+ width: '50%',
+ paddingVertical: rpx(8),
+ paddingHorizontal: rpx(12),
+ borderRadius: rpx(8),
+ },
+});
diff --git a/src/components/panels/types/simpleSelect.tsx b/src/components/panels/types/simpleSelect.tsx
index f50a5229..1de73667 100644
--- a/src/components/panels/types/simpleSelect.tsx
+++ b/src/components/panels/types/simpleSelect.tsx
@@ -1,81 +1,81 @@
-import React, {Fragment} from 'react';
-import {ScrollView, StyleSheet} from 'react-native';
-import rpx from '@/utils/rpx';
-import {useSafeAreaInsets} from 'react-native-safe-area-context';
-import PanelBase from '../base/panelBase';
-import {hidePanel} from '../usePanel';
-import ListItem from '@/components/base/listItem';
-import PanelHeader from '../base/panelHeader';
-
-interface ICandidateItem {
- title?: string;
- value: any;
-}
-
-interface ISimpleSelectProps {
- height?: number;
- header?: string;
- candidates?: Array;
- onPress?: (item: ICandidateItem) => void;
-}
-
-export default function SimpleSelect(props: ISimpleSelectProps) {
- const {
- height = rpx(520),
- header = '',
- candidates = [],
- onPress,
- } = props ?? {};
-
- const safeAreaInsets = useSafeAreaInsets();
-
- return (
- (
- <>
-
-
-
- {candidates.map((it, index) => {
- return (
-
- {
- onPress?.(it);
- hidePanel();
- }}>
-
-
-
- );
- })}
-
- >
- )}
- />
- );
-}
-
-const styles = StyleSheet.create({
- header: {
- width: '100%',
- flexDirection: 'row',
- padding: rpx(24),
- },
- body: {
- flex: 1,
- },
- item: {
- height: rpx(96),
- justifyContent: 'center',
- },
-});
+import React, {Fragment} from 'react';
+import {ScrollView, StyleSheet} from 'react-native';
+import rpx from '@/utils/rpx';
+import {useSafeAreaInsets} from 'react-native-safe-area-context';
+import PanelBase from '../base/panelBase';
+import {hidePanel} from '../usePanel';
+import ListItem from '@/components/base/listItem';
+import PanelHeader from '../base/panelHeader';
+
+interface ICandidateItem {
+ title?: string;
+ value: any;
+}
+
+interface ISimpleSelectProps {
+ height?: number;
+ header?: string;
+ candidates?: Array;
+ onPress?: (item: ICandidateItem) => void;
+}
+
+export default function SimpleSelect(props: ISimpleSelectProps) {
+ const {
+ height = rpx(520),
+ header = '',
+ candidates = [],
+ onPress,
+ } = props ?? {};
+
+ const safeAreaInsets = useSafeAreaInsets();
+
+ return (
+ (
+ <>
+
+
+
+ {candidates.map((it, index) => {
+ return (
+
+