react-native-nitro-sqlite 9.7.0 → 9.8.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.
Files changed (45) hide show
  1. package/RNNitroSQLite.podspec +44 -12
  2. package/cpp/NitroSQLiteException.hpp +5 -0
  3. package/cpp/databaseMigration.cpp +123 -0
  4. package/cpp/databaseMigration.hpp +13 -0
  5. package/cpp/hybridObjects/HybridNitroSQLite.cpp +65 -16
  6. package/cpp/hybridObjects/HybridNitroSQLite.hpp +5 -0
  7. package/cpp/importSqlFile.cpp +10 -5
  8. package/cpp/importSqlFile.hpp +5 -1
  9. package/cpp/operations.cpp +116 -35
  10. package/cpp/operations.hpp +29 -0
  11. package/cpp/sqliteExecuteBatch.cpp +9 -4
  12. package/cpp/sqliteExecuteBatch.hpp +4 -0
  13. package/ios/OnLoad.mm +26 -3
  14. package/lib/commonjs/DatabaseQueue.js +4 -17
  15. package/lib/commonjs/DatabaseQueue.js.map +1 -1
  16. package/lib/commonjs/operations/execute.js +28 -3
  17. package/lib/commonjs/operations/execute.js.map +1 -1
  18. package/lib/commonjs/operations/session.js +34 -9
  19. package/lib/commonjs/operations/session.js.map +1 -1
  20. package/lib/commonjs/operations/transaction.js +5 -5
  21. package/lib/commonjs/operations/transaction.js.map +1 -1
  22. package/lib/module/DatabaseQueue.js +4 -15
  23. package/lib/module/DatabaseQueue.js.map +1 -1
  24. package/lib/module/operations/execute.js +24 -4
  25. package/lib/module/operations/execute.js.map +1 -1
  26. package/lib/module/operations/session.js +36 -11
  27. package/lib/module/operations/session.js.map +1 -1
  28. package/lib/module/operations/transaction.js +6 -6
  29. package/lib/module/operations/transaction.js.map +1 -1
  30. package/lib/typescript/commonjs/DatabaseQueue.d.ts +1 -3
  31. package/lib/typescript/commonjs/DatabaseQueue.d.ts.map +1 -1
  32. package/lib/typescript/commonjs/operations/execute.d.ts +6 -0
  33. package/lib/typescript/commonjs/operations/execute.d.ts.map +1 -1
  34. package/lib/typescript/commonjs/operations/session.d.ts.map +1 -1
  35. package/lib/typescript/module/DatabaseQueue.d.ts +1 -3
  36. package/lib/typescript/module/DatabaseQueue.d.ts.map +1 -1
  37. package/lib/typescript/module/operations/execute.d.ts +6 -0
  38. package/lib/typescript/module/operations/execute.d.ts.map +1 -1
  39. package/lib/typescript/module/operations/session.d.ts.map +1 -1
  40. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rnnitrosqlite/HybridNitroSQLiteOnLoadSpec.kt +2 -0
  41. package/package.json +7 -6
  42. package/src/DatabaseQueue.ts +9 -19
  43. package/src/operations/execute.ts +52 -4
  44. package/src/operations/session.ts +57 -11
  45. package/src/operations/transaction.ts +6 -6
@@ -2,36 +2,61 @@
2
2
 
3
3
  import { HybridNitroSQLite } from "../nitro.js";
4
4
  import { transaction } from "./transaction.js";
5
- import { execute, executeAsync } from "./execute.js";
5
+ import { executeAsyncManaged, executeManaged } from "./execute.js";
6
6
  import { executeBatch, executeBatchAsync } from "./executeBatch.js";
7
7
  import NitroSQLiteError from "../NitroSQLiteError.js";
8
- import { closeDatabaseQueue, openDatabaseQueue } from "../DatabaseQueue.js";
8
+ import { closeDatabaseQueue, isDatabaseOpen, openDatabaseQueue, queueOperationAsync, startOperationSync } from "../DatabaseQueue.js";
9
9
  export function open(options) {
10
+ openDatabaseQueue(options.name);
10
11
  try {
11
12
  HybridNitroSQLite.open(options.name, options.location);
12
- openDatabaseQueue(options.name);
13
13
  } catch (error) {
14
+ closeDatabaseQueue(options.name);
14
15
  throw NitroSQLiteError.fromError(error);
15
16
  }
16
17
  return {
17
18
  close: () => {
18
19
  try {
19
- HybridNitroSQLite.close(options.name);
20
+ startOperationSync(options.name, () => HybridNitroSQLite.close(options.name));
20
21
  closeDatabaseQueue(options.name);
21
22
  } catch (error) {
22
23
  throw NitroSQLiteError.fromError(error);
23
24
  }
24
25
  },
25
- delete: () => HybridNitroSQLite.drop(options.name, options.location),
26
- attach: (dbNameToAttach, alias, location) => HybridNitroSQLite.attach(options.name, dbNameToAttach, alias, location),
27
- detach: alias => HybridNitroSQLite.detach(options.name, alias),
26
+ delete: () => {
27
+ try {
28
+ if (!isDatabaseOpen(options.name)) {
29
+ HybridNitroSQLite.drop(options.name, options.location);
30
+ return;
31
+ }
32
+ startOperationSync(options.name, () => HybridNitroSQLite.drop(options.name, options.location));
33
+ closeDatabaseQueue(options.name);
34
+ } catch (error) {
35
+ throw NitroSQLiteError.fromError(error);
36
+ }
37
+ },
38
+ attach: (dbNameToAttach, alias, location) => runSyncOperation(options.name, () => HybridNitroSQLite.attach(options.name, dbNameToAttach, alias, location)),
39
+ detach: alias => runSyncOperation(options.name, () => HybridNitroSQLite.detach(options.name, alias)),
28
40
  transaction: fn => transaction(options.name, fn),
29
- execute: (query, params) => execute(options.name, query, params),
30
- executeAsync: (query, params) => executeAsync(options.name, query, params),
41
+ execute: (query, params) => executeManaged(options.name, query, params),
42
+ executeAsync: (query, params) => executeAsyncManaged(options.name, query, params),
31
43
  executeBatch: commands => executeBatch(options.name, commands),
32
44
  executeBatchAsync: commands => executeBatchAsync(options.name, commands),
33
- loadFile: location => HybridNitroSQLite.loadFile(options.name, location),
34
- loadFileAsync: location => HybridNitroSQLite.loadFileAsync(options.name, location)
45
+ loadFile: location => runSyncOperation(options.name, () => HybridNitroSQLite.loadFile(options.name, location)),
46
+ loadFileAsync: location => queueOperationAsync(options.name, async () => {
47
+ try {
48
+ return await HybridNitroSQLite.loadFileAsync(options.name, location);
49
+ } catch (error) {
50
+ throw NitroSQLiteError.fromError(error);
51
+ }
52
+ })
35
53
  };
36
54
  }
