@op-engineering/op-sqlite 3.0.7 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/CMakeLists.txt +9 -4
- package/android/build.gradle +44 -17
- package/android/cpp-adapter.cpp +5 -1
- package/android/gradle.properties +1 -1
- package/android/src/main/java/com/op/sqlite/OPSQLiteBridge.kt +3 -1
- package/android/src/main/java/com/op/sqlite/OPSQLiteModule.kt +23 -19
- package/android/src/main/java/com/op/sqlite/OPSQLitePackage.kt +10 -23
- package/android/src/main/jniLibs/arm64-v8a/libcrsqlite.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libcrsqlite.so +0 -0
- package/android/src/main/jniLibs/x86/libcrsqlite.so +0 -0
- package/android/src/main/jniLibs/x86_64/libcrsqlite.so +0 -0
- package/cpp/DumbHostObject.cpp +1 -0
- package/cpp/bindings.cpp +7 -3
- package/cpp/bindings.h +1 -1
- package/cpp/bridge.cpp +32 -3
- package/cpp/bridge.h +3 -2
- package/ios/OPSQLite.h +8 -8
- package/ios/OPSQLite.mm +89 -70
- package/ios/crsqlite.xcframework/Info.plist +40 -0
- package/ios/crsqlite.xcframework/ios-arm64/crsqlite.framework/Info.plist +18 -0
- package/ios/crsqlite.xcframework/ios-arm64/crsqlite.framework/crsqlite +0 -0
- package/ios/crsqlite.xcframework/ios-arm64_x86_64-simulator/crsqlite.framework/Info.plist +18 -0
- package/ios/crsqlite.xcframework/ios-arm64_x86_64-simulator/crsqlite.framework/crsqlite +0 -0
- package/lib/commonjs/NativeOPSQLite.js +1 -2
- package/lib/commonjs/NativeOPSQLite.js.map +1 -1
- package/lib/commonjs/index.js +33 -15
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/NativeOPSQLite.js.map +1 -1
- package/lib/module/index.js +31 -12
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/{NativeOPSQLite.d.ts → src/NativeOPSQLite.d.ts} +1 -1
- package/lib/typescript/src/NativeOPSQLite.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/op-sqlite.podspec +53 -11
- package/package.json +4 -11
- package/src/NativeOPSQLite.ts +1 -1
- package/src/index.ts +16 -20
- package/lib/typescript/NativeOPSQLite.d.ts.map +0 -1
- package/lib/typescript/index.d.ts.map +0 -1
- /package/lib/typescript/{index.d.ts → src/index.d.ts} +0 -0
package/op-sqlite.podspec
CHANGED
|
@@ -8,6 +8,36 @@ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
|
8
8
|
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
|
|
9
9
|
fabric_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1'
|
|
10
10
|
|
|
11
|
+
parent_folder_name = File.basename(__dir__)
|
|
12
|
+
app_package = nil
|
|
13
|
+
# for development purposes on user machines the podspec should be able to read the package.json from the root folder
|
|
14
|
+
# since it lives inside node_modules/@op-engineering/op-sqlite
|
|
15
|
+
if parent_folder_name == "op-sqlite"
|
|
16
|
+
app_package = JSON.parse(File.read(File.join(__dir__, "example", "package.json")))
|
|
17
|
+
else
|
|
18
|
+
app_package = JSON.parse(File.read(File.join(__dir__, "..", "..", "package.json")))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
op_sqlite_config = app_package["op-sqlite"]
|
|
22
|
+
use_sqlcipher = false
|
|
23
|
+
use_crsqlite = false
|
|
24
|
+
performance_mode = "0"
|
|
25
|
+
phone_version = false
|
|
26
|
+
sqlite_flags = ""
|
|
27
|
+
|
|
28
|
+
if(op_sqlite_config != nil)
|
|
29
|
+
use_sqlcipher = op_sqlite_config["sqlcipher"] == true
|
|
30
|
+
use_crsqlite = op_sqlite_config["crsqlite"] == true
|
|
31
|
+
performance_mode = op_sqlite_config["performanceMode"] || "0"
|
|
32
|
+
phone_version = op_sqlite_config["iosSqlite"] == true
|
|
33
|
+
sqlite_flags = op_sqlite_config["sqliteFlags"] || ""
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
if phone_version && use_sqlcipher
|
|
37
|
+
raise "Cannot use phone embedded version and SQLCipher. SQLCipher needs to be compiled from sources with the project."
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
|
|
11
41
|
Pod::Spec.new do |s|
|
|
12
42
|
s.name = "op-sqlite"
|
|
13
43
|
s.version = package["version"]
|
|
@@ -19,7 +49,6 @@ Pod::Spec.new do |s|
|
|
|
19
49
|
s.platforms = { :ios => "13.0", :osx => "10.15" }
|
|
20
50
|
s.source = { :git => "https://github.com/op-engineering/op-sqlite.git", :tag => "#{s.version}" }
|
|
21
51
|
|
|
22
|
-
# s.header_mappings_dir = "cpp"
|
|
23
52
|
s.source_files = "ios/**/*.{h,m,mm}", "cpp/**/*.{h,cpp,c}"
|
|
24
53
|
|
|
25
54
|
xcconfig = {
|
|
@@ -28,14 +57,16 @@ Pod::Spec.new do |s|
|
|
|
28
57
|
:USE_HEADERMAP => "No",
|
|
29
58
|
:CLANG_CXX_LANGUAGE_STANDARD => "c++17",
|
|
30
59
|
}
|
|
60
|
+
|
|
61
|
+
log_message.call("[OP-SQLITE] Configuration:")
|
|
31
62
|
|
|
32
|
-
if
|
|
33
|
-
log_message.call("[OP-SQLITE] using SQLCipher
|
|
63
|
+
if use_sqlcipher then
|
|
64
|
+
log_message.call("[OP-SQLITE] using SQLCipher 🔒")
|
|
34
65
|
s.exclude_files = "cpp/sqlite3.c", "cpp/sqlite3.h"
|
|
35
66
|
xcconfig[:GCC_PREPROCESSOR_DEFINITIONS] += " OP_SQLITE_USE_SQLCIPHER=1 HAVE_FULLFSYNC=1 SQLITE_HAS_CODEC SQLITE_TEMP_STORE=2"
|
|
36
67
|
s.dependency "OpenSSL-Universal"
|
|
37
68
|
else
|
|
38
|
-
log_message.call("[OP-SQLITE] using vanilla SQLite
|
|
69
|
+
log_message.call("[OP-SQLITE] using vanilla SQLite 📦")
|
|
39
70
|
s.exclude_files = "cpp/sqlcipher/sqlite3.c", "cpp/sqlcipher/sqlite3.h"
|
|
40
71
|
end
|
|
41
72
|
|
|
@@ -51,23 +82,34 @@ Pod::Spec.new do |s|
|
|
|
51
82
|
|
|
52
83
|
optimizedCflags = other_cflags + '$(inherited) -DSQLITE_DQS=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DEPRECATED=1 -DSQLITE_OMIT_PROGRESS_CALLBACK=1 -DSQLITE_OMIT_SHARED_CACHE=1 -DSQLITE_USE_ALLOCA=1'
|
|
53
84
|
|
|
54
|
-
|
|
55
|
-
|
|
85
|
+
|
|
86
|
+
if phone_version then
|
|
87
|
+
log_message.call("[OP-SQLITE] using iOS embedded SQLite 📱")
|
|
56
88
|
xcconfig[:GCC_PREPROCESSOR_DEFINITIONS] += " OP_SQLITE_USE_PHONE_VERSION=1"
|
|
57
89
|
s.exclude_files = "cpp/sqlite3.c", "cpp/sqlite3.h"
|
|
58
90
|
s.library = "sqlite3"
|
|
59
91
|
end
|
|
60
92
|
|
|
61
|
-
if
|
|
62
|
-
log_message.call("[OP-SQLITE] performance mode enabled!
|
|
93
|
+
if performance_mode == '1' then
|
|
94
|
+
log_message.call("[OP-SQLITE] Thread unsafe (1) performance mode enabled. Use only transactions! 🚀🚀")
|
|
63
95
|
xcconfig[:OTHER_CFLAGS] = optimizedCflags + ' -DSQLITE_THREADSAFE=0 '
|
|
64
96
|
end
|
|
65
97
|
|
|
66
|
-
if
|
|
67
|
-
log_message.call("[OP-SQLITE]
|
|
98
|
+
if performance_mode == '2' then
|
|
99
|
+
log_message.call("[OP-SQLITE] Thread safe (2) performance mode enabled 🚀")
|
|
68
100
|
xcconfig[:OTHER_CFLAGS] = optimizedCflags + ' -DSQLITE_THREADSAFE=1 '
|
|
69
101
|
end
|
|
70
102
|
|
|
103
|
+
if use_crsqlite then
|
|
104
|
+
log_message.call("[OP-SQLITE] using CRQSQLite 🤖")
|
|
105
|
+
xcconfig[:GCC_PREPROCESSOR_DEFINITIONS] += " OP_SQLITE_USE_CRSQLITE=1"
|
|
106
|
+
s.vendored_frameworks = "ios/crsqlite.xcframework"
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
if sqlite_flags != "" then
|
|
110
|
+
log_message.call("[OP-SQLITE] Custom SQLite flags: #{sqlite_flags}")
|
|
111
|
+
xcconfig[:OTHER_CFLAGS] += " #{sqlite_flags}"
|
|
112
|
+
end
|
|
113
|
+
|
|
71
114
|
s.pod_target_xcconfig = xcconfig
|
|
72
|
-
|
|
73
115
|
end
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@op-engineering/op-sqlite",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Next generation SQLite for React Native",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
7
|
-
"types": "lib/typescript/index.d.ts",
|
|
7
|
+
"types": "lib/typescript/src/index.d.ts",
|
|
8
8
|
"react-native": "src/index",
|
|
9
9
|
"source": "src/index",
|
|
10
10
|
"files": [
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
"ios",
|
|
15
15
|
"cpp",
|
|
16
16
|
"op-sqlite.podspec",
|
|
17
|
+
"crsqlite.xcframework",
|
|
17
18
|
"!lib/typescript/example",
|
|
18
19
|
"!android/build",
|
|
19
20
|
"!android/.cxx",
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
"devDependencies": {
|
|
49
50
|
"lefthook": "^1.5.5",
|
|
50
51
|
"react": "18.2.0",
|
|
51
|
-
"react-native": "0.
|
|
52
|
+
"react-native": "0.74.0-rc.6",
|
|
52
53
|
"react-native-builder-bob": "^0.23.2",
|
|
53
54
|
"turbo": "^1.12.4",
|
|
54
55
|
"typescript": "5.0.4"
|
|
@@ -57,14 +58,6 @@
|
|
|
57
58
|
"react": "*",
|
|
58
59
|
"react-native": "*"
|
|
59
60
|
},
|
|
60
|
-
"codegenConfig": {
|
|
61
|
-
"name": "OPSQLiteSpec",
|
|
62
|
-
"type": "modules",
|
|
63
|
-
"jsSrcsDir": "src",
|
|
64
|
-
"android": {
|
|
65
|
-
"javaPackageName": "com.op.sqlite"
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
61
|
"workspaces": [
|
|
69
62
|
"example"
|
|
70
63
|
],
|
package/src/NativeOPSQLite.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import NativeOPSQLite from './NativeOPSQLite';
|
|
1
|
+
// import NativeOPSQLite from './NativeOPSQLite';
|
|
2
|
+
import { NativeModules } from 'react-native';
|
|
2
3
|
|
|
3
4
|
declare global {
|
|
4
5
|
function nativeCallSyncHook(): unknown;
|
|
@@ -6,21 +7,21 @@ declare global {
|
|
|
6
7
|
}
|
|
7
8
|
|
|
8
9
|
if (global.__OPSQLiteProxy == null) {
|
|
9
|
-
if (
|
|
10
|
+
if (NativeModules.OPSQLite == null) {
|
|
10
11
|
throw new Error('Base module not found. Maybe try rebuilding the app.');
|
|
11
12
|
}
|
|
12
13
|
|
|
13
|
-
if (
|
|
14
|
+
if (NativeModules.OPSQLite.install == null) {
|
|
14
15
|
throw new Error(
|
|
15
16
|
'Failed to install op-sqlite: React Native is not running on-device. OPSQLite can only be used when synchronous method invocations (JSI) are possible. If you are using a remote debugger (e.g. Chrome), switch to an on-device debugger (e.g. Flipper) instead.'
|
|
16
17
|
);
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
// Call the synchronous blocking install() function
|
|
20
|
-
const result =
|
|
21
|
+
const result = NativeModules.OPSQLite.install();
|
|
21
22
|
if (result !== true) {
|
|
22
23
|
throw new Error(
|
|
23
|
-
`Failed to install op-sqlite: The native OPSQLite Module could not be installed! Looks like something went wrong when installing JSI bindings
|
|
24
|
+
`Failed to install op-sqlite: The native OPSQLite Module could not be installed! Looks like something went wrong when installing JSI bindings, check the native logs for more info`
|
|
24
25
|
);
|
|
25
26
|
}
|
|
26
27
|
|
|
@@ -36,19 +37,14 @@ const proxy = global.__OPSQLiteProxy;
|
|
|
36
37
|
export const OPSQLite = proxy as ISQLite;
|
|
37
38
|
|
|
38
39
|
export const {
|
|
39
|
-
// @ts-expect-error
|
|
40
40
|
IOS_DOCUMENT_PATH,
|
|
41
|
-
// @ts-expect-error
|
|
42
41
|
IOS_LIBRARY_PATH,
|
|
43
|
-
// @ts-expect-error
|
|
44
42
|
ANDROID_DATABASE_PATH,
|
|
45
|
-
// @ts-expect-error
|
|
46
43
|
ANDROID_FILES_PATH,
|
|
47
|
-
// @ts-expect-error
|
|
48
44
|
ANDROID_EXTERNAL_FILES_PATH,
|
|
49
|
-
} = !!
|
|
50
|
-
?
|
|
51
|
-
:
|
|
45
|
+
} = !!NativeModules.OPSQLite.getConstants
|
|
46
|
+
? NativeModules.OPSQLite.getConstants()
|
|
47
|
+
: NativeModules.OPSQLite;
|
|
52
48
|
|
|
53
49
|
/**
|
|
54
50
|
* Object returned by SQL Query executions {
|
|
@@ -358,7 +354,7 @@ OPSQLite.transaction = async (
|
|
|
358
354
|
|
|
359
355
|
throw executionError;
|
|
360
356
|
} finally {
|
|
361
|
-
locks[dbName]
|
|
357
|
+
locks[dbName]!.inProgress = false;
|
|
362
358
|
isFinalized = false;
|
|
363
359
|
startNextTransaction(dbName);
|
|
364
360
|
}
|
|
@@ -371,7 +367,7 @@ OPSQLite.transaction = async (
|
|
|
371
367
|
},
|
|
372
368
|
};
|
|
373
369
|
|
|
374
|
-
locks[dbName]
|
|
370
|
+
locks[dbName]!.queue.push(tx);
|
|
375
371
|
startNextTransaction(dbName);
|
|
376
372
|
});
|
|
377
373
|
};
|
|
@@ -381,14 +377,14 @@ const startNextTransaction = (dbName: string) => {
|
|
|
381
377
|
throw Error(`Lock not found for db: ${dbName}`);
|
|
382
378
|
}
|
|
383
379
|
|
|
384
|
-
if (locks[dbName]
|
|
380
|
+
if (locks[dbName]!.inProgress) {
|
|
385
381
|
// Transaction is already in process bail out
|
|
386
382
|
return;
|
|
387
383
|
}
|
|
388
384
|
|
|
389
|
-
if (locks[dbName]
|
|
390
|
-
locks[dbName]
|
|
391
|
-
const tx = locks[dbName]
|
|
385
|
+
if (locks[dbName]!.queue.length) {
|
|
386
|
+
locks[dbName]!.inProgress = true;
|
|
387
|
+
const tx = locks[dbName]!.queue.shift();
|
|
392
388
|
|
|
393
389
|
if (!tx) {
|
|
394
390
|
throw new Error('Could not get a operation on datebase');
|
|
@@ -472,5 +468,5 @@ export const moveAssetsDatabase = (
|
|
|
472
468
|
dbName: string,
|
|
473
469
|
extension: string
|
|
474
470
|
): boolean => {
|
|
475
|
-
return
|
|
471
|
+
return NativeModules.OPSQLite.moveAssetsDatabase(dbName, extension);
|
|
476
472
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NativeOPSQLite.d.ts","sourceRoot":"","sources":["../../src/NativeOPSQLite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,YAAY,EAAE,MAAM;QAClB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,2BAA2B,EAAE,MAAM,CAAC;KACrC,CAAC;IAEF,OAAO,IAAI,OAAO,CAAC;IAEnB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CAC9D;;AAED,wBAAkE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|