@op-engineering/op-sqlite 11.2.11 → 11.2.12
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/lib/commonjs/index.js +70 -54
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +69 -53
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +171 -32
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +254 -99
package/lib/commonjs/index.js
CHANGED
|
@@ -5,35 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.openSync = exports.openRemote = exports.open = exports.moveAssetsDatabase = exports.isSQLCipher = exports.isLibsql = exports.isIOSEmbeeded = exports.getDylibPath = exports.OPSQLite = exports.IOS_LIBRARY_PATH = exports.IOS_DOCUMENT_PATH = exports.ANDROID_FILES_PATH = exports.ANDROID_EXTERNAL_FILES_PATH = exports.ANDROID_DATABASE_PATH = void 0;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
|
-
if (global.__OPSQLiteProxy == null) {
|
|
9
|
-
if (_reactNative.NativeModules.OPSQLite == null) {
|
|
10
|
-
throw new Error('Base module not found. Maybe try rebuilding the app.');
|
|
11
|
-
}
|
|
12
|
-
if (_reactNative.NativeModules.OPSQLite.install == null) {
|
|
13
|
-
throw new Error('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.');
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// Call the synchronous blocking install() function
|
|
17
|
-
const result = _reactNative.NativeModules.OPSQLite.install();
|
|
18
|
-
if (result !== true) {
|
|
19
|
-
throw new Error(`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`);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Check again if the constructor now exists. If not, throw an error.
|
|
23
|
-
if (global.__OPSQLiteProxy == null) {
|
|
24
|
-
throw new Error('Failed to install op-sqlite, the native initializer function does not exist. Are you trying to use OPSQLite from different JS Runtimes?');
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
const proxy = global.__OPSQLiteProxy;
|
|
28
|
-
const OPSQLite = exports.OPSQLite = proxy;
|
|
29
|
-
const {
|
|
30
|
-
IOS_DOCUMENT_PATH,
|
|
31
|
-
IOS_LIBRARY_PATH,
|
|
32
|
-
ANDROID_DATABASE_PATH,
|
|
33
|
-
ANDROID_FILES_PATH,
|
|
34
|
-
ANDROID_EXTERNAL_FILES_PATH
|
|
35
|
-
} = !!_reactNative.NativeModules.OPSQLite.getConstants ? _reactNative.NativeModules.OPSQLite.getConstants() : _reactNative.NativeModules.OPSQLite;
|
|
36
|
-
|
|
37
8
|
/**
|
|
38
9
|
* Object returned by SQL Query executions {
|
|
39
10
|
* insertId: Represent the auto-generated row id if applicable
|
|
@@ -67,12 +38,37 @@ const {
|
|
|
67
38
|
* Result of loading a file and executing every line as a SQL command
|
|
68
39
|
* Similar to BatchQueryResult
|
|
69
40
|
*/
|
|
41
|
+
|
|
42
|
+
if (global.__OPSQLiteProxy == null) {
|
|
43
|
+
if (_reactNative.NativeModules.OPSQLite == null) {
|
|
44
|
+
throw new Error('Base module not found. Did you do a pod install/clear the gradle cache?');
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Call the synchronous blocking install() function
|
|
48
|
+
const installed = _reactNative.NativeModules.OPSQLite.install();
|
|
49
|
+
if (!installed) {
|
|
50
|
+
throw new Error(`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`);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Check again if the constructor now exists. If not, throw an error.
|
|
54
|
+
if (global.__OPSQLiteProxy == null) {
|
|
55
|
+
throw new Error('OPSqlite native object is not available. Something is wrong. Check the native logs for more information.');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const proxy = global.__OPSQLiteProxy;
|
|
59
|
+
const OPSQLite = exports.OPSQLite = proxy;
|
|
60
|
+
const {
|
|
61
|
+
IOS_DOCUMENT_PATH,
|
|
62
|
+
IOS_LIBRARY_PATH,
|
|
63
|
+
ANDROID_DATABASE_PATH,
|
|
64
|
+
ANDROID_FILES_PATH,
|
|
65
|
+
ANDROID_EXTERNAL_FILES_PATH
|
|
66
|
+
} = !!_reactNative.NativeModules.OPSQLite.getConstants ? _reactNative.NativeModules.OPSQLite.getConstants() : _reactNative.NativeModules.OPSQLite;
|
|
70
67
|
exports.ANDROID_EXTERNAL_FILES_PATH = ANDROID_EXTERNAL_FILES_PATH;
|
|
71
68
|
exports.ANDROID_FILES_PATH = ANDROID_FILES_PATH;
|
|
72
69
|
exports.ANDROID_DATABASE_PATH = ANDROID_DATABASE_PATH;
|
|
73
70
|
exports.IOS_LIBRARY_PATH = IOS_LIBRARY_PATH;
|
|
74
71
|
exports.IOS_DOCUMENT_PATH = IOS_DOCUMENT_PATH;
|
|
75
|
-
const locks = {};
|
|
76
72
|
function enhanceDB(db, options) {
|
|
77
73
|
const lock = {
|
|
78
74
|
queue: [],
|
|
@@ -95,7 +91,8 @@ function enhanceDB(db, options) {
|
|
|
95
91
|
}
|
|
96
92
|
};
|
|
97
93
|
|
|
98
|
-
// spreading the object
|
|
94
|
+
// spreading the object does not work with HostObjects (db)
|
|
95
|
+
// We need to manually assign the fields
|
|
99
96
|
let enhancedDb = {
|
|
100
97
|
delete: db.delete,
|
|
101
98
|
attach: db.attach,
|
|
@@ -110,11 +107,7 @@ function enhanceDB(db, options) {
|
|
|
110
107
|
getDbPath: db.getDbPath,
|
|
111
108
|
reactiveExecute: db.reactiveExecute,
|
|
112
109
|
sync: db.sync,
|
|
113
|
-
|
|
114
|
-
close: () => {
|
|
115
|
-
db.close();
|
|
116
|
-
delete locks[options.url];
|
|
117
|
-
},
|
|
110
|
+
close: db.close,
|
|
118
111
|
executeWithHostObjects: async (query, params) => {
|
|
119
112
|
const sanitizedParams = params?.map(p => {
|
|
120
113
|
if (ArrayBuffer.isView(p)) {
|
|
@@ -195,22 +188,22 @@ function enhanceDB(db, options) {
|
|
|
195
188
|
let isFinalized = false;
|
|
196
189
|
const execute = async (query, params) => {
|
|
197
190
|
if (isFinalized) {
|
|
198
|
-
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
191
|
+
throw Error(`OP-Sqlite Error: Database: ${options.name || options.url}. Cannot execute query on finalized transaction`);
|
|
199
192
|
}
|
|
200
193
|
return await enhancedDb.execute(query, params);
|
|
201
194
|
};
|
|
202
195
|
const commit = async () => {
|
|
203
196
|
if (isFinalized) {
|
|
204
|
-
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
197
|
+
throw Error(`OP-Sqlite Error: Database: ${options.name || options.url}. Cannot execute query on finalized transaction`);
|
|
205
198
|
}
|
|
206
199
|
const result = await enhancedDb.execute('COMMIT;');
|
|
207
|
-
await
|
|
200
|
+
await db.flushPendingReactiveQueries();
|
|
208
201
|
isFinalized = true;
|
|
209
202
|
return result;
|
|
210
203
|
};
|
|
211
204
|
const rollback = async () => {
|
|
212
205
|
if (isFinalized) {
|
|
213
|
-
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
206
|
+
throw Error(`OP-Sqlite Error: Database: ${options.name || options.url}. Cannot execute query on finalized transaction`);
|
|
214
207
|
}
|
|
215
208
|
const result = await enhancedDb.execute('ROLLBACK;');
|
|
216
209
|
isFinalized = true;
|
|
@@ -228,7 +221,6 @@ function enhanceDB(db, options) {
|
|
|
228
221
|
await commit();
|
|
229
222
|
}
|
|
230
223
|
} catch (executionError) {
|
|
231
|
-
// console.warn('transaction error', executionError);
|
|
232
224
|
if (!isFinalized) {
|
|
233
225
|
try {
|
|
234
226
|
await rollback();
|
|
@@ -257,44 +249,68 @@ function enhanceDB(db, options) {
|
|
|
257
249
|
return enhancedDb;
|
|
258
250
|
}
|
|
259
251
|
|
|
260
|
-
/**
|
|
252
|
+
/**
|
|
253
|
+
* Open a replicating connection via libsql to a turso db
|
|
261
254
|
* libsql needs to be enabled on your package.json
|
|
262
255
|
*/
|
|
263
|
-
const openSync =
|
|
256
|
+
const openSync = params => {
|
|
264
257
|
if (!isLibsql()) {
|
|
265
258
|
throw new Error('This function is only available for libsql');
|
|
266
259
|
}
|
|
267
|
-
const db = OPSQLite.openSync(
|
|
268
|
-
const enhancedDb = enhanceDB(db,
|
|
260
|
+
const db = OPSQLite.openSync(params);
|
|
261
|
+
const enhancedDb = enhanceDB(db, params);
|
|
269
262
|
return enhancedDb;
|
|
270
263
|
};
|
|
271
264
|
|
|
272
|
-
/**
|
|
265
|
+
/**
|
|
266
|
+
* Open a remote connection via libsql to a turso db
|
|
273
267
|
* libsql needs to be enabled on your package.json
|
|
274
268
|
*/
|
|
275
269
|
exports.openSync = openSync;
|
|
276
|
-
const openRemote =
|
|
270
|
+
const openRemote = params => {
|
|
277
271
|
if (!isLibsql()) {
|
|
278
272
|
throw new Error('This function is only available for libsql');
|
|
279
273
|
}
|
|
280
|
-
const db = OPSQLite.openRemote(
|
|
281
|
-
const enhancedDb = enhanceDB(db,
|
|
274
|
+
const db = OPSQLite.openRemote(params);
|
|
275
|
+
const enhancedDb = enhanceDB(db, params);
|
|
282
276
|
return enhancedDb;
|
|
283
277
|
};
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Open a connection to a local sqlite or sqlcipher database
|
|
281
|
+
* If you want libsql remote or sync connections, use openSync or openRemote
|
|
282
|
+
*/
|
|
284
283
|
exports.openRemote = openRemote;
|
|
285
|
-
const open =
|
|
286
|
-
if (
|
|
284
|
+
const open = params => {
|
|
285
|
+
if (params.location?.startsWith('file://')) {
|
|
287
286
|
console.warn("[op-sqlite] You are passing a path with 'file://' prefix, it's automatically removed");
|
|
288
|
-
|
|
287
|
+
params.location = params.location.substring(7);
|
|
289
288
|
}
|
|
290
|
-
const db = OPSQLite.open(
|
|
291
|
-
const enhancedDb = enhanceDB(db,
|
|
289
|
+
const db = OPSQLite.open(params);
|
|
290
|
+
const enhancedDb = enhanceDB(db, params);
|
|
292
291
|
return enhancedDb;
|
|
293
292
|
};
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Moves the database from the assets folder to the default path (check the docs) or to a custom path
|
|
296
|
+
* It DOES NOT OVERWRITE the database if it already exists in the destination path
|
|
297
|
+
* if you want to overwrite the database, you need to pass the overwrite flag as true
|
|
298
|
+
* @param args object with the parameters for the operaiton
|
|
299
|
+
* @returns promise, rejects if failed to move the database, resolves if the operation was successful
|
|
300
|
+
*/
|
|
294
301
|
exports.open = open;
|
|
295
302
|
const moveAssetsDatabase = async args => {
|
|
296
303
|
return _reactNative.NativeModules.OPSQLite.moveAssetsDatabase(args);
|
|
297
304
|
};
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Used to load a dylib file that contains a sqlite 3 extension/plugin
|
|
308
|
+
* It returns the raw path to the actual file which then needs to be passed to the loadExtension function
|
|
309
|
+
* Check the docs for more information
|
|
310
|
+
* @param bundle the iOS bundle identifier of the .framework
|
|
311
|
+
* @param name the file name of the dylib file
|
|
312
|
+
* @returns
|
|
313
|
+
*/
|
|
298
314
|
exports.moveAssetsDatabase = moveAssetsDatabase;
|
|
299
315
|
const getDylibPath = (bundle, name) => {
|
|
300
316
|
return _reactNative.NativeModules.OPSQLite.getDylibPath(bundle, name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","global","__OPSQLiteProxy","NativeModules","OPSQLite","Error","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","global","__OPSQLiteProxy","NativeModules","OPSQLite","Error","installed","install","proxy","exports","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","enhanceDB","db","options","lock","queue","inProgress","startNextTransaction","length","tx","shift","setImmediate","start","enhancedDb","delete","attach","detach","executeBatch","loadFile","updateHook","commitHook","rollbackHook","loadExtension","executeRaw","getDbPath","reactiveExecute","sync","close","executeWithHostObjects","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","executeSync","intermediateResult","rows","i","rawRows","row","rawRow","j","columnNames","columnName","value","push","res","execute","prepareStatement","stmt","bind","transaction","fn","isFinalized","name","url","commit","result","flushPendingReactiveQueries","rollback","run","executionError","rollbackError","Promise","resolve","reject","then","catch","openSync","isLibsql","openRemote","open","location","startsWith","console","warn","substring","moveAssetsDatabase","args","getDylibPath","bundle","isSQLCipher","isIOSEmbeeded","Platform","OS","isIOSEmbedded"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -1,32 +1,4 @@
|
|
|
1
1
|
import { NativeModules, Platform } from 'react-native';
|
|
2
|
-
if (global.__OPSQLiteProxy == null) {
|
|
3
|
-
if (NativeModules.OPSQLite == null) {
|
|
4
|
-
throw new Error('Base module not found. Maybe try rebuilding the app.');
|
|
5
|
-
}
|
|
6
|
-
if (NativeModules.OPSQLite.install == null) {
|
|
7
|
-
throw new Error('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.');
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
// Call the synchronous blocking install() function
|
|
11
|
-
const result = NativeModules.OPSQLite.install();
|
|
12
|
-
if (result !== true) {
|
|
13
|
-
throw new Error(`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`);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// Check again if the constructor now exists. If not, throw an error.
|
|
17
|
-
if (global.__OPSQLiteProxy == null) {
|
|
18
|
-
throw new Error('Failed to install op-sqlite, the native initializer function does not exist. Are you trying to use OPSQLite from different JS Runtimes?');
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
const proxy = global.__OPSQLiteProxy;
|
|
22
|
-
export const OPSQLite = proxy;
|
|
23
|
-
export const {
|
|
24
|
-
IOS_DOCUMENT_PATH,
|
|
25
|
-
IOS_LIBRARY_PATH,
|
|
26
|
-
ANDROID_DATABASE_PATH,
|
|
27
|
-
ANDROID_FILES_PATH,
|
|
28
|
-
ANDROID_EXTERNAL_FILES_PATH
|
|
29
|
-
} = !!NativeModules.OPSQLite.getConstants ? NativeModules.OPSQLite.getConstants() : NativeModules.OPSQLite;
|
|
30
2
|
|
|
31
3
|
/**
|
|
32
4
|
* Object returned by SQL Query executions {
|
|
@@ -62,7 +34,31 @@ export const {
|
|
|
62
34
|
* Similar to BatchQueryResult
|
|
63
35
|
*/
|
|
64
36
|
|
|
65
|
-
|
|
37
|
+
if (global.__OPSQLiteProxy == null) {
|
|
38
|
+
if (NativeModules.OPSQLite == null) {
|
|
39
|
+
throw new Error('Base module not found. Did you do a pod install/clear the gradle cache?');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Call the synchronous blocking install() function
|
|
43
|
+
const installed = NativeModules.OPSQLite.install();
|
|
44
|
+
if (!installed) {
|
|
45
|
+
throw new Error(`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`);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Check again if the constructor now exists. If not, throw an error.
|
|
49
|
+
if (global.__OPSQLiteProxy == null) {
|
|
50
|
+
throw new Error('OPSqlite native object is not available. Something is wrong. Check the native logs for more information.');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const proxy = global.__OPSQLiteProxy;
|
|
54
|
+
export const OPSQLite = proxy;
|
|
55
|
+
export const {
|
|
56
|
+
IOS_DOCUMENT_PATH,
|
|
57
|
+
IOS_LIBRARY_PATH,
|
|
58
|
+
ANDROID_DATABASE_PATH,
|
|
59
|
+
ANDROID_FILES_PATH,
|
|
60
|
+
ANDROID_EXTERNAL_FILES_PATH
|
|
61
|
+
} = !!NativeModules.OPSQLite.getConstants ? NativeModules.OPSQLite.getConstants() : NativeModules.OPSQLite;
|
|
66
62
|
function enhanceDB(db, options) {
|
|
67
63
|
const lock = {
|
|
68
64
|
queue: [],
|
|
@@ -85,7 +81,8 @@ function enhanceDB(db, options) {
|
|
|
85
81
|
}
|
|
86
82
|
};
|
|
87
83
|
|
|
88
|
-
// spreading the object
|
|
84
|
+
// spreading the object does not work with HostObjects (db)
|
|
85
|
+
// We need to manually assign the fields
|
|
89
86
|
let enhancedDb = {
|
|
90
87
|
delete: db.delete,
|
|
91
88
|
attach: db.attach,
|
|
@@ -100,11 +97,7 @@ function enhanceDB(db, options) {
|
|
|
100
97
|
getDbPath: db.getDbPath,
|
|
101
98
|
reactiveExecute: db.reactiveExecute,
|
|
102
99
|
sync: db.sync,
|
|
103
|
-
|
|
104
|
-
close: () => {
|
|
105
|
-
db.close();
|
|
106
|
-
delete locks[options.url];
|
|
107
|
-
},
|
|
100
|
+
close: db.close,
|
|
108
101
|
executeWithHostObjects: async (query, params) => {
|
|
109
102
|
const sanitizedParams = params?.map(p => {
|
|
110
103
|
if (ArrayBuffer.isView(p)) {
|
|
@@ -185,22 +178,22 @@ function enhanceDB(db, options) {
|
|
|
185
178
|
let isFinalized = false;
|
|
186
179
|
const execute = async (query, params) => {
|
|
187
180
|
if (isFinalized) {
|
|
188
|
-
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
181
|
+
throw Error(`OP-Sqlite Error: Database: ${options.name || options.url}. Cannot execute query on finalized transaction`);
|
|
189
182
|
}
|
|
190
183
|
return await enhancedDb.execute(query, params);
|
|
191
184
|
};
|
|
192
185
|
const commit = async () => {
|
|
193
186
|
if (isFinalized) {
|
|
194
|
-
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
187
|
+
throw Error(`OP-Sqlite Error: Database: ${options.name || options.url}. Cannot execute query on finalized transaction`);
|
|
195
188
|
}
|
|
196
189
|
const result = await enhancedDb.execute('COMMIT;');
|
|
197
|
-
await
|
|
190
|
+
await db.flushPendingReactiveQueries();
|
|
198
191
|
isFinalized = true;
|
|
199
192
|
return result;
|
|
200
193
|
};
|
|
201
194
|
const rollback = async () => {
|
|
202
195
|
if (isFinalized) {
|
|
203
|
-
throw Error(`OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`);
|
|
196
|
+
throw Error(`OP-Sqlite Error: Database: ${options.name || options.url}. Cannot execute query on finalized transaction`);
|
|
204
197
|
}
|
|
205
198
|
const result = await enhancedDb.execute('ROLLBACK;');
|
|
206
199
|
isFinalized = true;
|
|
@@ -218,7 +211,6 @@ function enhanceDB(db, options) {
|
|
|
218
211
|
await commit();
|
|
219
212
|
}
|
|
220
213
|
} catch (executionError) {
|
|
221
|
-
// console.warn('transaction error', executionError);
|
|
222
214
|
if (!isFinalized) {
|
|
223
215
|
try {
|
|
224
216
|
await rollback();
|
|
@@ -247,41 +239,65 @@ function enhanceDB(db, options) {
|
|
|
247
239
|
return enhancedDb;
|
|
248
240
|
}
|
|
249
241
|
|
|
250
|
-
/**
|
|
242
|
+
/**
|
|
243
|
+
* Open a replicating connection via libsql to a turso db
|
|
251
244
|
* libsql needs to be enabled on your package.json
|
|
252
245
|
*/
|
|
253
|
-
export const openSync =
|
|
246
|
+
export const openSync = params => {
|
|
254
247
|
if (!isLibsql()) {
|
|
255
248
|
throw new Error('This function is only available for libsql');
|
|
256
249
|
}
|
|
257
|
-
const db = OPSQLite.openSync(
|
|
258
|
-
const enhancedDb = enhanceDB(db,
|
|
250
|
+
const db = OPSQLite.openSync(params);
|
|
251
|
+
const enhancedDb = enhanceDB(db, params);
|
|
259
252
|
return enhancedDb;
|
|
260
253
|
};
|
|
261
254
|
|
|
262
|
-
/**
|
|
255
|
+
/**
|
|
256
|
+
* Open a remote connection via libsql to a turso db
|
|
263
257
|
* libsql needs to be enabled on your package.json
|
|
264
258
|
*/
|
|
265
|
-
export const openRemote =
|
|
259
|
+
export const openRemote = params => {
|
|
266
260
|
if (!isLibsql()) {
|
|
267
261
|
throw new Error('This function is only available for libsql');
|
|
268
262
|
}
|
|
269
|
-
const db = OPSQLite.openRemote(
|
|
270
|
-
const enhancedDb = enhanceDB(db,
|
|
263
|
+
const db = OPSQLite.openRemote(params);
|
|
264
|
+
const enhancedDb = enhanceDB(db, params);
|
|
271
265
|
return enhancedDb;
|
|
272
266
|
};
|
|
273
|
-
|
|
274
|
-
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Open a connection to a local sqlite or sqlcipher database
|
|
270
|
+
* If you want libsql remote or sync connections, use openSync or openRemote
|
|
271
|
+
*/
|
|
272
|
+
export const open = params => {
|
|
273
|
+
if (params.location?.startsWith('file://')) {
|
|
275
274
|
console.warn("[op-sqlite] You are passing a path with 'file://' prefix, it's automatically removed");
|
|
276
|
-
|
|
275
|
+
params.location = params.location.substring(7);
|
|
277
276
|
}
|
|
278
|
-
const db = OPSQLite.open(
|
|
279
|
-
const enhancedDb = enhanceDB(db,
|
|
277
|
+
const db = OPSQLite.open(params);
|
|
278
|
+
const enhancedDb = enhanceDB(db, params);
|
|
280
279
|
return enhancedDb;
|
|
281
280
|
};
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Moves the database from the assets folder to the default path (check the docs) or to a custom path
|
|
284
|
+
* It DOES NOT OVERWRITE the database if it already exists in the destination path
|
|
285
|
+
* if you want to overwrite the database, you need to pass the overwrite flag as true
|
|
286
|
+
* @param args object with the parameters for the operaiton
|
|
287
|
+
* @returns promise, rejects if failed to move the database, resolves if the operation was successful
|
|
288
|
+
*/
|
|
282
289
|
export const moveAssetsDatabase = async args => {
|
|
283
290
|
return NativeModules.OPSQLite.moveAssetsDatabase(args);
|
|
284
291
|
};
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Used to load a dylib file that contains a sqlite 3 extension/plugin
|
|
295
|
+
* It returns the raw path to the actual file which then needs to be passed to the loadExtension function
|
|
296
|
+
* Check the docs for more information
|
|
297
|
+
* @param bundle the iOS bundle identifier of the .framework
|
|
298
|
+
* @param name the file name of the dylib file
|
|
299
|
+
* @returns
|
|
300
|
+
*/
|
|
285
301
|
export const getDylibPath = (bundle, name) => {
|
|
286
302
|
return NativeModules.OPSQLite.getDylibPath(bundle, name);
|
|
287
303
|
};
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","global","__OPSQLiteProxy","OPSQLite","Error","
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","global","__OPSQLiteProxy","OPSQLite","Error","installed","install","proxy","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","enhanceDB","db","options","lock","queue","inProgress","startNextTransaction","length","tx","shift","setImmediate","start","enhancedDb","delete","attach","detach","executeBatch","loadFile","updateHook","commitHook","rollbackHook","loadExtension","executeRaw","getDbPath","reactiveExecute","sync","close","executeWithHostObjects","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","executeSync","intermediateResult","rows","i","rawRows","row","rawRow","j","columnNames","columnName","value","push","res","execute","prepareStatement","stmt","bind","transaction","fn","isFinalized","name","url","commit","result","flushPendingReactiveQueries","rollback","run","executionError","rollbackError","Promise","resolve","reject","then","catch","openSync","isLibsql","openRemote","open","location","startsWith","console","warn","substring","moveAssetsDatabase","args","getDylibPath","bundle","isSQLCipher","isIOSEmbeeded","OS","isIOSEmbedded"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|