55
+ function runSyncOperation(dbName, callback) {
56
+ try {
57
+ return startOperationSync(dbName, callback);
58
+ } catch (error) {
59
+ throw NitroSQLiteError.fromError(error);
60
+ }
61
+ }
37
62
  //# sourceMappingURL=session.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["HybridNitroSQLite","transaction","execute","executeAsync","executeBatch","executeBatchAsync","NitroSQLiteError","closeDatabaseQueue","openDatabaseQueue","open","options","name","location","error","fromError","close","delete","drop","attach","dbNameToAttach","alias","detach","fn","query","params","commands","loadFile","loadFileAsync"],"sourceRoot":"../../../src","sources":["operations/session.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,aAAU;AAC5C,SAASC,WAAW,QAAQ,kBAAe;AAU3C,SAASC,OAAO,EAAEC,YAAY,QAAQ,cAAW;AACjD,SAASC,YAAY,EAAEC,iBAAiB,QAAQ,mBAAgB;AAChE,OAAOC,gBAAgB,MAAM,wBAAqB;AAClD,SAASC,kBAAkB,EAAEC,iBAAiB,QAAQ,qBAAkB;AAExE,OAAO,SAASC,IAAIA,CAClBC,OAAqC,EACd;EACvB,IAAI;IACFV,iBAAiB,CAACS,IAAI,CAACC,OAAO,CAACC,IAAI,EAAED,OAAO,CAACE,QAAQ,CAAC;IACtDJ,iBAAiB,CAACE,OAAO,CAACC,IAAI,CAAC;EACjC,CAAC,CAAC,OAAOE,KAAK,EAAE;IACd,MAAMP,gBAAgB,CAACQ,SAAS,CAACD,KAAK,CAAC;EACzC;EAEA,OAAO;IACLE,KAAK,EAAEA,CAAA,KAAM;MACX,IAAI;QACFf,iBAAiB,CAACe,KAAK,CAACL,OAAO,CAACC,IAAI,CAAC;QACrCJ,kBAAkB,CAACG,OAAO,CAACC,IAAI,CAAC;MAClC,CAAC,CAAC,OAAOE,KAAK,EAAE;QACd,MAAMP,gBAAgB,CAACQ,SAAS,CAACD,KAAK,CAAC;MACzC;IACF,CAAC;IACDG,MAAM,EAAEA,CAAA,KAAMhB,iBAAiB,CAACiB,IAAI,CAACP,OAAO,CAACC,IAAI,EAAED,OAAO,CAACE,QAAQ,CAAC;IACpEM,MAAM,EAAEA,CAACC,cAAsB,EAAEC,KAAa,EAAER,QAAiB,KAC/DZ,iBAAiB,CAACkB,MAAM,CAACR,OAAO,CAACC,IAAI,EAAEQ,cAAc,EAAEC,KAAK,EAAER,QAAQ,CAAC;IACzES,MAAM,EAAGD,KAAa,IAAKpB,iBAAiB,CAACqB,MAAM,CAACX,OAAO,CAACC,IAAI,EAAES,KAAK,CAAC;IACxEnB,WAAW,EAAkBqB,EAAwC,IACnErB,WAAW,CAACS,OAAO,CAACC,IAAI,EAAEW,EAAE,CAAC;IAC/BpB,OAAO,EAAEA,CACPqB,KAAa,EACbC,MAA0B,KACLtB,OAAO,CAACQ,OAAO,CAACC,IAAI,EAAEY,KAAK,EAAEC,MAAM,CAAC;IAC3DrB,YAAY,EAAEA,CACZoB,KAAa,EACbC,MAA0B,KACIrB,YAAY,CAACO,OAAO,CAACC,IAAI,EAAEY,KAAK,EAAEC,MAAM,CAAC;IACzEpB,YAAY,EAAGqB,QAA6B,IAC1CrB,YAAY,CAACM,OAAO,CAACC,IAAI,EAAEc,QAAQ,CAAC;IACtCpB,iBAAiB,EAAGoB,QAA6B,IAC/CpB,iBAAiB,CAACK,OAAO,CAACC,IAAI,EAAEc,QAAQ,CAAC;IAC3CC,QAAQ,EAAGd,QAAgB,IACzBZ,iBAAiB,CAAC0B,QAAQ,CAAChB,OAAO,CAACC,IAAI,EAAEC,QAAQ,CAAC;IACpDe,aAAa,EAAGf,QAAgB,IAC9BZ,iBAAiB,CAAC2B,aAAa,CAACjB,OAAO,CAACC,IAAI,EAAEC,QAAQ;EAC1D,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["HybridNitroSQLite","transaction","executeAsyncManaged","executeManaged","executeBatch","executeBatchAsync","NitroSQLiteError","closeDatabaseQueue","isDatabaseOpen","openDatabaseQueue","queueOperationAsync","startOperationSync","open","options","name","location","error","fromError","close","delete","drop","attach","dbNameToAttach","alias","runSyncOperation","detach","fn","execute","query","params","executeAsync","commands","loadFile","loadFileAsync","dbName","callback"],"sourceRoot":"../../../src","sources":["operations/session.ts"],"mappings":";;AAAA,SAASA,iBAAiB,QAAQ,aAAU;AAC5C,SAASC,WAAW,QAAQ,kBAAe;AAU3C,SAASC,mBAAmB,EAAEC,cAAc,QAAQ,cAAW;AAC/D,SAASC,YAAY,EAAEC,iBAAiB,QAAQ,mBAAgB;AAChE,OAAOC,gBAAgB,MAAM,wBAAqB;AAClD,SACEC,kBAAkB,EAClBC,cAAc,EACdC,iBAAiB,EACjBC,mBAAmB,EACnBC,kBAAkB,QACb,qBAAkB;AAEzB,OAAO,SAASC,IAAIA,CAClBC,OAAqC,EACd;EACvBJ,iBAAiB,CAACI,OAAO,CAACC,IAAI,CAAC;EAE/B,IAAI;IACFd,iBAAiB,CAACY,IAAI,CAACC,OAAO,CAACC,IAAI,EAAED,OAAO,CAACE,QAAQ,CAAC;EACxD,CAAC,CAAC,OAAOC,KAAK,EAAE;IACdT,kBAAkB,CAACM,OAAO,CAACC,IAAI,CAAC;IAChC,MAAMR,gBAAgB,CAACW,SAAS,CAACD,KAAK,CAAC;EACzC;EAEA,OAAO;IACLE,KAAK,EAAEA,CAAA,KAAM;MACX,IAAI;QACFP,kBAAkB,CAACE,OAAO,CAACC,IAAI,EAAE,MAC/Bd,iBAAiB,CAACkB,KAAK,CAACL,OAAO,CAACC,IAAI,CACtC,CAAC;QACDP,kBAAkB,CAACM,OAAO,CAACC,IAAI,CAAC;MAClC,CAAC,CAAC,OAAOE,KAAK,EAAE;QACd,MAAMV,gBAAgB,CAACW,SAAS,CAACD,KAAK,CAAC;MACzC;IACF,CAAC;IACDG,MAAM,EAAEA,CAAA,KAAM;MACZ,IAAI;QACF,IAAI,CAACX,cAAc,CAACK,OAAO,CAACC,IAAI,CAAC,EAAE;UACjCd,iBAAiB,CAACoB,IAAI,CAACP,OAAO,CAACC,IAAI,EAAED,OAAO,CAACE,QAAQ,CAAC;UACtD;QACF;QAEAJ,kBAAkB,CAACE,OAAO,CAACC,IAAI,EAAE,MAC/Bd,iBAAiB,CAACoB,IAAI,CAACP,OAAO,CAACC,IAAI,EAAED,OAAO,CAACE,QAAQ,CACvD,CAAC;QACDR,kBAAkB,CAACM,OAAO,CAACC,IAAI,CAAC;MAClC,CAAC,CAAC,OAAOE,KAAK,EAAE;QACd,MAAMV,gBAAgB,CAACW,SAAS,CAACD,KAAK,CAAC;MACzC;IACF,CAAC;IACDK,MAAM,EAAEA,CAACC,cAAsB,EAAEC,KAAa,EAAER,QAAiB,KAC/DS,gBAAgB,CAACX,OAAO,CAACC,IAAI,EAAE,MAC7Bd,iBAAiB,CAACqB,MAAM,CAACR,OAAO,CAACC,IAAI,EAAEQ,cAAc,EAAEC,KAAK,EAAER,QAAQ,CACxE,CAAC;IACHU,MAAM,EAAGF,KAAa,IACpBC,gBAAgB,CAACX,OAAO,CAACC,IAAI,EAAE,MAC7Bd,iBAAiB,CAACyB,MAAM,CAACZ,OAAO,CAACC,IAAI,EAAES,KAAK,CAC9C,CAAC;IACHtB,WAAW,EAAkByB,EAAwC,IACnEzB,WAAW,CAACY,OAAO,CAACC,IAAI,EAAEY,EAAE,CAAC;IAC/BC,OAAO,EAAEA,CACPC,KAAa,EACbC,MAA0B,KACL1B,cAAc,CAACU,OAAO,CAACC,IAAI,EAAEc,KAAK,EAAEC,MAAM,CAAC;IAClEC,YAAY,EAAEA,CACZF,KAAa,EACbC,MAA0B,KAE1B3B,mBAAmB,CAACW,OAAO,CAACC,IAAI,EAAEc,KAAK,EAAEC,MAAM,CAAC;IAClDzB,YAAY,EAAG2B,QAA6B,IAC1C3B,YAAY,CAACS,OAAO,CAACC,IAAI,EAAEiB,QAAQ,CAAC;IACtC1B,iBAAiB,EAAG0B,QAA6B,IAC/C1B,iBAAiB,CAACQ,OAAO,CAACC,IAAI,EAAEiB,QAAQ,CAAC;IAC3CC,QAAQ,EAAGjB,QAAgB,IACzBS,gBAAgB,CAACX,OAAO,CAACC,IAAI,EAAE,MAC7Bd,iBAAiB,CAACgC,QAAQ,CAACnB,OAAO,CAACC,IAAI,EAAEC,QAAQ,CACnD,CAAC;IACHkB,aAAa,EAAGlB,QAAgB,IAC9BL,mBAAmB,CAACG,OAAO,CAACC,IAAI,EAAE,YAAY;MAC5C,IAAI;QACF,OAAO,MAAMd,iBAAiB,CAACiC,aAAa,CAACpB,OAAO,CAACC,IAAI,EAAEC,QAAQ,CAAC;MACtE,CAAC,CAAC,OAAOC,KAAK,EAAE;QACd,MAAMV,gBAAgB,CAACW,SAAS,CAACD,KAAK,CAAC;MACzC;IACF,CAAC;EACL,CAAC;AACH;AAEA,SAASQ,gBAAgBA,CAASU,MAAc,EAAEC,QAAsB,EAAE;EACxE,IAAI;IACF,OAAOxB,kBAAkB,CAACuB,MAAM,EAAEC,QAAQ,CAAC;EAC7C,CAAC,CAAC,OAAOnB,KAAK,EAAE;IACd,MAAMV,gBAAgB,CAACW,SAAS,CAACD,KAAK,CAAC;EACzC;AACF","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { queueOperationAsync, throwIfDatabaseIsNotOpen } from "../DatabaseQueue.js";
