@op-engineering/op-sqlite 7.4.0 → 8.0.0-beta0

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.
Files changed (38) hide show
  1. package/README.md +11 -3
  2. package/android/build.gradle +8 -0
  3. package/cpp/DBHostObject.cpp +101 -106
  4. package/cpp/PreparedStatementHostObject.cpp +39 -14
  5. package/cpp/PreparedStatementHostObject.h +17 -4
  6. package/cpp/bindings.cpp +5 -5
  7. package/cpp/bridge.cpp +206 -85
  8. package/cpp/bridge.h +9 -7
  9. package/cpp/libsql/bridge.cpp +212 -92
  10. package/cpp/libsql/bridge.h +7 -3
  11. package/cpp/macros.h +2 -2
  12. package/cpp/types.h +11 -8
  13. package/cpp/utils.cpp +43 -7
  14. package/cpp/utils.h +2 -0
  15. package/lib/commonjs/index.js +53 -30
  16. package/lib/commonjs/index.js.map +1 -1
  17. package/lib/commonjs/package.json +1 -0
  18. package/lib/module/NativeOPSQLite.js +2 -0
  19. package/lib/module/NativeOPSQLite.js.map +1 -1
  20. package/lib/module/index.js +55 -29
  21. package/lib/module/index.js.map +1 -1
  22. package/lib/module/package.json +1 -0
  23. package/lib/typescript/commonjs/package.json +1 -0
  24. package/lib/typescript/commonjs/src/NativeOPSQLite.d.ts.map +1 -0
  25. package/lib/typescript/{src → commonjs/src}/index.d.ts +11 -11
  26. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  27. package/lib/typescript/module/package.json +1 -0
  28. package/lib/typescript/module/src/NativeOPSQLite.d.ts +15 -0
  29. package/lib/typescript/module/src/NativeOPSQLite.d.ts.map +1 -0
  30. package/lib/typescript/module/src/index.d.ts +163 -0
  31. package/lib/typescript/module/src/index.d.ts.map +1 -0
  32. package/package.json +44 -14
  33. package/src/index.ts +80 -46
  34. package/android/.project +0 -17
  35. package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
  36. package/lib/typescript/src/NativeOPSQLite.d.ts.map +0 -1
  37. package/lib/typescript/src/index.d.ts.map +0 -1
  38. /package/lib/typescript/{src → commonjs/src}/NativeOPSQLite.d.ts +0 -0
