diff --git a/demos/react-native-supabase-todolist/app.config.ts b/demos/react-native-supabase-todolist/app.config.ts index edb8a2ec..65b3cb63 100644 --- a/demos/react-native-supabase-todolist/app.config.ts +++ b/demos/react-native-supabase-todolist/app.config.ts @@ -60,13 +60,13 @@ const config: ExpoConfig = { ios: { deploymentTarget: '13.4', // TODO: New architecture is currently not yet supported by @journeyapps/react-native-quick-sqlite - newArchEnabled: false, - extraPods: [ - { - name: 'powersync-sqlite-core', - version: '~> 0.1.6' - } - ] + newArchEnabled: false + // extraPods: [ + // { + // name: 'powersync-sqlite-core', + // version: '~> 0.1.6' + // } + // ] }, android: { minSdkVersion: 23, diff --git a/demos/react-native-supabase-todolist/ios/Podfile.lock b/demos/react-native-supabase-todolist/ios/Podfile.lock index df01867b..fa4ac99b 100644 --- a/demos/react-native-supabase-todolist/ios/Podfile.lock +++ b/demos/react-native-supabase-todolist/ios/Podfile.lock @@ -75,11 +75,34 @@ PODS: - hermes-engine/Pre-built (= 0.74.1) - hermes-engine/Pre-built (0.74.1) - op-sqlite (7.4.0): - - powersync-sqlite-core (~> 0.1.7) - React - React-callinvoker - React-Core - - powersync-sqlite-core (0.1.8) + - powersync-opsqlite (1.0.0): + - DoubleConversion + - glog + - hermes-engine + - powersync-sqlite-core (~> 0.2.1) + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React + - React-callinvoker + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - powersync-sqlite-core (0.2.1) - RCT-Folly (2024.01.01.00): - boost - DoubleConversion @@ -1010,6 +1033,11 @@ PODS: - React-debug - react-native-encrypted-storage (4.0.3): - React-Core + - react-native-quick-sqlite (1.3.0): + - powersync-sqlite-core (~> 0.2.1) + - React + - React-callinvoker + - React-Core - react-native-safe-area-context (4.10.1): - React-Core - React-nativeconfig (0.74.1) @@ -1356,7 +1384,7 @@ DEPENDENCIES: - glog (from `../../../node_modules/react-native/third-party-podspecs/glog.podspec`) - hermes-engine (from `../../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) - "op-sqlite (from `../../../node_modules/@op-engineering/op-sqlite`)" - - powersync-sqlite-core (~> 0.1.7) + - "powersync-opsqlite (from `../node_modules/@powersync/op-sqlite`)" - RCT-Folly (from `../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCT-Folly/Fabric (from `../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) - RCTDeprecation (from `../../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`) @@ -1384,6 +1412,7 @@ DEPENDENCIES: - React-logger (from `../../../node_modules/react-native/ReactCommon/logger`) - React-Mapbuffer (from `../../../node_modules/react-native/ReactCommon`) - react-native-encrypted-storage (from `../../../node_modules/react-native-encrypted-storage`) + - "react-native-quick-sqlite (from `../../../node_modules/@journeyapps/react-native-quick-sqlite`)" - react-native-safe-area-context (from `../../../node_modules/react-native-safe-area-context`) - React-nativeconfig (from `../../../node_modules/react-native/ReactCommon`) - React-NativeModulesApple (from `../../../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) @@ -1461,6 +1490,8 @@ EXTERNAL SOURCES: :tag: hermes-2024-04-25-RNv0.74.1-b54a3a01c531f4f5f1904cb0770033e8b7153dff op-sqlite: :path: "../../../node_modules/@op-engineering/op-sqlite" + powersync-opsqlite: + :path: "../node_modules/@powersync/op-sqlite" RCT-Folly: :podspec: "../../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTDeprecation: @@ -1511,6 +1542,8 @@ EXTERNAL SOURCES: :path: "../../../node_modules/react-native/ReactCommon" react-native-encrypted-storage: :path: "../../../node_modules/react-native-encrypted-storage" + react-native-quick-sqlite: + :path: "../../../node_modules/@journeyapps/react-native-quick-sqlite" react-native-safe-area-context: :path: "../../../node_modules/react-native-safe-area-context" React-nativeconfig: @@ -1591,8 +1624,9 @@ SPEC CHECKSUMS: fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 glog: c5d68082e772fa1c511173d6b30a9de2c05a69a2 hermes-engine: 16b8530de1b383cdada1476cf52d1b52f0692cbc - op-sqlite: 7d8e4d98813a06d1c938868d565ccc81a77a158f - powersync-sqlite-core: 9325150c88515df0b5ea992007708588c3f01518 + op-sqlite: 93397f1a6cc24e9662ee8c0ee5e59466baa06f4a + powersync-opsqlite: fe90a95060493238eea75ecf0b7d662327022883 + powersync-sqlite-core: 38ead13d8b21920cfbc79e9b3415b833574a506d RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47 RCTDeprecation: efb313d8126259e9294dc4ee0002f44a6f676aba RCTRequired: f49ea29cece52aee20db633ae7edc4b271435562 @@ -1618,6 +1652,7 @@ SPEC CHECKSUMS: React-logger: 7e7403a2b14c97f847d90763af76b84b152b6fce React-Mapbuffer: 11029dcd47c5c9e057a4092ab9c2a8d10a496a33 react-native-encrypted-storage: db300a3f2f0aba1e818417c1c0a6be549038deb7 + react-native-quick-sqlite: 3d7faa9ac557da507cb8a1684fb78682fefb1cfb react-native-safe-area-context: dcab599c527c2d7de2d76507a523d20a0b83823d React-nativeconfig: b0073a590774e8b35192fead188a36d1dca23dec React-NativeModulesApple: df46ff3e3de5b842b30b4ca8a6caae6d7c8ab09f diff --git a/demos/react-native-supabase-todolist/ios/Podfile.properties.json b/demos/react-native-supabase-todolist/ios/Podfile.properties.json index 829bbb1d..579fcd48 100644 --- a/demos/react-native-supabase-todolist/ios/Podfile.properties.json +++ b/demos/react-native-supabase-todolist/ios/Podfile.properties.json @@ -3,7 +3,6 @@ "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true", "ios.deploymentTarget": "13.4", "newArchEnabled": "false", - "apple.extraPods": "[{\"name\":\"powersync-sqlite-core\",\"version\":\"~> 0.1.7\"}]", "apple.ccacheEnabled": "false", "apple.privacyManifestAggregationEnabled": "true" } diff --git a/demos/react-native-supabase-todolist/library/powersync/system.ts b/demos/react-native-supabase-todolist/library/powersync/system.ts index e3cbaa0c..4c4fc47f 100644 --- a/demos/react-native-supabase-todolist/library/powersync/system.ts +++ b/demos/react-native-supabase-todolist/library/powersync/system.ts @@ -15,7 +15,7 @@ import { PhotoAttachmentQueue } from './PhotoAttachmentQueue'; import { type AttachmentRecord } from '@powersync/attachments'; import { AppConfig } from '../supabase/AppConfig'; import Logger from 'js-logger'; -import { OPSqliteOpenFactory } from '@powersync/react-native-op-sqlite'; +import { OPSqliteOpenFactory } from '@powersync/op-sqlite'; Logger.useDefaults(); diff --git a/demos/react-native-supabase-todolist/package.json b/demos/react-native-supabase-todolist/package.json index b7d55b81..292f81ea 100644 --- a/demos/react-native-supabase-todolist/package.json +++ b/demos/react-native-supabase-todolist/package.json @@ -16,7 +16,7 @@ "@powersync/common": "workspace:*", "@powersync/react": "workspace:*", "@powersync/react-native": "workspace:*", - "@powersync/react-native-op-sqlite": "workspace:*", + "@powersync/op-sqlite": "workspace:*", "@react-native-community/masked-view": "^0.1.11", "@react-navigation/drawer": "^6.6.3", "@react-navigation/native": "^6.0.0", diff --git a/packages/op-sqlite/android/CMakeLists.txt b/packages/op-sqlite/android/CMakeLists.txt new file mode 100644 index 00000000..3a1dee03 --- /dev/null +++ b/packages/op-sqlite/android/CMakeLists.txt @@ -0,0 +1,43 @@ +project(PowersyncOpSqlite) +cmake_minimum_required(VERSION 3.9.0) + +set (PACKAGE_NAME "powersync-opsqlite") +set (CMAKE_VERBOSE_MAKEFILE ON) +set (CMAKE_CXX_STANDARD 17) +set (BUILD_DIR ${CMAKE_SOURCE_DIR}/build) + +add_library( + ${PACKAGE_NAME} + SHARED +) + +set_target_properties( + ${PACKAGE_NAME} PROPERTIES + CXX_STANDARD 17 + CXX_EXTENSIONS OFF + POSITION_INDEPENDENT_CODE ON +) + +find_package(ReactAndroid REQUIRED CONFIG) +find_package(fbjni REQUIRED CONFIG) +find_package(powersync_sqlite_core REQUIRED CONFIG) +find_library(LOG_LIB log) + +if(${USE_HERMES}) + set(JSEXECUTOR_LIB ReactAndroid::hermes_executor) +else() + set(JSEXECUTOR_LIB ReactAndroid::jscexecutor) +endif() + + +target_link_libraries( + ${PACKAGE_NAME} + ${LOG_LIB} + fbjni::fbjni + ReactAndroid::jsi + ReactAndroid::turbomodulejsijni + ReactAndroid::react_nativemodule_core + ${JSEXECUTOR_LIB} + android + powersync_sqlite_core::powersync +) diff --git a/packages/op-sqlite/android/build.gradle b/packages/op-sqlite/android/build.gradle new file mode 100644 index 00000000..07f7a6cb --- /dev/null +++ b/packages/op-sqlite/android/build.gradle @@ -0,0 +1,112 @@ +buildscript { + ext.safeExtGet = {prop, fallback -> + rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback + } + repositories { + google() + gradlePluginPortal() + } + dependencies { + classpath("com.android.tools.build:gradle:7.3.1") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.22") + } +} + +def reactNativeArchitectures() { + def value = project.getProperties().get("reactNativeArchitectures") + return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"] +} + +def resolveBuildType() { + Gradle gradle = getGradle() + String tskReqStr = gradle.getStartParameter().getTaskRequests()['args'].toString() + + return tskReqStr.contains('Release') ? 'release' : 'debug' +} + +def isNewArchitectureEnabled() { + return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true" +} + +apply plugin: 'com.android.library' +apply plugin: 'com.facebook.react' +apply plugin: 'org.jetbrains.kotlin.android' + +android { + compileSdkVersion safeExtGet('compileSdkVersion', 33) + namespace "com.powersync.opsqlite" + + // Used to override the NDK path/version on internal CI or by allowing + // users to customize the NDK path/version from their root project (e.g. for M1 support) + if (rootProject.hasProperty("ndkPath")) { + ndkPath rootProject.ext.ndkPath + } + if (rootProject.hasProperty("ndkVersion")) { + ndkVersion rootProject.ext.ndkVersion + } + + defaultConfig { + minSdkVersion 23 + targetSdkVersion safeExtGet('targetSdkVersion', 34) + versionCode 1 + versionName "1.0" + + externalNativeBuild { + cmake { + + cppFlags "-O2", "-fexceptions", "-frtti", "-std=c++1y", "-DONANDROID" + abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a' + arguments "-DANDROID_STL=c++_shared" + abiFilters (*reactNativeArchitectures()) + } + } + + packagingOptions { + doNotStrip resolveBuildType() == 'debug' ? "**/**/*.so" : '' + excludes = [ + "META-INF", + "META-INF/**", + "**/libjsi.so", + "**/libreact_nativemodule_core.so", + "**/libturbomodulejsijni.so", + "**/libfbjni.so" + ] + } + + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + externalNativeBuild { + cmake { + path "CMakeLists.txt" + } + } + + sourceSets.main { + java { + if (isNewArchitectureEnabled()) { + srcDirs += [ + "src/turbo", + // This is needed to build Kotlin project with NewArch enabled + "${project.buildDir}/generated/source/codegen/java" + ] + } else { + srcDirs += ["src/legacy"] + } + } + } +} + +repositories { + mavenCentral() + google() +} + +dependencies { + implementation 'com.facebook.react:react-native' + implementation 'co.powersync:powersync-sqlite-core:0.2.1' +} \ No newline at end of file diff --git a/packages/op-sqlite/android/src/main/AndroidManifest.xml b/packages/op-sqlite/android/src/main/AndroidManifest.xml new file mode 100644 index 00000000..2198d83b --- /dev/null +++ b/packages/op-sqlite/android/src/main/AndroidManifest.xml @@ -0,0 +1,4 @@ + + + diff --git a/packages/op-sqlite/android/src/main/java/com/powersyncopsqlite/PowersyncOpSqlitePackage.kt b/packages/op-sqlite/android/src/main/java/com/powersyncopsqlite/PowersyncOpSqlitePackage.kt new file mode 100644 index 00000000..b0b230ff --- /dev/null +++ b/packages/op-sqlite/android/src/main/java/com/powersyncopsqlite/PowersyncOpSqlitePackage.kt @@ -0,0 +1,12 @@ +package com.powersyncopsqlite; + +import com.facebook.react.TurboReactPackage +import com.facebook.react.bridge.NativeModule +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.module.model.ReactModuleInfoProvider + +class CalculatorPackage : TurboReactPackage() { + override fun getModule(name: String?, reactContext: ReactApplicationContext): NativeModule? = null + + override fun getReactModuleInfoProvider(): ReactModuleInfoProvider? = null +} \ No newline at end of file diff --git a/packages/op-sqlite/ios/PowersyncOpSqlite.h b/packages/op-sqlite/ios/PowersyncOpSqlite.h new file mode 100644 index 00000000..ae0acebd --- /dev/null +++ b/packages/op-sqlite/ios/PowersyncOpSqlite.h @@ -0,0 +1,11 @@ +#ifdef RCT_NEW_ARCH_ENABLED +#import "PowersyncOpSqliteSpec.h" + +@interface PowersyncOpSqlite : NSObject +#else +#import + +@interface PowersyncOpSqlite : NSObject +#endif + +@end \ No newline at end of file diff --git a/packages/op-sqlite/ios/PowersyncOpSqlite.mm b/packages/op-sqlite/ios/PowersyncOpSqlite.mm new file mode 100644 index 00000000..d26088a0 --- /dev/null +++ b/packages/op-sqlite/ios/PowersyncOpSqlite.mm @@ -0,0 +1,27 @@ +#import "PowersyncOpSqlite.h" + +@implementation PowersyncOpSqlite +RCT_EXPORT_MODULE() + +// Example method +// See // https://reactnative.dev/docs/native-modules-ios +RCT_REMAP_METHOD(multiply, + multiplyWithA:(double)a withB:(double)b + withResolver:(RCTPromiseResolveBlock)resolve + withRejecter:(RCTPromiseRejectBlock)reject) +{ + NSNumber *result = @(a * b); + + resolve(result); +} + +// Don't compile this code when we build for the old architecture. +#ifdef RCT_NEW_ARCH_ENABLED +- (std::shared_ptr)getTurboModule: + (const facebook::react::ObjCTurboModule::InitParams &)params +{ + return std::make_shared(params); +} +#endif + +@end \ No newline at end of file diff --git a/packages/op-sqlite/jest.config.ts b/packages/op-sqlite/jest.config.ts deleted file mode 100644 index 06aeda28..00000000 --- a/packages/op-sqlite/jest.config.ts +++ /dev/null @@ -1,18 +0,0 @@ -// jest.config.ts -import { createJsWithTsPreset, type JestConfigWithTsJest } from 'ts-jest'; - -const jestConfig: JestConfigWithTsJest = { - preset: 'ts-jest', - testEnvironment: 'node', - globals: { - 'ts-test': { - tsConfig: 'tsconfig.test.json' - } - }, - transform: { - ...createJsWithTsPreset().transform - }, - transformIgnorePatterns: ['node_modules/(?!@me/test-package)'] -}; - -export default jestConfig; diff --git a/packages/op-sqlite/package.json b/packages/op-sqlite/package.json index b7557aba..ce17a0cd 100644 --- a/packages/op-sqlite/package.json +++ b/packages/op-sqlite/package.json @@ -1,18 +1,20 @@ { - "name": "@powersync/react-native-op-sqlite", + "name": "@powersync/op-sqlite", "version": "1.0.0", "description": "OPSQLite adapter", - "main": "./dist/index.js", + "main": "./lib/index.js", "types": "./lib/index.d.ts", "files": [ - "lib", - "dist" + "lib" ], "scripts": { "build": "tsc -b", "clean": "rm -rf lib tsconfig.tsbuildinfo dist", "watch": "tsc -b -w", - "test": "jest" + "android": "react-native run-android", + "ios": "react-native run-ios --scheme='debug' --simulator='iPhone 15 Pro Max'", + "test-android": "node scripts/test.js run-android", + "test-ios": "node scripts/test.js run-ios" }, "repository": { "type": "git", @@ -29,14 +31,20 @@ }, "dependencies": { "@op-engineering/op-sqlite": "^7.1.0", - "@powersync/common": "workspace:*" + "@powersync/common": "workspace:*", + "chai": "^4.3.7", + "mocha": "^10.1.0", + "react": "18.2.0", + "react-native": "0.74.0", + "react-native-restart": "^0.0.27" }, "devDependencies": { "@jest/globals": "^29.7.0", "@types/jest": "^29.5.12", + "@types/chai": "^4.3.4", + "@types/chance": "^1.1.3", + "@types/mocha": "^10.0.1", "jest": "^29.7.0", - "react": "18.2.0", - "react-native": "0.74.0", "ts-jest": "^29.2.5", "typescript": "^5.5.4" }, diff --git a/packages/op-sqlite/powersync-opsqlite.podspec b/packages/op-sqlite/powersync-opsqlite.podspec new file mode 100644 index 00000000..b4067199 --- /dev/null +++ b/packages/op-sqlite/powersync-opsqlite.podspec @@ -0,0 +1,33 @@ +require "json" + +package = JSON.parse(File.read(File.join(__dir__, "package.json"))) + +Pod::Spec.new do |s| + s.name = "powersync-opsqlite" + s.version = package["version"] + s.summary = package["description"] + s.homepage = package["homepage"] + s.license = package["license"] + s.authors = package["author"] + + s.platforms = { :ios => "13.0", :osx => "10.15" } + s.source = { :git => "https://github.com/powersync-ja/powersync-js.git", :tag => "#{s.version}" } + + s.source_files = "ios/**/*.{h,m,mm,swift}" + + s.pod_target_xcconfig = { + :GCC_PREPROCESSOR_DEFINITIONS => "HAVE_FULLFSYNC=1", + :WARNING_CFLAGS => "-Wno-shorten-64-to-32 -Wno-comma -Wno-unreachable-code -Wno-conditional-uninitialized -Wno-deprecated-declarations", + :USE_HEADERMAP => "No" + } + + s.dependency "React-callinvoker" + s.dependency "React" + s.dependency "powersync-sqlite-core", "~> 0.2.1" + if defined?(install_modules_dependencies()) + install_modules_dependencies(s) + else + s.dependency "React-Core" + end + +end diff --git a/packages/op-sqlite/tsconfig.json b/packages/op-sqlite/tsconfig.json index aaed06da..387902ac 100644 --- a/packages/op-sqlite/tsconfig.json +++ b/packages/op-sqlite/tsconfig.json @@ -2,16 +2,15 @@ "extends": "../../tsconfig.base", "compilerOptions": { "baseUrl": "./", - "outDir": "./lib", - "rootDir": ".", "jsx": "react", - "allowSyntheticDefaultImports": true, - "allowJs": true + "outDir": "./lib", + "strictNullChecks": true, + "declaration": true }, "references": [ { "path": "../common" } ], - "include": ["src/**/*", "tests/**/*"], + "include": ["src/**/*", "tests/**/*"] } diff --git a/packages/react-native/package.json b/packages/react-native/package.json index 603a6252..8df90d15 100644 --- a/packages/react-native/package.json +++ b/packages/react-native/package.json @@ -33,11 +33,9 @@ "react-native": "*" }, "dependencies": { - "@op-engineering/op-sqlite": "^7.1.0", "@journeyapps/react-native-quick-sqlite": "^1.3.0", "@powersync/common": "workspace:*", "@powersync/react": "workspace:*", - "@powersync/react-native-op-sqlite": "workspace:*", "async-mutex": "^0.5.0" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7a37c0f2..c499e07f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -773,15 +773,15 @@ importers: '@powersync/common': specifier: workspace:* version: link:../../packages/common + '@powersync/op-sqlite': + specifier: workspace:* + version: link:../../packages/op-sqlite '@powersync/react': specifier: workspace:* version: link:../../packages/react '@powersync/react-native': specifier: workspace:* version: link:../../packages/react-native - '@powersync/react-native-op-sqlite': - specifier: workspace:* - version: link:../../packages/op-sqlite '@react-native-community/masked-view': specifier: ^0.1.11 version: 0.1.11(react-native@0.74.1)(react@18.2.0) @@ -1413,22 +1413,40 @@ importers: '@powersync/common': specifier: workspace:* version: link:../common + chai: + specifier: ^4.3.7 + version: 4.4.1 + mocha: + specifier: ^10.1.0 + version: 10.7.3 + react: + specifier: 18.2.0 + version: 18.2.0 + react-native: + specifier: 0.74.0 + version: 0.74.0(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(react@18.2.0) + react-native-restart: + specifier: ^0.0.27 + version: 0.0.27(react-native@0.74.0)(react@18.2.0) devDependencies: '@jest/globals': specifier: ^29.7.0 version: 29.7.0 + '@types/chai': + specifier: ^4.3.4 + version: 4.3.19 + '@types/chance': + specifier: ^1.1.3 + version: 1.1.6 '@types/jest': specifier: ^29.5.12 version: 29.5.12 + '@types/mocha': + specifier: ^10.0.1 + version: 10.0.7 jest: specifier: ^29.7.0 version: 29.7.0 - react: - specifier: 18.2.0 - version: 18.2.0 - react-native: - specifier: 0.74.0 - version: 0.74.0(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(react@18.2.0) ts-jest: specifier: ^29.2.5 version: 29.2.5(@babel/core@7.24.5)(jest@29.7.0)(typescript@5.5.4) @@ -1463,18 +1481,12 @@ importers: '@journeyapps/react-native-quick-sqlite': specifier: ^1.3.0 version: 1.3.0(react-native@0.72.4)(react@18.2.0) - '@op-engineering/op-sqlite': - specifier: ^7.1.0 - version: 7.4.0(react-native@0.72.4)(react@18.2.0) '@powersync/common': specifier: workspace:* version: link:../common '@powersync/react': specifier: workspace:* version: link:../react - '@powersync/react-native-op-sqlite': - specifier: workspace:* - version: link:../op-sqlite async-mutex: specifier: ^0.5.0 version: 0.5.0 @@ -9301,7 +9313,7 @@ packages: peerDependencies: react-native: '*' dependencies: - react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(@types/react@18.2.79)(react@18.2.0) + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(@types/react@18.2.79)(react@18.2.0) dev: false /@expo/multipart-body-parser@1.1.0: @@ -10336,7 +10348,7 @@ packages: react-native: '*' dependencies: react: 18.2.0 - react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(@types/react@18.2.79)(react@18.2.0) + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(@types/react@18.2.79)(react@18.2.0) dev: false /@journeyapps/wa-sqlite@0.1.1: @@ -11952,16 +11964,6 @@ packages: deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. dev: true - /@op-engineering/op-sqlite@7.4.0(react-native@0.72.4)(react@18.2.0): - resolution: {integrity: sha512-45jSBAG6BPiX/HMqdChNKBnjemD/7X1fDx0xcAzKzoacnT96Z73MtNc7dbS2uE4UYom/mC0gd7eC+4AHovq86Q==} - peerDependencies: - react: '*' - react-native: '>0.73.0' - dependencies: - react: 18.2.0 - react-native: 0.72.4(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(react@18.2.0) - dev: false - /@op-engineering/op-sqlite@7.4.0(react-native@0.74.0)(react@18.2.0): resolution: {integrity: sha512-45jSBAG6BPiX/HMqdChNKBnjemD/7X1fDx0xcAzKzoacnT96Z73MtNc7dbS2uE4UYom/mC0gd7eC+4AHovq86Q==} peerDependencies: @@ -12539,6 +12541,7 @@ packages: fast-glob: 3.3.2 transitivePeerDependencies: - encoding + dev: false /@react-native-community/cli-clean@13.6.6: resolution: {integrity: sha512-cBwJTwl0NyeA4nyMxbhkWZhxtILYkbU3TW3k8AXLg+iGphe0zikYMGB3T+haTvTc6alTyEFwPbimk9bGIqkjAQ==} @@ -12573,6 +12576,7 @@ packages: joi: 17.13.1 transitivePeerDependencies: - encoding + dev: false /@react-native-community/cli-config@13.6.6: resolution: {integrity: sha512-mbG425zCKr8JZhv/j11382arezwS/70juWMsn8j2lmrGTrP1cUdW0MF15CCIFtJsqyK3Qs+FTmqttRpq81QfSg==} @@ -12599,6 +12603,7 @@ packages: serve-static: 1.15.0 transitivePeerDependencies: - supports-color + dev: false /@react-native-community/cli-debugger-ui@13.6.6: resolution: {integrity: sha512-Vv9u6eS4vKSDAvdhA0OiQHoA7y39fiPIgJ6biT32tN4avHDtxlc6TWZGiqv7g98SBvDWvoVAmdPLcRf3kU+c8g==} @@ -12653,6 +12658,7 @@ packages: yaml: 2.4.2 transitivePeerDependencies: - encoding + dev: false /@react-native-community/cli-doctor@13.6.6: resolution: {integrity: sha512-TWZb5g6EmQe2Ua2TEWNmyaEayvlWH4GmdD9ZC+p8EpKFpB1NpDGMK6sXbpb42TDvwZg5s4TDRplK0PBEA/SVDg==} @@ -12697,6 +12703,7 @@ packages: hermes-profile-transformer: 0.0.6 transitivePeerDependencies: - encoding + dev: false /@react-native-community/cli-hermes@13.6.6: resolution: {integrity: sha512-La5Ie+NGaRl3klei6WxKoOxmCUSGGxpOk6vU5pEGf0/O7ky+Ay0io+zXYUZqlNMi/cGpO7ZUijakBYOB/uyuFg==} @@ -12730,6 +12737,7 @@ packages: logkitty: 0.7.1 transitivePeerDependencies: - encoding + dev: false /@react-native-community/cli-platform-android@13.6.6: resolution: {integrity: sha512-/tMwkBeNxh84syiSwNlYtmUz/Ppc+HfKtdopL/5RB+fd3SV1/5/NPNjMlyLNgFKnpxvKCInQ7dnl6jGHJjeHjg==} @@ -12754,6 +12762,7 @@ packages: ora: 5.4.1 transitivePeerDependencies: - encoding + dev: false /@react-native-community/cli-platform-apple@13.6.6: resolution: {integrity: sha512-bOmSSwoqNNT3AmCRZXEMYKz1Jf1l2F86Nhs7qBcXdY/sGiJ+Flng564LOqvdAlVLTbkgz47KjNKCS2pP4Jg0Mg==} @@ -12785,6 +12794,7 @@ packages: '@react-native-community/cli-platform-apple': 13.6.4 transitivePeerDependencies: - encoding + dev: false /@react-native-community/cli-platform-ios@13.6.6: resolution: {integrity: sha512-vjDnRwhlSN5ryqKTas6/DPkxuouuyFBAqAROH4FR1cspTbn6v78JTZKDmtQy9JMMo7N5vZj1kASU5vbFep9IOQ==} @@ -12849,6 +12859,7 @@ packages: - encoding - supports-color - utf-8-validate + dev: false /@react-native-community/cli-server-api@13.6.6: resolution: {integrity: sha512-ZtCXxoFlM7oDv3iZ3wsrT3SamhtUJuIkX2WePLPlN5bcbq7zimbPm2lHyicNJtpcGQ5ymsgpUWPCNZsWQhXBqQ==} @@ -12899,6 +12910,7 @@ packages: sudo-prompt: 9.2.1 transitivePeerDependencies: - encoding + dev: false /@react-native-community/cli-tools@13.6.6: resolution: {integrity: sha512-ptOnn4AJczY5njvbdK91k4hcYazDnGtEPrqIwEI+k/CTBHNdb27Rsm2OZ7ye6f7otLBqF8gj/hK6QzJs8CEMgw==} @@ -12926,6 +12938,7 @@ packages: resolution: {integrity: sha512-NxGCNs4eYtVC8x0wj0jJ/MZLRy8C+B9l8lY8kShuAcvWTv5JXRqmXjg8uK1aA+xikPh0maq4cc/zLw1roroY/A==} dependencies: joi: 17.13.1 + dev: false /@react-native-community/cli-types@13.6.6: resolution: {integrity: sha512-733iaYzlmvNK7XYbnWlMjdE+2k0hlTBJW071af/xb6Bs+hbJqBP9c03FZuYH2hFFwDDntwj05bkri/P7VgSxug==} @@ -12988,6 +13001,7 @@ packages: - encoding - supports-color - utf-8-validate + dev: false /@react-native-community/cli@13.6.6: resolution: {integrity: sha512-IqclB7VQ84ye8Fcs89HOpOscY4284VZg2pojHNl8H0Lzd4DadXJWQoxC7zWm8v2f8eyeX2kdhxp2ETD5tceIgA==} @@ -13034,6 +13048,7 @@ packages: /@react-native/assets-registry@0.74.81: resolution: {integrity: sha512-ms+D6pJ6l30epm53pwnAislW79LEUHJxWfe1Cu0LWyTTBlg1OFoqXfB3eIbpe4WyH3nrlkQAh0yyk4huT2mCvw==} engines: {node: '>=18'} + dev: false /@react-native/assets-registry@0.74.83: resolution: {integrity: sha512-2vkLMVnp+YTZYTNSDIBZojSsjz8sl5PscP3j4GcV6idD8V978SZfwFlk8K0ti0BzRs11mzL0Pj17km597S/eTQ==} @@ -13047,6 +13062,7 @@ packages: transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: false /@react-native/babel-plugin-codegen@0.74.83(@babel/preset-env@7.24.5): resolution: {integrity: sha512-+S0st3t4Ro00bi9gjT1jnK8qTFOU+CwmziA7U9odKyWrCoRJrgmrvogq/Dr1YXlpFxexiGIupGut1VHxr+fxJA==} @@ -13139,6 +13155,7 @@ packages: transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: false /@react-native/babel-preset@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5): resolution: {integrity: sha512-KJuu3XyVh3qgyUer+rEqh9a/JoUxsDOzkJNfRpDyXiAyjDRoVch60X/Xa/NcEQ93iCVHAWs0yQ+XGNGIBCYE6g==} @@ -13387,6 +13404,7 @@ packages: nullthrows: 1.1.1 transitivePeerDependencies: - supports-color + dev: false /@react-native/codegen@0.74.83(@babel/preset-env@7.24.5): resolution: {integrity: sha512-GgvgHS3Aa2J8/mp1uC/zU8HuTh8ZT5jz7a4mVMWPw7+rGyv70Ba8uOVBq6UH2Q08o617IATYc+0HfyzAfm4n0w==} @@ -13482,6 +13500,7 @@ packages: - encoding - supports-color - utf-8-validate + dev: false /@react-native/community-cli-plugin@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5): resolution: {integrity: sha512-7GAFjFOg1mFSj8bnFNQS4u8u7+QtrEeflUIDVZGEfBZQ3wMNI5ycBzbBGycsZYiq00Xvoc6eKFC7kvIaqeJpUQ==} @@ -13535,6 +13554,7 @@ packages: /@react-native/debugger-frontend@0.74.81: resolution: {integrity: sha512-HCYF1/88AfixG75558HkNh9wcvGweRaSZGBA71KoZj03umXM8XJy0/ZpacGOml2Fwiqpil72gi6uU+rypcc/vw==} engines: {node: '>=18'} + dev: false /@react-native/debugger-frontend@0.74.83: resolution: {integrity: sha512-RGQlVUegBRxAUF9c1ss1ssaHZh6CO+7awgtI9sDeU0PzDZY/40ImoPD5m0o0SI6nXoVzbPtcMGzU+VO590pRfA==} @@ -13562,6 +13582,7 @@ packages: - encoding - supports-color - utf-8-validate + dev: false /@react-native/dev-middleware@0.74.83: resolution: {integrity: sha512-UH8iriqnf7N4Hpi20D7M2FdvSANwTVStwFCSD7VMU9agJX88Yk0D1T6Meh2RMhUu4kY2bv8sTkNRm7LmxvZqgA==} @@ -13592,6 +13613,7 @@ packages: /@react-native/gradle-plugin@0.74.81: resolution: {integrity: sha512-7YQ4TLnqfe2kplWWzBWO6k0rPSrWEbuEiRXSJNZQCtCk+t2YX985G62p/9jWm3sGLN4UTcpDXaFNTTPBvlycoQ==} engines: {node: '>=18'} + dev: false /@react-native/gradle-plugin@0.74.83: resolution: {integrity: sha512-Pw2BWVyOHoBuJVKxGVYF6/GSZRf6+v1Ygc+ULGz5t20N8qzRWPa2fRZWqoxsN7TkNLPsECYY8gooOl7okOcPAQ==} @@ -13603,6 +13625,7 @@ packages: /@react-native/js-polyfills@0.74.81: resolution: {integrity: sha512-o4MiR+/kkHoeoQ/zPwt81LnTm6pqdg0wOhU7S7vIZUqzJ7YUpnpaAvF+/z7HzUOPudnavoCN0wvcZPe/AMEyCA==} engines: {node: '>=18'} + dev: false /@react-native/js-polyfills@0.74.83: resolution: {integrity: sha512-/t74n8r6wFhw4JEoOj3bN71N1NDLqaawB75uKAsSjeCwIR9AfCxlzZG0etsXtOexkY9KMeZIQ7YwRPqUdNXuqw==} @@ -13621,6 +13644,7 @@ packages: transitivePeerDependencies: - '@babel/preset-env' - supports-color + dev: false /@react-native/metro-babel-transformer@0.74.83(@babel/core@7.24.5)(@babel/preset-env@7.24.5): resolution: {integrity: sha512-hGdx5N8diu8y+GW/ED39vTZa9Jx1di2ZZ0aapbhH4egN1agIAusj5jXTccfNBwwWF93aJ5oVbRzfteZgjbutKg==} @@ -13659,6 +13683,7 @@ packages: /@react-native/normalize-colors@0.74.81: resolution: {integrity: sha512-g3YvkLO7UsSWiDfYAU+gLhRHtEpUyz732lZB+N8IlLXc5MnfXHC8GKneDGY3Mh52I3gBrs20o37D5viQX9E1CA==} + dev: false /@react-native/normalize-colors@0.74.83: resolution: {integrity: sha512-jhCY95gRDE44qYawWVvhTjTplW1g+JtKTKM3f8xYT1dJtJ8QWv+gqEtKcfmOHfDkSDaMKG0AGBaDTSK8GXLH8Q==} @@ -13690,6 +13715,7 @@ packages: nullthrows: 1.1.1 react: 18.2.0 react-native: 0.74.0(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(react@18.2.0) + dev: false /@react-native/virtualized-lists@0.74.83(@types/react@18.2.79)(react-native@0.74.1)(react@18.2.0): resolution: {integrity: sha512-rmaLeE34rj7py4FxTod7iMTC7BAsm+HrGA8WxYmEJeyTV7WSaxAkosKoYBz8038mOiwnG9VwA/7FrB6bEQvn1A==} @@ -13706,7 +13732,7 @@ packages: invariant: 2.2.4 nullthrows: 1.1.1 react: 18.2.0 - react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(@types/react@18.2.79)(react@18.2.0) + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(@types/react@18.2.79)(react@18.2.0) dev: false /@react-native/virtualized-lists@0.74.83(@types/react@18.3.2)(react-native@0.74.1)(react@18.2.0): @@ -13740,7 +13766,7 @@ packages: '@react-navigation/native': 6.1.17(react-native@0.74.1)(react@18.2.0) color: 4.2.3 react: 18.2.0 - react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(@types/react@18.2.79)(react@18.2.0) + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(@types/react@18.2.79)(react@18.2.0) react-native-safe-area-context: 4.10.1(react-native@0.74.1)(react@18.2.0) react-native-screens: 3.31.1(react-native@0.74.1)(react@18.2.0) warn-once: 0.1.1 @@ -13821,7 +13847,7 @@ packages: '@react-navigation/elements': 1.3.30(@react-navigation/native@6.1.17)(react-native-safe-area-context@4.10.1)(react-native@0.74.1)(react@18.2.0) '@react-navigation/native': 6.1.17(react-native@0.74.1)(react@18.2.0) react: 18.2.0 - react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(@types/react@18.2.79)(react@18.2.0) + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(@types/react@18.2.79)(react@18.2.0) react-native-safe-area-context: 4.10.1(react-native@0.74.1)(react@18.2.0) react-native-screens: 3.31.1(react-native@0.74.1)(react@18.2.0) warn-once: 0.1.1 @@ -16676,6 +16702,14 @@ packages: '@types/responselike': 1.0.3 dev: true + /@types/chai@4.3.19: + resolution: {integrity: sha512-2hHHvQBVE2FiSK4eN0Br6snX9MtolHaTo/batnLjlGRhoQzlCL61iVpxoqO7SfFyOw+P/pwv+0zNHzKoGWz9Cw==} + dev: true + + /@types/chance@1.1.6: + resolution: {integrity: sha512-V+pm3stv1Mvz8fSKJJod6CglNGVqEQ6OyuqitoDkWywEODM/eJd1eSuIp9xt6DrX8BWZ2eDSIzbw1tPCUTvGbQ==} + dev: true + /@types/cli-progress@3.11.5: resolution: {integrity: sha512-D4PbNRbviKyppS5ivBGyFO29POlySLmA2HyUFE4p5QGazAMM3CwkKWcvTl8gvElSuxRh6FPKL8XmidX873ou4g==} dependencies: @@ -16882,6 +16916,10 @@ packages: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} dev: true + /@types/mocha@10.0.7: + resolution: {integrity: sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==} + dev: true + /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} @@ -18245,7 +18283,6 @@ packages: /ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} - dev: true /ansi-diff@1.1.1: resolution: {integrity: sha512-XnTdFDQzbEewrDx8epWXdw7oqHMvv315vEtfqDiEhhWghIf4++h26c3/FMz7iTLhNrnj56DNIXpbxHZq+3s6qw==} @@ -18572,7 +18609,6 @@ packages: /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: true /ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} @@ -19312,6 +19348,10 @@ packages: wcwidth: 1.0.1 dev: true + /browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + dev: false + /browserslist@4.23.0: resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -19636,7 +19676,6 @@ packages: loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 - dev: true /chalk-template@0.4.0: resolution: {integrity: sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==} @@ -19696,7 +19735,6 @@ packages: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: get-func-name: 2.0.2 - dev: true /cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -21301,6 +21339,11 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} + /decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + dev: false + /decamelize@6.0.0: resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -21348,7 +21391,6 @@ packages: engines: {node: '>=6'} dependencies: type-detect: 4.0.8 - dev: true /deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} @@ -21576,6 +21618,11 @@ packages: engines: {node: '>=0.3.1'} dev: true + /diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + dev: false + /dir-compare@4.2.0: resolution: {integrity: sha512-2xMCmOoMrdQIPHdsTawECdNPwlVFB9zGcz3kuhmBO6U3oU+UQjsue0i8ayLKpgBcm+hcXPMVSGUN9d+pvJ6+VQ==} dependencies: @@ -23097,7 +23144,7 @@ packages: peerDependencies: expo: '*' dependencies: - expo: 51.0.10(@babel/core@7.24.5)(@babel/preset-env@7.24.5) + expo: 51.0.10(@babel/core@7.24.5)(@babel/preset-env@7.25.3) expo-constants: 16.0.2(expo@51.0.10) invariant: 2.2.4 md5-file: 3.2.3 @@ -23141,7 +23188,7 @@ packages: dependencies: '@expo/config': 9.0.1 '@expo/env': 0.3.0 - expo: 51.0.10(@babel/core@7.24.5)(@babel/preset-env@7.24.5) + expo: 51.0.10(@babel/core@7.24.5)(@babel/preset-env@7.25.3) transitivePeerDependencies: - supports-color dev: false @@ -23208,7 +23255,7 @@ packages: peerDependencies: expo: '*' dependencies: - expo: 51.0.10(@babel/core@7.24.5)(@babel/preset-env@7.24.5) + expo: 51.0.10(@babel/core@7.24.5)(@babel/preset-env@7.25.3) dev: false /expo-font@12.0.10(expo@51.0.10): @@ -23216,7 +23263,7 @@ packages: peerDependencies: expo: '*' dependencies: - expo: 51.0.10(@babel/core@7.24.5)(@babel/preset-env@7.24.5) + expo: 51.0.10(@babel/core@7.24.5)(@babel/preset-env@7.25.3) fontfaceobserver: 2.3.0 dev: false @@ -23229,7 +23276,7 @@ packages: peerDependencies: expo: '*' dependencies: - expo: 51.0.10(@babel/core@7.24.5)(@babel/preset-env@7.24.5) + expo: 51.0.10(@babel/core@7.24.5)(@babel/preset-env@7.25.3) dev: false /expo-linking@6.3.1(expo@51.0.10): @@ -24283,7 +24330,6 @@ packages: /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - dev: true /get-installed-path@2.1.1: resolution: {integrity: sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==} @@ -24477,7 +24523,6 @@ packages: inherits: 2.0.4 minimatch: 5.1.6 once: 1.4.0 - dev: true /glob@9.3.5: resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} @@ -27348,7 +27393,6 @@ packages: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 - dev: true /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -28876,7 +28920,6 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: true /minimatch@8.0.4: resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} @@ -29037,6 +29080,33 @@ packages: ufo: 1.5.3 dev: true + /mocha@10.7.3: + resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} + engines: {node: '>= 14.0.0'} + hasBin: true + dependencies: + ansi-colors: 4.1.3 + browser-stdout: 1.3.1 + chokidar: 3.6.0 + debug: 4.3.7(supports-color@8.1.1) + diff: 5.2.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 8.1.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.1.6 + ms: 2.1.3 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.5.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 + yargs-unparser: 2.0.0 + dev: false + /moment@2.30.1: resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} dev: true @@ -30281,7 +30351,6 @@ packages: /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: true /pe-library@1.0.1: resolution: {integrity: sha512-nh39Mo1eGWmZS7y+mK/dQIqg7S1lp38DpRxkyoHf0ZcUs/HDc+yyTjuOtTvSMZHmfSLuSQaX945u05Y2Q6UWZg==} @@ -31707,7 +31776,7 @@ packages: lodash: 4.17.21 prop-types: 15.8.1 react: 18.2.0 - react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(@types/react@18.2.79)(react@18.2.0) + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(@types/react@18.2.79)(react@18.2.0) dev: false /react-native-helmet-async@2.0.4(react@18.2.0): @@ -31792,11 +31861,21 @@ packages: convert-source-map: 2.0.0 invariant: 2.2.4 react: 18.2.0 - react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(@types/react@18.2.79)(react@18.2.0) + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(@types/react@18.2.79)(react@18.2.0) transitivePeerDependencies: - supports-color dev: false + /react-native-restart@0.0.27(react-native@0.74.0)(react@18.2.0): + resolution: {integrity: sha512-8KScVICrXwcTSJ1rjWkqVTHyEKQIttm5AIMGSK1QG1+RS5owYlE4z/1DykOTdWfVl9l16FIk0w9Xzk9ZO6jxlA==} + peerDependencies: + react: '*' + react-native: '*' + dependencies: + react: 18.2.0 + react-native: 0.74.0(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(react@18.2.0) + dev: false + /react-native-safe-area-context@4.10.1(react-native@0.74.1)(react@18.2.0): resolution: {integrity: sha512-w8tCuowDorUkPoWPXmhqosovBr33YsukkwYCDERZFHAxIkx6qBadYxfeoaJ91nCQKjkNzGrK5qhoNOeSIcYSpA==} peerDependencies: @@ -31804,7 +31883,7 @@ packages: react-native: '*' dependencies: react: 18.2.0 - react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(@types/react@18.2.79)(react@18.2.0) + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(@types/react@18.2.79)(react@18.2.0) dev: false /react-native-safe-area-view@0.14.9(react-native@0.74.1)(react@18.2.0): @@ -31841,7 +31920,7 @@ packages: dependencies: react: 18.2.0 react-freeze: 1.0.4(react@18.2.0) - react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(@types/react@18.2.79)(react@18.2.0) + react-native: 0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.25.3)(@types/react@18.2.79)(react@18.2.0) warn-once: 0.1.1 dev: false @@ -32032,6 +32111,7 @@ packages: - encoding - supports-color - utf-8-validate + dev: false /react-native@0.74.1(@babel/core@7.24.5)(@babel/preset-env@7.24.5)(@types/react@18.2.79)(react@18.2.0): resolution: {integrity: sha512-0H2XpmghwOtfPpM2LKqHIN7gxy+7G/r1hwJHKLV6uoyXGC/gCojRtoo5NqyKrWpFC8cqyT6wTYCLuG7CxEKilg==} @@ -37769,6 +37849,10 @@ packages: workbox-core: 7.1.0 dev: true + /workerpool@6.5.1: + resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} + dev: false + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -38052,6 +38136,16 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + /yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + dev: false + /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'}