4
- import { execute, executeAsync } from "./execute.js";
4
+ import { executeAsyncNative, executeNative } from "./execute.js";
5
5
  import NitroSQLiteError from "../NitroSQLiteError.js";
6
6
  export const transaction = async (dbName, transactionCallback, isExclusive = false) => {
7
7
  throwIfDatabaseIsNotOpen(dbName);
@@ -10,31 +10,31 @@ export const transaction = async (dbName, transactionCallback, isExclusive = fal
10
10
  if (isFinished) {
11
11
  throw new NitroSQLiteError(`Cannot execute query on finalized transaction: ${dbName}`);
12
12
  }
13
- return execute(dbName, query, params);
13
+ return executeNative(dbName, query, params);
14
14
  };
15
15
  const executeAsyncOnTransaction = (query, params) => {
16
16
  if (isFinished) {
17
17
  throw new NitroSQLiteError(`Cannot execute query on finalized transaction: ${dbName}`);
18
18
  }
19
- return executeAsync(dbName, query, params);
19
+ return executeAsyncNative(dbName, query, params);
20
20
  };
21
21
  const commit = () => {
22
22
  if (isFinished) {
23
23
  throw new NitroSQLiteError(`Cannot execute commit on finalized transaction: ${dbName}`);
24
24
  }
25
25
  isFinished = true;
26
- return execute(dbName, 'COMMIT');
26
+ return executeNative(dbName, 'COMMIT');
27
27
  };
28
28
  const rollback = () => {
29
29
  if (isFinished) {
30
30
  throw new NitroSQLiteError(`Cannot execute rollback on finalized transaction: ${dbName}`);
31
31
  }
32
32
  isFinished = true;
33
- return execute(dbName, 'ROLLBACK');
33
+ return executeNative(dbName, 'ROLLBACK');
34
34
  };
35
35
  return await queueOperationAsync(dbName, async () => {
36
36
  try {
37
- await executeAsync(dbName, isExclusive ? 'BEGIN EXCLUSIVE TRANSACTION' : 'BEGIN TRANSACTION');
37
+ await executeAsyncNative(dbName, isExclusive ? 'BEGIN EXCLUSIVE TRANSACTION' : 'BEGIN TRANSACTION');
38
38
  const result = await transactionCallback({
39
39
  commit,
40
40
  execute: executeOnTransaction,
@@ -1 +1 @@
1
- {"version":3,"names":["queueOperationAsync","throwIfDatabaseIsNotOpen","execute","executeAsync","NitroSQLiteError","transaction","dbName","transactionCallback","isExclusive","isFinished","executeOnTransaction","query","params","executeAsyncOnTransaction","commit","rollback","result","executionError","rollbackError","fromError"],"sourceRoot":"../../../src","sources":["operations/transaction.ts"],"mappings":";;AAAA,SAASA,mBAAmB,EAAEC,wBAAwB,QAAQ,qBAAkB;AAOhF,SAASC,OAAO,EAAEC,YAAY,QAAQ,cAAW;AACjD,OAAOC,gBAAgB,MAAM,wBAAqB;AAElD,OAAO,MAAMC,WAAW,GAAG,MAAAA,CACzBC,MAAc,EACdC,mBAAyD,EACzDC,WAAW,GAAG,KAAK,KAChB;EACHP,wBAAwB,CAACK,MAAM,CAAC;EAEhC,IAAIG,UAAU,GAAG,KAAK;EAEtB,MAAMC,oBAAoB,GAAGA,CAC3BC,KAAa,EACbC,MAA0B,KACL;IACrB,IAAIH,UAAU,EAAE;MACd,MAAM,IAAIL,gBAAgB,CACxB,kDAAkDE,MAAM,EAC1D,CAAC;IACH;IACA,OAAOJ,OAAO,CAACI,MAAM,EAAEK,KAAK,EAAEC,MAAM,CAAC;EACvC,CAAC;EAED,MAAMC,yBAAyB,GAAGA,CAChCF,KAAa,EACbC,MAA0B,KACI;IAC9B,IAAIH,UAAU,EAAE;MACd,MAAM,IAAIL,gBAAgB,CACxB,kDAAkDE,MAAM,EAC1D,CAAC;IACH;IACA,OAAOH,YAAY,CAACG,MAAM,EAAEK,KAAK,EAAEC,MAAM,CAAC;EAC5C,CAAC;EAED,MAAME,MAAM,GAAGA,CAAA,KAAM;IACnB,IAAIL,UAAU,EAAE;MACd,MAAM,IAAIL,gBAAgB,CACxB,mDAAmDE,MAAM,EAC3D,CAAC;IACH;IACAG,UAAU,GAAG,IAAI;IACjB,OAAOP,OAAO,CAACI,MAAM,EAAE,QAAQ,CAAC;EAClC,CAAC;EAED,MAAMS,QAAQ,GAAGA,CAAA,KAAM;IACrB,IAAIN,UAAU,EAAE;MACd,MAAM,IAAIL,gBAAgB,CACxB,qDAAqDE,MAAM,EAC7D,CAAC;IACH;IACAG,UAAU,GAAG,IAAI;IACjB,OAAOP,OAAO,CAACI,MAAM,EAAE,UAAU,CAAC;EACpC,CAAC;EAED,OAAO,MAAMN,mBAAmB,CAACM,MAAM,EAAE,YAAY;IACnD,IAAI;MACF,MAAMH,YAAY,CAChBG,MAAM,EACNE,WAAW,GAAG,6BAA6B,GAAG,mBAChD,CAAC;MAED,MAAMQ,MAAM,GAAG,MAAMT,mBAAmB,CAAC;QACvCO,MAAM;QACNZ,OAAO,EAAEQ,oBAAoB;QAC7BP,YAAY,EAAEU,yBAAyB;QACvCE;MACF,CAAC,CAAC;MAEF,IAAI,CAACN,UAAU,EAAEK,MAAM,CAAC,CAAC;MAEzB,OAAOE,MAAM;IACf,CAAC,CAAC,OAAOC,cAAc,EAAE;MACvB,IAAI,CAACR,UAAU,EAAE;QACf,IAAI;UACFM,QAAQ,CAAC,CAAC;QACZ,CAAC,CAAC,OAAOG,aAAa,EAAE;UACtB,MAAMd,gBAAgB,CAACe,SAAS,CAACD,aAAa,CAAC;QACjD;MACF;MAEA,MAAMd,gBAAgB,CAACe,SAAS,CAACF,cAAc,CAAC;IAClD;EACF,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["queueOperationAsync","throwIfDatabaseIsNotOpen","executeAsyncNative","executeNative","NitroSQLiteError","transaction","dbName","transactionCallback","isExclusive","isFinished","executeOnTransaction","query","params","executeAsyncOnTransaction","commit","rollback","result","execute","executeAsync","executionError","rollbackError","fromError"],"sourceRoot":"../../../src","sources":["operations/transaction.ts"],"mappings":";;AAAA,SAASA,mBAAmB,EAAEC,wBAAwB,QAAQ,qBAAkB;AAOhF,SAASC,kBAAkB,EAAEC,aAAa,QAAQ,cAAW;AAC7D,OAAOC,gBAAgB,MAAM,wBAAqB;AAElD,OAAO,MAAMC,WAAW,GAAG,MAAAA,CACzBC,MAAc,EACdC,mBAAyD,EACzDC,WAAW,GAAG,KAAK,KAChB;EACHP,wBAAwB,CAACK,MAAM,CAAC;EAEhC,IAAIG,UAAU,GAAG,KAAK;EAEtB,MAAMC,oBAAoB,GAAGA,CAC3BC,KAAa,EACbC,MAA0B,KACL;IACrB,IAAIH,UAAU,EAAE;MACd,MAAM,IAAIL,gBAAgB,CACxB,kDAAkDE,MAAM,EAC1D,CAAC;IACH;IACA,OAAOH,aAAa,CAACG,MAAM,EAAEK,KAAK,EAAEC,MAAM,CAAC;EAC7C,CAAC;EAED,MAAMC,yBAAyB,GAAGA,CAChCF,KAAa,EACbC,MAA0B,KACI;IAC9B,IAAIH,UAAU,EAAE;MACd,MAAM,IAAIL,gBAAgB,CACxB,kDAAkDE,MAAM,EAC1D,CAAC;IACH;IACA,OAAOJ,kBAAkB,CAACI,MAAM,EAAEK,KAAK,EAAEC,MAAM,CAAC;EAClD,CAAC;EAED,MAAME,MAAM,GAAGA,CAAA,KAAM;IACnB,IAAIL,UAAU,EAAE;MACd,MAAM,IAAIL,gBAAgB,CACxB,mDAAmDE,MAAM,EAC3D,CAAC;IACH;IACAG,UAAU,GAAG,IAAI;IACjB,OAAON,aAAa,CAACG,MAAM,EAAE,QAAQ,CAAC;EACxC,CAAC;EAED,MAAMS,QAAQ,GAAGA,CAAA,KAAM;IACrB,IAAIN,UAAU,EAAE;MACd,MAAM,IAAIL,gBAAgB,CACxB,qDAAqDE,MAAM,EAC7D,CAAC;IACH;IACAG,UAAU,GAAG,IAAI;IACjB,OAAON,aAAa,CAACG,MAAM,EAAE,UAAU,CAAC;EAC1C,CAAC;EAED,OAAO,MAAMN,mBAAmB,CAACM,MAAM,EAAE,YAAY;IACnD,IAAI;MACF,MAAMJ,kBAAkB,CACtBI,MAAM,EACNE,WAAW,GAAG,6BAA6B,GAAG,mBAChD,CAAC;MAED,MAAMQ,MAAM,GAAG,MAAMT,mBAAmB,CAAC;QACvCO,MAAM;QACNG,OAAO,EAAEP,oBAAoB;QAC7BQ,YAAY,EAAEL,yBAAyB;QACvCE;MACF,CAAC,CAAC;MAEF,IAAI,CAACN,UAAU,EAAEK,MAAM,CAAC,CAAC;MAEzB,OAAOE,MAAM;IACf,CAAC,CAAC,OAAOG,cAAc,EAAE;MACvB,IAAI,CAACV,UAAU,EAAE;QACf,IAAI;UACFM,QAAQ,CAAC,CAAC;QACZ,CAAC,CAAC,OAAOK,aAAa,EAAE;UACtB,MAAMhB,gBAAgB,CAACiB,SAAS,CAACD,aAAa,CAAC;QACjD;MACF;MAEA,MAAMhB,gBAAgB,CAACiB,SAAS,CAACF,cAAc,CAAC;IAClD;EACF,CAAC,CAAC;AACJ,CAAC","ignoreList":[]}
@@ -13,8 +13,6 @@ export declare function closeDatabaseQueue(dbName: string): void;
13
13
  export declare function isDatabaseOpen(dbName: string): boolean;
14
14
  export declare function throwIfDatabaseIsNotOpen(dbName: string): void;
15
15
  export declare function getDatabaseQueue(dbName: string): DatabaseQueue;
16
- export declare function openDatabase(dbName: string): void;
17
- export declare function closeDatabase(dbName: string): void;
18
16
  export declare function queueOperationAsync<Result>(dbName: string, callback: () => Promise<Result>): Promise<Result>;
19
- export declare function startOperationSync<OperationCallback extends () => Result, Result = void>(dbName: string, callback: OperationCallback): Result;
17
+ export declare function startOperationSync<Result>(dbName: string, callback: () => Result): Result;
20
18
  //# sourceMappingURL=DatabaseQueue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseQueue.d.ts","sourceRoot":"","sources":["../../../src/DatabaseQueue.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,QAQ/C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,QAUhD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,WAE5C;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,QAKtD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,iBAK9C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,QAE1C;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,QAE3C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,mBAwBhC;AAkBD,wBAAgB,kBAAkB,CAChC,iBAAiB,SAAS,MAAM,MAAM,EACtC,MAAM,GAAG,IAAI,EACb,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,UAiB5C"}
1
+ {"version":3,"file":"DatabaseQueue.d.ts","sourceRoot":"","sources":["../../../src/DatabaseQueue.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,QAQ/C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,QAUhD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,WAE5C;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,QAKtD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,iBAK9C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,mBAwBhC;AAgBD,wBAAgB,kBAAkB,CAAC,MAAM,EACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,MAAM,GACrB,MAAM,CAiBR"}
@@ -1,4 +1,10 @@
1
1
  import type { QueryResult, QueryResultRow, SQLiteQueryParams } from '../types';
2
+ import type { NitroSQLiteQueryResult } from '../specs/NitroSQLiteQueryResult.nitro';
2
3
  export declare function execute<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): QueryResult<Row>;
4
+ export declare function executeManaged<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): QueryResult<Row>;
5
+ export declare function executeNative<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): QueryResult<Row>;
3
6
  export declare function executeAsync<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): Promise<QueryResult<Row>>;
7
+ export declare function executeAsyncManaged<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): Promise<QueryResult<Row>>;
8
+ export declare function executeAsyncNative<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): Promise<QueryResult<Row>>;
9
+ export declare function buildJSQueryResult<Row extends QueryResultRow = never>(result: NitroSQLiteQueryResult): QueryResult<Row>;
4
10
  //# sourceMappingURL=execute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../../src/operations/execute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAI9E,wBAAgB,OAAO,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACxD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,WAAW,CAAC,GAAG,CAAC,CAOlB;AAED,wBAAsB,YAAY,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACnE,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAW3B"}
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../../src/operations/execute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAE9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAOnF,wBAAgB,OAAO,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACxD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,WAAW,CAAC,GAAG,CAAC,CAMlB;AAED,wBAAgB,cAAc,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EAC/D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,WAAW,CAAC,GAAG,CAAC,CAElB;AAED,wBAAgB,aAAa,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EAC9D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,WAAW,CAAC,GAAG,CAAC,CAOlB;AAED,wBAAsB,YAAY,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACnE,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAM3B;AAED,wBAAsB,mBAAmB,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EAC1E,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAI3B;AAED,wBAAsB,kBAAkB,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACzE,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAW3B;AAED,wBAAgB,kBAAkB,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACnE,MAAM,EAAE,sBAAsB,GAC7B,WAAW,CAAC,GAAG,CAAC,CAWlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/operations/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,qBAAqB,EACrB,4BAA4B,EAK7B,MAAM,UAAU,CAAA;AAMjB,wBAAgB,IAAI,CAClB,OAAO,EAAE,4BAA4B,GACpC,qBAAqB,CAwCvB"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/operations/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,qBAAqB,EACrB,4BAA4B,EAK7B,MAAM,UAAU,CAAA;AAYjB,wBAAgB,IAAI,CAClB,OAAO,EAAE,4BAA4B,GACpC,qBAAqB,CAwEvB"}
@@ -13,8 +13,6 @@ export declare function closeDatabaseQueue(dbName: string): void;
13
13
  export declare function isDatabaseOpen(dbName: string): boolean;
14
14
  export declare function throwIfDatabaseIsNotOpen(dbName: string): void;
15
15
  export declare function getDatabaseQueue(dbName: string): DatabaseQueue;
16
- export declare function openDatabase(dbName: string): void;
17
- export declare function closeDatabase(dbName: string): void;
18
16
  export declare function queueOperationAsync<Result>(dbName: string, callback: () => Promise<Result>): Promise<Result>;
19
- export declare function startOperationSync<OperationCallback extends () => Result, Result = void>(dbName: string, callback: OperationCallback): Result;
17
+ export declare function startOperationSync<Result>(dbName: string, callback: () => Result): Result;
20
18
  //# sourceMappingURL=DatabaseQueue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseQueue.d.ts","sourceRoot":"","sources":["../../../src/DatabaseQueue.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,QAQ/C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,QAUhD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,WAE5C;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,QAKtD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,iBAK9C;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,QAE1C;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,QAE3C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,mBAwBhC;AAkBD,wBAAgB,kBAAkB,CAChC,iBAAiB,SAAS,MAAM,MAAM,EACtC,MAAM,GAAG,IAAI,EACb,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,UAiB5C"}
1
+ {"version":3,"file":"DatabaseQueue.d.ts","sourceRoot":"","sources":["../../../src/DatabaseQueue.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAA;CAClB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAA;IACxB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,QAQ/C;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,QAUhD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,WAE5C;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,QAKtD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,iBAK9C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EACxC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,mBAwBhC;AAgBD,wBAAgB,kBAAkB,CAAC,MAAM,EACvC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,MAAM,GACrB,MAAM,CAiBR"}
@@ -1,4 +1,10 @@
1
1
  import type { QueryResult, QueryResultRow, SQLiteQueryParams } from '../types';
2
+ import type { NitroSQLiteQueryResult } from '../specs/NitroSQLiteQueryResult.nitro';
2
3
  export declare function execute<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): QueryResult<Row>;
4
+ export declare function executeManaged<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): QueryResult<Row>;
5
+ export declare function executeNative<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): QueryResult<Row>;
3
6
  export declare function executeAsync<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): Promise<QueryResult<Row>>;
