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'}