@@ -0,0 +1,15 @@
1
+ import { type TurboModule } from 'react-native';
2
+ export interface Spec extends TurboModule {
3
+ getConstants: () => {
4
+ IOS_DOCUMENT_PATH: string;
5
+ IOS_LIBRARY_PATH: string;
6
+ ANDROID_DATABASE_PATH: string;
7
+ ANDROID_FILES_PATH: string;
8
+ ANDROID_EXTERNAL_FILES_PATH: string;
9
+ };
10
+ install(): boolean;
11
+ moveAssetsDatabase(name: string, extension: string): boolean;
12
+ }
13
+ declare const _default: Spec;
14
+ export default _default;
15
+ //# sourceMappingURL=NativeOPSQLite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeOPSQLite.d.ts","sourceRoot":"","sources":["../../../../src/NativeOPSQLite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,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"}
@@ -0,0 +1,163 @@
1
+ declare global {
2
+ function nativeCallSyncHook(): unknown;
3
+ var __OPSQLiteProxy: object | undefined;
4
+ }
5
+ export declare const OPSQLite: OPSQLiteProxy;
6
+ export declare const IOS_DOCUMENT_PATH: any, IOS_LIBRARY_PATH: any, ANDROID_DATABASE_PATH: any, ANDROID_FILES_PATH: any, ANDROID_EXTERNAL_FILES_PATH: any;
7
+ /**
8
+ * Object returned by SQL Query executions {
9
+ * insertId: Represent the auto-generated row id if applicable
10
+ * rowsAffected: Number of affected rows if result of a update query
11
+ * message: if status === 1, here you will find error description
12
+ * rows: if status is undefined or 0 this object will contain the query results
13
+ * }
14
+ *
15
+ * @interface QueryResult
16
+ */
17
+ export type QueryResult = {
18
+ insertId?: number;
19
+ rowsAffected: number;
20
+ res?: any[];
21
+ rows?: {
22
+ /** Raw array with all dataset */
23
+ _array: any[];
24
+ /** The length of the dataset */
25
+ length: number;
26
+ /** A convenience function to access the index based the row object
27
+ * @param idx the row index
28
+ * @returns the row structure identified by column names
29
+ */
30
+ item: (idx: number) => any;
31
+ };
32
+ rawRows?: any[];
33
+ columnNames?: string[];
34
+ /**
35
+ * Query metadata, available only for select query results
36
+ */
37
+ metadata?: ColumnMetadata[];
38
+ };
39
+ /**
40
+ * Column metadata
41
+ * Describes some information about columns fetched by the query
42
+ */
43
+ export type ColumnMetadata = {
44
+ /** The name used for this column for this result set */
45
+ name: string;
46
+ /** The declared column type for this column, when fetched directly from a table or a View resulting from a table column. "UNKNOWN" for dynamic values, like function returned ones. */
47
+ type: string;
48
+ /**
49
+ * The index for this column for this result set*/
50
+ index: number;
51
+ };
52
+ /**
53
+ * Allows the execution of bulk of sql commands
54
+ * inside a transaction
55
+ * If a single query must be executed many times with different arguments, its preferred
56
+ * to declare it a single time, and use an array of array parameters.
57
+ */
58
+ export type SQLBatchTuple = [string] | [string, Array<any> | Array<Array<any>>];
59
+ export type UpdateHookOperation = 'INSERT' | 'DELETE' | 'UPDATE';
60
+ /**
61
+ * status: 0 or undefined for correct execution, 1 for error
62
+ * message: if status === 1, here you will find error description
63
+ * rowsAffected: Number of affected rows if status == 0
64
+ */
65
+ export type BatchQueryResult = {
66
+ rowsAffected?: number;
67
+ };
68
+ /**
69
+ * Result of loading a file and executing every line as a SQL command
70
+ * Similar to BatchQueryResult
71
+ */
72
+ export interface FileLoadResult extends BatchQueryResult {
73
+ commands?: number;
74
+ }
75
+ export interface Transaction {
76
+ commit: () => Promise<QueryResult>;
77
+ execute: (query: string, params?: any[]) => Promise<QueryResult>;
78
+ rollback: () => Promise<QueryResult>;
79
+ }
80
+ export interface PendingTransaction {
81
+ start: () => void;
82
+ }
83
+ export type PreparedStatementObj = {
84
+ bind: (params: any[]) => void;
85
+ execute: () => Promise<QueryResult>;
86
+ };
87
+ export type DB = {
88
+ close: () => void;
89
+ delete: (location?: string) => void;
90
+ attach: (mainDbName: string, dbNameToAttach: string, alias: string, location?: string) => void;
91
+ detach: (mainDbName: string, alias: string) => void;
92
+ transaction: (fn: (tx: Transaction) => Promise<void>) => Promise<void>;
93
+ execute: (query: string, params?: any[]) => Promise<QueryResult>;
94
+ executeWithHostObjects: (query: string, params?: any[]) => Promise<QueryResult>;
95
+ executeBatch: (commands: SQLBatchTuple[]) => Promise<BatchQueryResult>;
96
+ loadFile: (location: string) => Promise<FileLoadResult>;
97
+ updateHook: (callback?: ((params: {
98
+ table: string;
99
+ operation: UpdateHookOperation;
100
+ row?: any;
101
+ rowId: number;
102
+ }) => void) | null) => void;
103
+ commitHook: (callback?: (() => void) | null) => void;
104
+ rollbackHook: (callback?: (() => void) | null) => void;
105
+ prepareStatement: (query: string) => PreparedStatementObj;
106
+ loadExtension: (path: string, entryPoint?: string) => void;
107
+ executeRaw: (query: string, params?: any[]) => Promise<any[]>;
108
+ getDbPath: (location?: string) => string;
109
+ reactiveExecute: (params: {
110
+ query: string;
111
+ arguments: any[];
112
+ fireOn: {
113
+ table: string;
114
+ ids?: number[];
115
+ }[];
116
+ callback: (response: any) => void;
117
+ }) => () => void;
118
+ sync: () => void;
119
+ };
120
+ type OPSQLiteProxy = {
121
+ open: (options: {
122
+ name: string;
123
+ location?: string;
124
+ encryptionKey?: string;
125
+ }) => DB;
126
+ openRemote: (options: {
127
+ url: string;
128
+ authToken: string;
129
+ }) => DB;
130
+ openSync: (options: {
131
+ url: string;
132
+ authToken: string;
133
+ name: string;
134
+ location?: string;
135
+ }) => DB;
136
+ isSQLCipher: () => boolean;
137
+ isLibsql: () => boolean;
138
+ };
139
+ export declare const openSync: (options: {
140
+ url: string;
141
+ authToken: string;
142
+ name: string;
143
+ location?: string;
144
+ syncInterval?: number;
145
+ }) => DB;
146
+ export declare const openRemote: (options: {
147
+ url: string;
148
+ authToken: string;
149
+ }) => DB;
150
+ export declare const open: (options: {
151
+ name: string;
152
+ location?: string;
153
+ encryptionKey?: string;
154
+ }) => DB;
155
+ export declare const moveAssetsDatabase: (args: {
156
+ filename: string;
157
+ path?: string;
158
+ overwrite?: boolean;
159
+ }) => Promise<boolean>;
160
+ export declare const isSQLCipher: () => boolean;
161
+ export declare const isLibsql: () => boolean;
162
+ export {};
163
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,22 @@
1
1
  {
2
2
  "name": "@op-engineering/op-sqlite",
3
- "version": "7.4.0",
3
+ "version": "8.0.0-beta0",
4
4
  "description": "Next generation SQLite for React Native",
5
- "main": "lib/commonjs/index",
6
- "module": "lib/module/index",
7
- "types": "lib/typescript/src/index.d.ts",
8
- "react-native": "src/index",
9
- "source": "src/index",
5
+ "source": "./src/index.ts",
6
+ "main": "./lib/commonjs/index.js",
7
+ "module": "./lib/module/index.js",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./lib/typescript/module/src/index.d.ts",
12
+ "default": "./lib/module/index.js"
13
+ },
14
+ "require": {
15
+ "types": "./lib/typescript/commonjs/src/index.d.ts",
16
+ "default": "./lib/commonjs/index.js"
17
+ }
18
+ }
19
+ },
10
20
  "files": [
11
21
  "src",
12
22
  "lib",
@@ -19,11 +29,19 @@
19
29
  "!android/build",
20
30
  "!android/.cxx",
21
31
  "!ios/build",
32
+ "!android/build",
33
+ "!android/gradle",
34
+ "!android/gradlew",
35
+ "!android/gradlew.bat",
36
+ "!android/local.properties",
37
+ "!android/.cxx",
22
38
  "!**/__tests__",
23
39
  "!**/__fixtures__",
24
- "!**/__mocks__"
40
+ "!**/__mocks__",
41
+ "!**/.*"
25
42
  ],