7
+ export declare function executeAsyncManaged<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): Promise<QueryResult<Row>>;
8
+ export declare function executeAsyncNative<Row extends QueryResultRow = never>(dbName: string, query: string, params?: SQLiteQueryParams): Promise<QueryResult<Row>>;
9
+ export declare function buildJSQueryResult<Row extends QueryResultRow = never>(result: NitroSQLiteQueryResult): QueryResult<Row>;
4
10
  //# sourceMappingURL=execute.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../../src/operations/execute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAI9E,wBAAgB,OAAO,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACxD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,WAAW,CAAC,GAAG,CAAC,CAOlB;AAED,wBAAsB,YAAY,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACnE,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAW3B"}
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../../src/operations/execute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAE9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAOnF,wBAAgB,OAAO,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACxD,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,WAAW,CAAC,GAAG,CAAC,CAMlB;AAED,wBAAgB,cAAc,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EAC/D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,WAAW,CAAC,GAAG,CAAC,CAElB;AAED,wBAAgB,aAAa,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EAC9D,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,WAAW,CAAC,GAAG,CAAC,CAOlB;AAED,wBAAsB,YAAY,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACnE,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAM3B;AAED,wBAAsB,mBAAmB,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EAC1E,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAI3B;AAED,wBAAsB,kBAAkB,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACzE,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAW3B;AAED,wBAAgB,kBAAkB,CAAC,GAAG,SAAS,cAAc,GAAG,KAAK,EACnE,MAAM,EAAE,sBAAsB,GAC7B,WAAW,CAAC,GAAG,CAAC,CAWlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/operations/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,qBAAqB,EACrB,4BAA4B,EAK7B,MAAM,UAAU,CAAA;AAMjB,wBAAgB,IAAI,CAClB,OAAO,EAAE,4BAA4B,GACpC,qBAAqB,CAwCvB"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/operations/session.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,qBAAqB,EACrB,4BAA4B,EAK7B,MAAM,UAAU,CAAA;AAYjB,wBAAgB,IAAI,CAClB,OAAO,EAAE,4BAA4B,GACpC,qBAAqB,CAwEvB"}
@@ -10,6 +10,7 @@ package com.margelo.nitro.rnnitrosqlite
10
10
  import androidx.annotation.Keep