26
43
  "scripts": {
44
+ "example": "yarn workspace op_sqlite_example",
27
45
  "typecheck": "tsc --noEmit",
28
46
  "prepare": "bob build",
29
47
  "pods": "cd example && yarn pods",
@@ -32,7 +50,8 @@
32
50
  "keywords": [
33
51
  "react-native",
34
52
  "ios",
35
- "android"
53
+ "android",
54
+ "sqlite"
36
55
  ],
37
56
  "repository": "https://github.com/OP-Engineering/op-sqlite",
38
57
  "author": "Oscar Franco <ospfranco@protonmail.com> (https://github.com/ospfranco)",
@@ -49,13 +68,13 @@
49
68
  "lefthook": "^1.5.5",
50
69
  "react": "18.2.0",
51
70
  "react-native": "0.74.0",
52
- "react-native-builder-bob": "^0.23.2",
71
+ "react-native-builder-bob": "^0.30.0",
53
72
  "turbo": "^1.12.4",
54
73
  "typescript": "5.0.4"
55
74
  },
56
75
  "peerDependencies": {
57
76
  "react": "*",
58
- "react-native": ">0.73.0"
77
+ "react-native": "*"
59
78
  },
60
79
  "workspaces": [
61
80
  "example"
@@ -71,15 +90,26 @@
71
90
  "source": "src",
72
91
  "output": "lib",
73
92
  "targets": [
74
- "commonjs",
75
- "module",
93
+ [
94
+ "commonjs",
95
+ {
96
+ "esm": true
97
+ }
98
+ ],
99
+ [
100
+ "module",
101
+ {
102
+ "esm": true
103
+ }
104
+ ],
76
105
  [
77
106
  "typescript",
78
107
  {
79
- "project": "tsconfig.build.json"
108
+ "project": "tsconfig.build.json",
109
+ "esm": true
80
110
  }
81
111
  ]
82
112
  ]
83
113
  },
84
- "packageManager": "yarn@4.3.1"
114
+ "packageManager": "yarn@4.4.1"
85
115
  }
package/src/index.ts CHANGED
@@ -1,4 +1,3 @@
1
- // import NativeOPSQLite from './NativeOPSQLite';
2
1
  import { NativeModules } from 'react-native';
3
2
 
4
3
  declare global {
@@ -71,6 +70,10 @@ export type QueryResult = {
71
70
  */
72
71
  item: (idx: number) => any;
73
72
  };
73
+ // An array of intermediate results, just values without column names
74
+ rawRows?: any[];
75
+ columnNames?: string[];
76
+
74
77
  /**
75
78
  * Query metadata, available only for select query results
76
79
  */
@@ -119,13 +122,9 @@ export interface FileLoadResult extends BatchQueryResult {
119
122
  }
120
123
 
121
124
  export interface Transaction {
122
- commit: () => QueryResult;
123
- execute: (query: string, params?: any[]) => QueryResult;
124
- executeAsync: (
125
- query: string,
126
- params?: any[] | undefined
127
- ) => Promise<QueryResult>;
128
- rollback: () => QueryResult;
125
+ commit: () => Promise<QueryResult>;
126
+ execute: (query: string, params?: any[]) => Promise<QueryResult>;
127
+ rollback: () => Promise<QueryResult>;
129
128
  }
130
129
 
131
130
  export interface PendingTransaction {
@@ -143,7 +142,7 @@ export interface PendingTransaction {
143
142
 
144
143
  export type PreparedStatementObj = {
145
144
  bind: (params: any[]) => void;
146
- execute: () => QueryResult;
145
+ execute: () => Promise<QueryResult>;
147
146
  };
148
147
 
149
148
  export type DB = {
@@ -157,10 +156,12 @@ export type DB = {
157
156
  ) => void;
158
157
  detach: (mainDbName: string, alias: string) => void;
159
158
  transaction: (fn: (tx: Transaction) => Promise<void>) => Promise<void>;
160
- execute: (query: string, params?: any[]) => QueryResult;
161
- executeAsync: (query: string, params?: any[]) => Promise<QueryResult>;
162
- executeBatch: (commands: SQLBatchTuple[]) => BatchQueryResult;
163
- executeBatchAsync: (commands: SQLBatchTuple[]) => Promise<BatchQueryResult>;
159
+ execute: (query: string, params?: any[]) => Promise<QueryResult>;
160
+ executeWithHostObjects: (
161
+ query: string,
162
+ params?: any[]
163
+ ) => Promise<QueryResult>;
164
+ executeBatch: (commands: SQLBatchTuple[]) => Promise<BatchQueryResult>;
164
165
  loadFile: (location: string) => Promise<FileLoadResult>;
165
166
  updateHook: (
166
167
  callback?:
@@ -176,7 +177,7 @@ export type DB = {
176
177
  rollbackHook: (callback?: (() => void) | null) => void;
177
178
  prepareStatement: (query: string) => PreparedStatementObj;
178
179
  loadExtension: (path: string, entryPoint?: string) => void;
179
- executeRawAsync: (query: string, params?: any[]) => Promise<any[]>;
180
+ executeRaw: (query: string, params?: any[]) => Promise<any[]>;
180
181
  getDbPath: (location?: string) => string;
181
182
  reactiveExecute: (params: {
182
183
  query: string;
@@ -260,14 +261,12 @@ function enhanceDB(db: DB, options: any): DB {
260
261
  attach: db.attach,
261
262
  detach: db.detach,
262
263
  executeBatch: db.executeBatch,
263
- executeBatchAsync: db.executeBatchAsync,
264
-
265
264
  loadFile: db.loadFile,
266
265
  updateHook: db.updateHook,
267
266
  commitHook: db.commitHook,
268
267
  rollbackHook: db.rollbackHook,
269
268
  loadExtension: db.loadExtension,
270
- executeRawAsync: db.executeRawAsync,
269
+ executeRaw: db.executeRaw,
271
270
  getDbPath: db.getDbPath,
272
271
  reactiveExecute: db.reactiveExecute,
273
272
  sync: db.sync,
@@ -275,7 +274,10 @@ function enhanceDB(db: DB, options: any): DB {
275
274
  db.close();
276
275
  delete locks[options.url];
277
276
  },
278
- execute: (query: string, params?: any[] | undefined): QueryResult => {
277
+ executeWithHostObjects: async (
278
+ query: string,
279
+ params?: any[] | undefined
280
+ ): Promise<QueryResult> => {
279
281
  const sanitizedParams = params?.map((p) => {
280
282
  if (ArrayBuffer.isView(p)) {
281
283
  return p.buffer;
@@ -284,11 +286,11 @@ function enhanceDB(db: DB, options: any): DB {
284
286
  return p;
285
287
  });
286
288
 
287
- const result = db.execute(query, sanitizedParams);
289
+ const result = await db.executeWithHostObjects(query, sanitizedParams);
288
290
  enhanceQueryResult(result);
289
291
  return result;
290
292
  },
291
- executeAsync: async (
293
+ execute: async (
292
294
  query: string,
293
295
  params?: any[] | undefined
294
296
  ): Promise<QueryResult> => {
@@ -300,9 +302,29 @@ function enhanceDB(db: DB, options: any): DB {
300
302
  return p;
301
303
  });
302
304
 
303
- const result = await db.executeAsync(query, sanitizedParams);
304
- enhanceQueryResult(result);
305
- return result;
305
+ let intermediateResult = await db.execute(query, sanitizedParams);
306
+
307
+ let rows: any[] = [];
308
+ for (let i = 0; i < (intermediateResult.rawRows?.length ?? 0); i++) {
309
+ let row: any = {};
310
+ for (let j = 0; j < intermediateResult.columnNames!.length ?? 0; j++) {
311
+ let columnName = intermediateResult.columnNames![j]!;
312
+ let value = intermediateResult.rawRows![i][j];
313
+
314
+ row[columnName] = value;
315
+ }
316
+ rows.push(row);
317
+ }
318
+
319
+ let res = {
320
+ ...intermediateResult,
321
+ rows: {
322
+ _array: rows,
323
+ length: rows.length,
324
+ item: (idx: number) => rows[idx],
325
+ },
326
+ };
327
+ return res;
306
328
  },
307
329
  prepareStatement: (query: string) => {
308
330
  const stmt = db.prepareStatement(query);
@@ -319,8 +341,8 @@ function enhanceDB(db: DB, options: any): DB {
319
341
 
320
342
  stmt.bind(sanitizedParams);
321
343
  },
322
- execute: () => {
323
- const res = stmt.execute();
344
+ execute: async () => {
345
+ const res = await stmt.execute();
324
346
  enhanceQueryResult(res);
325
347
  return res;
326
348
  },
@@ -331,66 +353,78 @@ function enhanceDB(db: DB, options: any): DB {
331
353
  ): Promise<void> => {
332
354
  let isFinalized = false;
333
355
 
334
- // Local transaction context object implementation
335
- const execute = (query: string, params?: any[]): QueryResult => {
356
+ const execute = async (query: string, params?: any[] | undefined) => {
336
357
  if (isFinalized) {
337
358
  throw Error(
338
359
  `OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`
339
360
  );
340
361
  }
341
- return enhancedDb.execute(query, params);
342
- };
343
-
344
- const executeAsync = (query: string, params?: any[] | undefined) => {
345
- if (isFinalized) {
346
- throw Error(
347
- `OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`
348
- );
362
+ let intermediateResult = await enhancedDb.execute(query, params);
363
+ let rows: any[] = [];
364
+ for (let i = 0; i < (intermediateResult.rawRows?.length ?? 0); i++) {
365
+ let row: any = {};
366
+ for (
367
+ let j = 0;
368
+ j < intermediateResult.columnNames!.length ?? 0;
369
+ j++
370
+ ) {
371
+ let columnName = intermediateResult.columnNames![j]!;
372
+ row[columnName] = intermediateResult.rawRows![i][j];
373
+ }
374
+ rows.push(row);
349
375
  }
350
- return enhancedDb.executeAsync(query, params);
376
+
377
+ let res = {
378
+ ...intermediateResult,
379
+ rows: {
380
+ _array: rows,
381
+ length: 0,
382
+ item: (idx: number) => rows[idx],
383
+ },
384
+ };
385
+ return res;
351
386
  };
352
387
 
353
- const commit = () => {
388
+ const commit = async (): Promise<QueryResult> => {
354
389
  if (isFinalized) {
355
390
  throw Error(
356
391
  `OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`
357
392
  );
358
393
  }
359
- const result = enhancedDb.execute('COMMIT;');
394
+ const result = await enhancedDb.execute('COMMIT;');
360
395
  isFinalized = true;
361
396
  return result;
362
397
  };
363
398
 
364
- const rollback = () => {
399
+ const rollback = async (): Promise<QueryResult> => {
365
400
  if (isFinalized) {
366
401
  throw Error(
367
402
  `OP-Sqlite Error: Database: ${options.url}. Cannot execute query on finalized transaction`
368
403
  );
369
404
  }
370
- const result = enhancedDb.execute('ROLLBACK;');
405
+ const result = await enhancedDb.execute('ROLLBACK;');
371
406
  isFinalized = true;
372
407
  return result;
373
408
  };
374
409
 
375
410
  async function run() {
376
411
  try {
377
- await enhancedDb.executeAsync('BEGIN TRANSACTION;');
412
+ await enhancedDb.execute('BEGIN TRANSACTION;');
378
413
 
379
414
  await fn({
380
415
  commit,
381
416
  execute,
382
- executeAsync,
383
417
  rollback,
384
418
  });
385
419
 
386
420
  if (!isFinalized) {
387
- commit();
421
+ await commit();
388
422
  }
389
423
  } catch (executionError) {
390
- console.warn('transaction error', executionError);
424
+ // console.warn('transaction error', executionError);
391
425
  if (!isFinalized) {
392
426
  try {
393
- rollback();
427
+ await rollback();
394
428
  } catch (rollbackError) {
395
429
  throw rollbackError;
396
430
  }
@@ -425,7 +459,7 @@ export const openSync = (options: {
425
459
  authToken: string;
426
460
  name: string;
427
461
  location?: string;
428
- syncInterval: number;
462
+ syncInterval?: number;
429
463
  }): DB => {
430
464
  if (!isLibsql()) {
431
465
  throw new Error('This function is only available for libsql');
package/android/.project DELETED
@@ -1,17 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <projectDescription>
3
- <name>android_</name>
4
- <comment>Project android_ created by Buildship.</comment>
5
- <projects>
6
- </projects>
7
- <buildSpec>
8
- <buildCommand>
9
- <name>org.eclipse.buildship.core.gradleprojectbuilder</name>
10
- <arguments>
11
- </arguments>
12
- </buildCommand>
13
- </buildSpec>
14
- <natures>
15
- <nature>org.eclipse.buildship.core.gradleprojectnature</nature>
16
- </natures>
17
- </projectDescription>
@@ -1,13 +0,0 @@
1
- arguments=
2
- auto.sync=false
3
- build.scans.enabled=false
4
- connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.0))
5
- connection.project.dir=
6
- eclipse.preferences.version=1
7
- gradle.user.home=
8
- java.home=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
9
- jvm.arguments=
10
- offline.mode=false
11
- override.workspace.settings=true
12
- show.console.view=true
13
- show.executions.view=true
@@ -1 +0,0 @@
1
- {"version":3,"file":"NativeOPSQLite.d.ts","sourceRoot":"","sources":["../../../src/NativeOPSQLite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,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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"}