11
11
  import com.facebook.jni.HybridData
12
12
  import com.facebook.proguard.annotations.DoNotStrip
13
+ import dalvik.annotation.optimization.FastNative
13
14
  import com.margelo.nitro.core.HybridObject
14
15
 
15
16
  /**
@@ -42,6 +43,7 @@ abstract class HybridNitroSQLiteOnLoadSpec: HybridObject() {
42
43
  @Keep
43
44
  protected open class CxxPart(javaPart: HybridNitroSQLiteOnLoadSpec): HybridObject.CxxPart(javaPart) {
44
45
  // C++ JHybridNitroSQLiteOnLoadSpec::CxxPart::initHybrid(...)
46
+ @FastNative
45
47
  external override fun initHybrid(): HybridData
46
48
  }
47
49
  override fun createCxxPart(): CxxPart {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nitro-sqlite",
3
- "version": "9.7.0",
3
+ "version": "9.8.0",
4
4
  "description": "Fast SQLite library for React Native built using Nitro Modules",
5
5
  "main": "./lib/module/index",
6
6
  "module": "./lib/module/index",
@@ -69,23 +69,24 @@
69
69
  "typeorm": "0.3.27"
70
70
  },
71
71
  "devDependencies": {
72
+ "@react-native/jest-preset": "0.87.1",
72
73
  "jest": "^30.2.0",
73
- "nitrogen": "0.36.1",
74
+ "nitrogen": "0.37.1",
74
75
  "react": "19.2.3",
75
- "react-native": "0.85.0-rc.0",
76
+ "react-native": "0.87.1",
76
77
  "react-native-builder-bob": "^0.31.0",
77
- "react-native-nitro-modules": "0.36.1"
78
+ "react-native-nitro-modules": "0.37.1"
78
79
  },
79
80
  "peerDependencies": {
80
81
  "react": ">=17.0.0",
81
82
  "react-native": ">=0.75.0",
82
- "react-native-nitro-modules": ">=0.35.0"
83
+ "react-native-nitro-modules": ">=0.37.1"
83
84
  },
84
85
  "resolutions": {
85
86
  "@types/react": "^18.2.44"
86
87
  },
87
88
  "jest": {
88
- "preset": "react-native",
89
+ "preset": "@react-native/jest-preset",
89
90
  "modulePathIgnorePatterns": [
90
91
  "<rootDir>/example/node_modules",
91
92
  "<rootDir>/lib/"
@@ -28,8 +28,8 @@ export function closeDatabaseQueue(dbName: string) {
28
28
  const databaseQueue = getDatabaseQueue(dbName)
29
29
 
30
30
  if (databaseQueue.inProgress || databaseQueue.queue.length > 0) {
31
- console.warn(
32
- `Database queue for ${dbName} has operations in the queue. Closing anyway.`,
31
+ throw new NitroSQLiteError(
32
+ `Cannot close database ${dbName}. The database is busy with another operation.`,
33
33
  )
34
34
  }
35
35
 
@@ -54,14 +54,6 @@ export function getDatabaseQueue(dbName: string) {
54
54
  return queue
55
55
  }
56
56
 
57
- export function openDatabase(dbName: string) {
58
- databaseQueues.set(dbName, { queue: [], inProgress: false })
59
- }
60
-
61
- export function closeDatabase(dbName: string) {
62
- databaseQueues.delete(dbName)
63
- }
64
-
65
57
  export function queueOperationAsync<Result>(
66
58
  dbName: string,
67
59
  callback: () => Promise<Result>,
@@ -77,7 +69,7 @@ export function queueOperationAsync<Result>(
77
69
  reject(error)
78
70
  } finally {
79
71
  databaseQueue.inProgress = false
80
- startOperationAsync(dbName)
72
+ startOperationAsync(databaseQueue)
81
73
  }
82
74
  }
83
75
 
@@ -86,13 +78,11 @@ export function queueOperationAsync<Result>(
86
78
  }
87
79
 
88
80
  databaseQueue.queue.push(operation)
89
- startOperationAsync(dbName)
81
+ startOperationAsync(databaseQueue)
90
82
  })
91
83
  }
92
84
 
93
- function startOperationAsync(dbName: string) {
94
- const queue = getDatabaseQueue(dbName)
95
-
85
+ function startOperationAsync(queue: DatabaseQueue) {
96
86
  // Queue is empty or in progress. Bail out.
97
87
  if (queue.inProgress || queue.queue.length === 0) {
98
88
  return
@@ -106,10 +96,10 @@ function startOperationAsync(dbName: string) {
106
96
  })
107
97
  }
108
98
 
109
- export function startOperationSync<
110
- OperationCallback extends () => Result,
111
- Result = void,
112
- >(dbName: string, callback: OperationCallback) {
99
+ export function startOperationSync<Result>(
100
+ dbName: string,
101
+ callback: () => Result,
102
+ ): Result {
113
103
  const databaseQueue = getDatabaseQueue(dbName)
114
104
 
115
105
  // Database is busy - cannot execute synchronously
@@ -2,11 +2,36 @@ import { HybridNitroSQLite } from '../nitro'
2
2
  import type { QueryResult, QueryResultRow, SQLiteQueryParams } from '../types'
3
3
  import NitroSQLiteError from '../NitroSQLiteError'
4
4
  import type { NitroSQLiteQueryResult } from '../specs/NitroSQLiteQueryResult.nitro'
5
+ import {
6
+ isDatabaseOpen,
7
+ queueOperationAsync,
8
+ startOperationSync,
9
+ } from '../DatabaseQueue'
5
10
 
6
11
  export function execute<Row extends QueryResultRow = never>(
7
12
  dbName: string,
8
13
  query: string,
9
14
  params?: SQLiteQueryParams,
15
+ ): QueryResult<Row> {
16
+ if (!isDatabaseOpen(dbName)) {
17
+ return executeNative(dbName, query, params)
18
+ }
19
+
20
+ return executeManaged(dbName, query, params)
21
+ }
22
+
23
+ export function executeManaged<Row extends QueryResultRow = never>(
24
+ dbName: string,
25
+ query: string,
26
+ params?: SQLiteQueryParams,
27
+ ): QueryResult<Row> {
28
+ return startOperationSync(dbName, () => executeNative(dbName, query, params))
29
+ }
30
+
31
+ export function executeNative<Row extends QueryResultRow = never>(
32
+ dbName: string,
33
+ query: string,
34
+ params?: SQLiteQueryParams,
10
35
  ): QueryResult<Row> {
11
36
  try {
12
37
  const nativeResult = HybridNitroSQLite.execute(dbName, query, params)
@@ -20,6 +45,28 @@ export async function executeAsync<Row extends QueryResultRow = never>(
20
45
  dbName: string,
21
46
  query: string,
22
47
  params?: SQLiteQueryParams,
48
+ ): Promise<QueryResult<Row>> {
49
+ if (!isDatabaseOpen(dbName)) {
50
+ return executeAsyncNative(dbName, query, params)
51
+ }
52
+
53
+ return executeAsyncManaged(dbName, query, params)
54
+ }
55
+
56
+ export async function executeAsyncManaged<Row extends QueryResultRow = never>(
57
+ dbName: string,
58
+ query: string,
59
+ params?: SQLiteQueryParams,
60
+ ): Promise<QueryResult<Row>> {
61
+ return queueOperationAsync(dbName, () =>
62
+ executeAsyncNative(dbName, query, params),
63
+ )
64
+ }
65
+
66
+ export async function executeAsyncNative<Row extends QueryResultRow = never>(
67
+ dbName: string,
68
+ query: string,
69
+ params?: SQLiteQueryParams,
23
70
  ): Promise<QueryResult<Row>> {
24
71
  try {
25
72
  const nativeResult = await HybridNitroSQLite.executeAsync(
@@ -33,15 +80,16 @@ export async function executeAsync<Row extends QueryResultRow = never>(
33
80
  }
34
81
  }
35
82
 
36
- function buildJSQueryResult<Row extends QueryResultRow = never>(
83
+ export function buildJSQueryResult<Row extends QueryResultRow = never>(
37
84
  result: NitroSQLiteQueryResult,
38
85
  ): QueryResult<Row> {
39
86
  const resultWithRows = result as QueryResult<Row>
87
+ const results = result.results as Row[]
40
88
 
41
89
  resultWithRows.rows = {
42
- _array: result.results as Row[],
43
- length: result.results.length,
44
- item: (idx: number) => result.results[idx] as Row | undefined,
90
+ _array: results,
91
+ length: results.length,
92
+ item: (idx: number) => results[idx],
45
93
  }
46
94
 
47
95
  return resultWithRows
@@ -9,51 +9,97 @@ import type {
9
9
  QueryResultRow,
10
10
  QueryResult,
11
11
  } from '../types'
12
- import { execute, executeAsync } from './execute'
12
+ import { executeAsyncManaged, executeManaged } from './execute'
13
13
  import { executeBatch, executeBatchAsync } from './executeBatch'
14
14
  import NitroSQLiteError from '../NitroSQLiteError'
15
- import { closeDatabaseQueue, openDatabaseQueue } from '../DatabaseQueue'
15
+ import {
16
+ closeDatabaseQueue,
17
+ isDatabaseOpen,
18
+ openDatabaseQueue,
19
+ queueOperationAsync,
20
+ startOperationSync,
21
+ } from '../DatabaseQueue'
16
22
 
17
23
  export function open(
18
24
  options: NitroSQLiteConnectionOptions,
19
25
  ): NitroSQLiteConnection {
26
+ openDatabaseQueue(options.name)
27
+
20
28
  try {
21
29
  HybridNitroSQLite.open(options.name, options.location)
22
- openDatabaseQueue(options.name)
23
30
  } catch (error) {
31
+ closeDatabaseQueue(options.name)
24
32
  throw NitroSQLiteError.fromError(error)
25
33
  }
26
34
 
27
35
  return {
28
36
  close: () => {
29
37
  try {
30
- HybridNitroSQLite.close(options.name)
38
+ startOperationSync(options.name, () =>
39
+ HybridNitroSQLite.close(options.name),
40
+ )
41
+ closeDatabaseQueue(options.name)
42
+ } catch (error) {
43
+ throw NitroSQLiteError.fromError(error)
44
+ }
45
+ },
46
+ delete: () => {
47
+ try {
48
+ if (!isDatabaseOpen(options.name)) {
49
+ HybridNitroSQLite.drop(options.name, options.location)
50
+ return
51
+ }
52
+
53
+ startOperationSync(options.name, () =>
54
+ HybridNitroSQLite.drop(options.name, options.location),
55
+ )
31
56
  closeDatabaseQueue(options.name)
32
57
  } catch (error) {
33
58
  throw NitroSQLiteError.fromError(error)
34
59
  }
35
60
  },
36
- delete: () => HybridNitroSQLite.drop(options.name, options.location),
37
61
  attach: (dbNameToAttach: string, alias: string, location?: string) =>
38
- HybridNitroSQLite.attach(options.name, dbNameToAttach, alias, location),
39
- detach: (alias: string) => HybridNitroSQLite.detach(options.name, alias),
62
+ runSyncOperation(options.name, () =>
63
+ HybridNitroSQLite.attach(options.name, dbNameToAttach, alias, location),
64
+ ),
65
+ detach: (alias: string) =>
66
+ runSyncOperation(options.name, () =>
67
+ HybridNitroSQLite.detach(options.name, alias),
68
+ ),
40
69
  transaction: <Result = void>(fn: (tx: Transaction) => Promise<Result>) =>
41
70
  transaction(options.name, fn),
42
71
  execute: <Row extends QueryResultRow = never>(
43
72
  query: string,
44
73
  params?: SQLiteQueryParams,
45
- ): QueryResult<Row> => execute(options.name, query, params),
74
+ ): QueryResult<Row> => executeManaged(options.name, query, params),
46
75
  executeAsync: <Row extends QueryResultRow = never>(
47
76
  query: string,
48
77
  params?: SQLiteQueryParams,
49
- ): Promise<QueryResult<Row>> => executeAsync(options.name, query, params),
78
+ ): Promise<QueryResult<Row>> =>
79
+ executeAsyncManaged(options.name, query, params),
50
80
  executeBatch: (commands: BatchQueryCommand[]) =>
51
81
  executeBatch(options.name, commands),
52
82
  executeBatchAsync: (commands: BatchQueryCommand[]) =>
53
83
  executeBatchAsync(options.name, commands),
54
84
  loadFile: (location: string) =>
55
- HybridNitroSQLite.loadFile(options.name, location),
85
+ runSyncOperation(options.name, () =>
86
+ HybridNitroSQLite.loadFile(options.name, location),
87
+ ),
56
88
  loadFileAsync: (location: string) =>
57
- HybridNitroSQLite.loadFileAsync(options.name, location),
89
+ queueOperationAsync(options.name, async () => {
90
+ try {
91
+ return await HybridNitroSQLite.loadFileAsync(options.name, location)
92
+ } catch (error) {
93
+ throw NitroSQLiteError.fromError(error)
94
+ }
95
+ }),
96
+ }
97
+ }
98
+
99
+ function runSyncOperation<Result>(dbName: string, callback: () => Result) {
100
+ try {
101
+ return startOperationSync(dbName, callback)
102
+ } catch (error) {
103
+ throw NitroSQLiteError.fromError(error)
58
104
  }
59
105
  }
@@ -5,7 +5,7 @@ import type {
5
5
  QueryResult,
6
6
  QueryResultRow,
7
7
  } from '../types'
8
- import { execute, executeAsync } from './execute'
8
+ import { executeAsyncNative, executeNative } from './execute'
9
9
  import NitroSQLiteError from '../NitroSQLiteError'
10
10
 
11
11
  export const transaction = async <Result = void>(
@@ -26,7 +26,7 @@ export const transaction = async <Result = void>(
26
26
  `Cannot execute query on finalized transaction: ${dbName}`,
27
27
  )
28
28
  }
29
- return execute(dbName, query, params)
29
+ return executeNative(dbName, query, params)
30
30
  }
31
31
 
32
32
  const executeAsyncOnTransaction = <Row extends QueryResultRow = never>(
@@ -38,7 +38,7 @@ export const transaction = async <Result = void>(
38
38
  `Cannot execute query on finalized transaction: ${dbName}`,
39
39
  )
40
40
  }
41
- return executeAsync(dbName, query, params)
41
+ return executeAsyncNative(dbName, query, params)
42
42
  }
43
43
 
44
44
  const commit = () => {
@@ -48,7 +48,7 @@ export const transaction = async <Result = void>(
48
48
  )
49
49
  }
50
50
  isFinished = true
51
- return execute(dbName, 'COMMIT')
51
+ return executeNative(dbName, 'COMMIT')
52
52
  }
53
53
 
54
54
  const rollback = () => {
@@ -58,12 +58,12 @@ export const transaction = async <Result = void>(
58
58
  )
59
59
  }
60
60
  isFinished = true
61
- return execute(dbName, 'ROLLBACK')
61
+ return executeNative(dbName, 'ROLLBACK')
62
62
  }
63
63
 
64
64
  return await queueOperationAsync(dbName, async () => {
65
65
  try {
66
- await executeAsync(
66
+ await executeAsyncNative(
67
67
  dbName,
68
68
  isExclusive ? 'BEGIN EXCLUSIVE TRANSACTION' : 'BEGIN TRANSACTION',
69
69
  )