@powersync/node 0.0.0-dev-20260503073249 → 0.0.0-dev-20260630141119

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 (73) hide show
  1. package/lib/attachments/NodeFileSystemAdapter.d.ts +1 -0
  2. package/lib/attachments/NodeFileSystemAdapter.d.ts.map +1 -0
  3. package/lib/db/AsyncDatabase.d.ts +8 -10
  4. package/lib/db/AsyncDatabase.d.ts.map +1 -0
  5. package/lib/db/BetterSqliteWorker.d.ts +6 -17
  6. package/lib/db/BetterSqliteWorker.d.ts.map +1 -0
  7. package/lib/db/BetterSqliteWorker.js +18 -9
  8. package/lib/db/BetterSqliteWorker.js.map +1 -1
  9. package/lib/db/DefaultWorker.d.ts +1 -0
  10. package/lib/db/DefaultWorker.d.ts.map +1 -0
  11. package/lib/db/NodeSqliteWorker.d.ts +6 -12
  12. package/lib/db/NodeSqliteWorker.d.ts.map +1 -0
  13. package/lib/db/NodeSqliteWorker.js +11 -9
  14. package/lib/db/NodeSqliteWorker.js.map +1 -1
  15. package/lib/db/PowerSyncDatabase.d.ts +7 -19
  16. package/lib/db/PowerSyncDatabase.d.ts.map +1 -0
  17. package/lib/db/PowerSyncDatabase.js +22 -29
  18. package/lib/db/PowerSyncDatabase.js.map +1 -1
  19. package/lib/db/RemoteConnection.d.ts +7 -18
  20. package/lib/db/RemoteConnection.d.ts.map +1 -0
  21. package/lib/db/RemoteConnection.js +10 -24
  22. package/lib/db/RemoteConnection.js.map +1 -1
  23. package/lib/db/SqliteWorker.d.ts +1 -0
  24. package/lib/db/SqliteWorker.d.ts.map +1 -0
  25. package/lib/db/SqliteWorker.js +3 -13
  26. package/lib/db/SqliteWorker.js.map +1 -1
  27. package/lib/db/WorkerConnectionPool.d.ts +5 -23
  28. package/lib/db/WorkerConnectionPool.d.ts.map +1 -0
  29. package/lib/db/WorkerConnectionPool.js +8 -22
  30. package/lib/db/WorkerConnectionPool.js.map +1 -1
  31. package/lib/db/options.d.ts +1 -0
  32. package/lib/db/options.d.ts.map +1 -0
  33. package/lib/index.d.ts +2 -0
  34. package/lib/index.d.ts.map +1 -0
  35. package/lib/index.js +1 -0
  36. package/lib/index.js.map +1 -1
  37. package/lib/sync/stream/NodeRemote.d.ts +15 -8
  38. package/lib/sync/stream/NodeRemote.d.ts.map +1 -0
  39. package/lib/sync/stream/NodeRemote.js +26 -21
  40. package/lib/sync/stream/NodeRemote.js.map +1 -1
  41. package/lib/sync/stream/NodeStreamingSyncImplementation.d.ts +2 -1
  42. package/lib/sync/stream/NodeStreamingSyncImplementation.d.ts.map +1 -0
  43. package/lib/sync/stream/NodeStreamingSyncImplementation.js +2 -2
  44. package/lib/sync/stream/NodeStreamingSyncImplementation.js.map +1 -1
  45. package/lib/worker.d.ts +1 -0
  46. package/lib/worker.d.ts.map +1 -0
  47. package/package.json +19 -30
  48. package/src/db/AsyncDatabase.ts +7 -10
  49. package/src/db/BetterSqliteWorker.ts +22 -14
  50. package/src/db/NodeSqliteWorker.ts +16 -13
  51. package/src/db/PowerSyncDatabase.ts +46 -59
  52. package/src/db/RemoteConnection.ts +12 -34
  53. package/src/db/SqliteWorker.ts +3 -13
  54. package/src/db/WorkerConnectionPool.ts +16 -33
  55. package/src/index.ts +2 -1
  56. package/src/sync/stream/NodeRemote.ts +43 -44
  57. package/src/sync/stream/NodeStreamingSyncImplementation.ts +2 -2
  58. package/dist/DefaultWorker.cjs +0 -232
  59. package/dist/DefaultWorker.cjs.map +0 -1
  60. package/dist/bundle.cjs +0 -533
  61. package/dist/bundle.cjs.map +0 -1
  62. package/dist/bundle.d.cts +0 -127
  63. package/dist/worker.cjs +0 -233
  64. package/dist/worker.cjs.map +0 -1
  65. package/dist/worker.d.cts +0 -20
  66. package/lib/utils/modules.d.ts +0 -2
  67. package/lib/utils/modules.js +0 -6
  68. package/lib/utils/modules.js.map +0 -1
  69. package/lib/utils/modules_commonjs.d.ts +0 -2
  70. package/lib/utils/modules_commonjs.js +0 -7
  71. package/lib/utils/modules_commonjs.js.map +0 -1
  72. package/src/utils/modules.ts +0 -6
  73. package/src/utils/modules_commonjs.ts +0 -7
@@ -28,3 +28,4 @@ export declare class NodeFileSystemAdapter implements LocalStorageAdapter {
28
28
  makeDir(path: string): Promise<void>;
29
29
  rmDir(path: string): Promise<void>;
30
30
  }
31
+ //# sourceMappingURL=NodeFileSystemAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeFileSystemAdapter.d.ts","sourceRoot":"","sources":["../../src/attachments/NodeFileSystemAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEtF;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,mBAAmB;IACnD,OAAO,CAAC,gBAAgB;gBAAhB,gBAAgB,GAAE,MAAsB;IAEtD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAI/B,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,EAAE,YAAY,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,EACpB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,YAAY,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GACxD,OAAO,CAAC,MAAM,CAAC;IAYZ,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,YAAY,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAS3G,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxE,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS9C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzC"}
@@ -1,11 +1,8 @@
1
- import { QueryResult } from '@powersync/common';
1
+ import { BaseQueryResult, QueryResult, RawQueryResult } from '@powersync/common';
2
2
  import { NodeDatabaseImplementation } from './options.js';
3
- export type ProxiedQueryResult = Omit<QueryResult, 'rows'> & {
4
- rows?: {
5
- _array: any[];
6
- length: number;
7
- };
8
- };
3
+ export interface MappedQueryResult extends BaseQueryResult {
4
+ rows?: unknown[];
5
+ }
9
6
  export interface AsyncDatabaseOpenOptions {
10
7
  path: string;
11
8
  isWriter: boolean;
@@ -15,8 +12,9 @@ export interface AsyncDatabaseOpener {
15
12
  open(options: AsyncDatabaseOpenOptions): Promise<AsyncDatabase>;
16
13
  }
17
14
  export interface AsyncDatabase {
18
- execute: (query: string, params: any[]) => Promise<ProxiedQueryResult>;
19
- executeRaw: (query: string, params: any[]) => Promise<any[][]>;
20
- executeBatch: (query: string, params: any[][]) => Promise<ProxiedQueryResult>;
15
+ execute: (query: string, params: any[]) => Promise<MappedQueryResult>;
16
+ executeRaw: (query: string, params: any[]) => Promise<RawQueryResult>;
17
+ executeBatch: (query: string, params: any[][]) => Promise<QueryResult<never>>;
21
18
  close: () => Promise<void>;
22
19
  }
20
+ //# sourceMappingURL=AsyncDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncDatabase.d.ts","sourceRoot":"","sources":["../../src/db/AsyncDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,0BAA0B,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtE,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IACtE,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B"}
@@ -1,26 +1,15 @@
1
1
  import type { Database } from 'better-sqlite3';
2
- import { AsyncDatabase, AsyncDatabaseOpenOptions } from './AsyncDatabase.js';
2
+ import { AsyncDatabase, AsyncDatabaseOpenOptions, MappedQueryResult } from './AsyncDatabase.js';
3
3
  import { PowerSyncWorkerOptions } from './SqliteWorker.js';
4
+ import { QueryResult, RawQueryResult } from '@powersync/common';
4
5
  declare class BlockingAsyncDatabase implements AsyncDatabase {
5
6
  private readonly db;
6
7
  constructor(db: Database);
7
8
  close(): Promise<void>;
8
- execute(query: string, params: any[]): Promise<{
9
- rowsAffected: number;
10
- rows: {
11
- _array: any;
12
- length: any;
13
- };
14
- insertId?: undefined;
15
- } | {
16
- rowsAffected: any;
17
- insertId: number;
18
- rows?: undefined;
19
- }>;
20
- executeRaw(query: string, params: any[]): Promise<any[][]>;
21
- executeBatch(query: string, params: any[][]): Promise<{
22
- rowsAffected: number;
23
- }>;
9
+ execute(query: string, params: any[]): Promise<MappedQueryResult>;
10
+ executeRaw(query: string, params: any[]): Promise<RawQueryResult>;
11
+ executeBatch(query: string, params: any[][]): Promise<QueryResult<never>>;
24
12
  }
25
13
  export declare function openDatabase(worker: PowerSyncWorkerOptions, options: AsyncDatabaseOpenOptions): Promise<BlockingAsyncDatabase>;
26
14
  export {};
15
+ //# sourceMappingURL=BetterSqliteWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BetterSqliteWorker.d.ts","sourceRoot":"","sources":["../../src/db/BetterSqliteWorker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,WAAW,EAA0B,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAErG,cAAM,qBAAsB,YAAW,aAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;gBAElB,EAAE,EAAE,QAAQ;IAMlB,KAAK;IAIL,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiBjE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAqBjE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;CAahF;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,wBAAwB,kCAOnG"}
@@ -1,4 +1,5 @@
1
1
  import { threadId } from 'node:worker_threads';
2
+ import { queryResultWithoutRows } from '@powersync/common';
2
3
  class BlockingAsyncDatabase {
3
4
  db;
4
5
  constructor(db) {
@@ -14,10 +15,7 @@ class BlockingAsyncDatabase {
14
15
  const rows = stmt.all(params);
15
16
  return {
16
17
  rowsAffected: 0,
17
- rows: {
18
- _array: rows,
19
- length: rows.length
20
- }
18
+ rows
21
19
  };
22
20
  }
23
21
  else {
@@ -31,11 +29,22 @@ class BlockingAsyncDatabase {
31
29
  async executeRaw(query, params) {
32
30
  const stmt = this.db.prepare(query);
33
31
  if (stmt.reader) {
34
- return stmt.raw().all(params);
32
+ stmt.raw();
33
+ const rows = stmt.all(params);
34
+ return {
35
+ rowsAffected: 0,
36
+ columnNames: stmt.columns().map((c) => c.name),
37
+ rawRows: rows
38
+ };
35
39
  }
36
40
  else {
37
- stmt.raw().run(params);
38
- return [];
41
+ const info = stmt.run(params);
42
+ return {
43
+ rowsAffected: info.changes,
44
+ insertId: Number(info.lastInsertRowid),
45
+ rawRows: [],
46
+ columnNames: []
47
+ };
39
48
  }
40
49
  }
41
50
  async executeBatch(query, params) {
@@ -46,12 +55,12 @@ class BlockingAsyncDatabase {
46
55
  const info = stmt.run(paramSet);
47
56
  rowsAffected += info.changes;
48
57
  }
49
- return { rowsAffected };
58
+ return queryResultWithoutRows({ rowsAffected });
50
59
  }
51
60
  }
52
61
  export async function openDatabase(worker, options) {
53
62
  const BetterSQLite3Database = await worker.loadBetterSqlite3();
54
- const baseDB = new BetterSQLite3Database(options.path);
63
+ const baseDB = new BetterSQLite3Database(options.path, { readonly: !options.isWriter });
55
64
  baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');
56
65
  const asyncDb = new BlockingAsyncDatabase(baseDB);
57
66
  return asyncDb;
@@ -1 +1 @@
1
- {"version":3,"file":"BetterSqliteWorker.js","sourceRoot":"","sources":["../../src/db/BetterSqliteWorker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,qBAAqB;IACR,EAAE,CAAW;IAE9B,YAAY,EAAY;QACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,MAAa;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO;gBACL,YAAY,EAAE,CAAC;gBACf,IAAI,EAAE;oBACJ,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO;gBACL,YAAY,EAAE,IAAI,CAAC,OAAO;gBAC1B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;aACvC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,MAAa;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAY,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,MAAe;QAC/C,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAEtB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC;QAC/B,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAA8B,EAAE,OAAiC;IAClG,MAAM,qBAAqB,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"BetterSqliteWorker.js","sourceRoot":"","sources":["../../src/db/BetterSqliteWorker.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export {};
2
+ //# sourceMappingURL=DefaultWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultWorker.d.ts","sourceRoot":"","sources":["../../src/db/DefaultWorker.ts"],"names":[],"mappings":""}
@@ -1,21 +1,15 @@
1
1
  import type { DatabaseSync } from 'node:sqlite';
2
- import { AsyncDatabase, AsyncDatabaseOpenOptions } from './AsyncDatabase.js';
2
+ import { AsyncDatabase, AsyncDatabaseOpenOptions, MappedQueryResult } from './AsyncDatabase.js';
3
3
  import { PowerSyncWorkerOptions } from './SqliteWorker.js';
4
+ import { QueryResult, RawQueryResult } from '@powersync/common';
4
5
  declare class BlockingNodeDatabase implements AsyncDatabase {
5
6
  private readonly db;
6
7
  constructor(db: DatabaseSync, write: boolean);
7
8
  close(): Promise<void>;
8
- execute(query: string, params: any[]): Promise<{
9
- rowsAffected: number;
10
- rows: {
11
- _array: Record<string, import("node:sqlite").SQLOutputValue>[];
12
- length: number;
13
- };
14
- }>;
15
- executeRaw(query: string, params: any[]): Promise<any[][]>;
16
- executeBatch(query: string, params: any[][]): Promise<{
17
- rowsAffected: number;
18
- }>;
9
+ execute(query: string, params: any[]): Promise<MappedQueryResult>;
10
+ executeRaw(query: string, params: any[]): Promise<RawQueryResult>;
11
+ executeBatch(query: string, params: any[][]): Promise<QueryResult<never>>;
19
12
  }
20
13
  export declare function openDatabase(worker: PowerSyncWorkerOptions, options: AsyncDatabaseOpenOptions): Promise<BlockingNodeDatabase>;
21
14
  export {};
15
+ //# sourceMappingURL=NodeSqliteWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeSqliteWorker.d.ts","sourceRoot":"","sources":["../../src/db/NodeSqliteWorker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAA0B,cAAc,EAAe,MAAM,mBAAmB,CAAC;AAErG,cAAM,oBAAqB,YAAW,aAAa;IACjD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;gBAEtB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO;IAMtC,KAAK;IAIL,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IASjE,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAWjE,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;CAahF;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,wBAAwB,iCAUnG"}
@@ -1,5 +1,5 @@
1
1
  import { threadId } from 'node:worker_threads';
2
- import { dynamicImport } from '../utils/modules.js';
2
+ import { queryResultWithoutRows } from '@powersync/common';
3
3
  class BlockingNodeDatabase {
4
4
  db;
5
5
  constructor(db, write) {
@@ -14,16 +14,17 @@ class BlockingNodeDatabase {
14
14
  const rows = stmt.all(...params);
15
15
  return {
16
16
  rowsAffected: 0,
17
- rows: {
18
- _array: rows,
19
- length: rows.length
20
- }
17
+ rows
21
18
  };
22
19
  }
23
20
  async executeRaw(query, params) {
24
21
  const stmt = this.db.prepare(query);
25
22
  stmt.setReturnArrays(true); // Missing in @types/node, https://nodejs.org/api/sqlite.html#statementsetreturnarraysenabled
26
- return stmt.all(...params);
23
+ const rows = stmt.all(...params);
24
+ return {
25
+ rawRows: rows,
26
+ columnNames: stmt.columns().map((c) => c.name)
27
+ };
27
28
  }
28
29
  async executeBatch(query, params) {
29
30
  params = params ?? [];
@@ -33,14 +34,15 @@ class BlockingNodeDatabase {
33
34
  const info = stmt.run(...paramSet);
34
35
  rowsAffected += info.changes;
35
36
  }
36
- return { rowsAffected };
37
+ return queryResultWithoutRows({ rowsAffected });
37
38
  }
38
39
  }
39
40
  export async function openDatabase(worker, options) {
40
41
  // NOTE: We want to import node:sqlite dynamically, to avoid bundlers unconditionally requiring node:sqlite in the
41
42
  // end, since that would make us incompatible with older Node.JS versions.
42
- const { DatabaseSync } = await dynamicImport('node:sqlite');
43
- const baseDB = new DatabaseSync(options.path, { allowExtension: true });
43
+ const { DatabaseSync } = await import('node:sqlite');
44
+ const baseDB = new DatabaseSync(options.path, { allowExtension: true, readOnly: !options.isWriter });
45
+ // @ts-expect-error (type definition is wrong)
44
46
  baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');
45
47
  return new BlockingNodeDatabase(baseDB, options.isWriter);
46
48
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NodeSqliteWorker.js","sourceRoot":"","sources":["../../src/db/NodeSqliteWorker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,MAAM,oBAAoB;IACP,EAAE,CAAe;IAElC,YAAY,EAAgB,EAAE,KAAc;QAC1C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,MAAa;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACjC,OAAO;YACL,YAAY,EAAE,CAAC;YACf,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,MAAa;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,6FAA6F;QAClI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAmB,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,MAAe;QAC/C,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAEtB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;YACnC,YAAY,IAAI,IAAI,CAAC,OAAiB,CAAC;QACzC,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAA8B,EAAE,OAAiC;IAClG,kHAAkH;IAClH,0EAA0E;IAC1E,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAEvE,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"NodeSqliteWorker.js","sourceRoot":"","sources":["../../src/db/NodeSqliteWorker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI/C,OAAO,EAAe,sBAAsB,EAA+B,MAAM,mBAAmB,CAAC;AAErG,MAAM,oBAAoB;IACP,EAAE,CAAe;IAElC,YAAY,EAAgB,EAAE,KAAc;QAC1C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,MAAa;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACjC,OAAO;YACL,YAAY,EAAE,CAAC;YACf,IAAI;SACL,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,MAAa;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,6FAA6F;QAElI,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAA2B,CAAC;QAC3D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC;SAChD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,MAAe;QAC/C,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAEtB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;YACnC,YAAY,IAAI,IAAI,CAAC,OAAiB,CAAC;QACzC,CAAC;QAED,OAAO,sBAAsB,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IAClD,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAA8B,EAAE,OAAiC;IAClG,kHAAkH;IAClH,0EAA0E;IAC1E,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrG,8CAA8C;IAC9C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAEvE,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5D,CAAC"}
@@ -1,17 +1,12 @@
1
- import { AbstractPowerSyncDatabase, AbstractRemoteOptions, AbstractStreamingSyncImplementation, AdditionalConnectionOptions, BucketStorageAdapter, DBAdapter, PowerSyncBackendConnector, PowerSyncConnectionOptions, PowerSyncDatabaseOptions, PowerSyncDatabaseOptionsWithSettings, RequiredAdditionalConnectionOptions, SQLOpenFactory } from '@powersync/common';
2
- import { NodeCustomConnectionOptions } from '../sync/stream/NodeRemote.js';
1
+ import { BasePowerSyncDatabaseOptions, CommonPowerSyncDatabase, DatabaseSource, PowerSyncDatabaseConstructor } from '@powersync/common';
2
+ import { NodeRemoteOptions } from '../sync/stream/NodeRemote.js';
3
3
  import { NodeSQLOpenOptions } from './options.js';
4
- export type NodePowerSyncDatabaseOptions = PowerSyncDatabaseOptions & {
5
- database: DBAdapter | SQLOpenFactory | NodeSQLOpenOptions;
4
+ export type NodePowerSyncDatabaseOptions = BasePowerSyncDatabaseOptions & DatabaseSource<NodeSQLOpenOptions> & {
6
5
  /**
7
6
  * Options to override how the SDK will connect to the sync service.
8
- *
9
- * This option is intended to be used for internal tests.
10
7
  */
11
- remoteOptions?: Partial<AbstractRemoteOptions>;
8
+ remoteOptions?: NodeRemoteOptions;
12
9
  };
13
- export type NodeAdditionalConnectionOptions = AdditionalConnectionOptions & NodeCustomConnectionOptions;
14
- export type NodePowerSyncConnectionOptions = PowerSyncConnectionOptions & NodeAdditionalConnectionOptions;
15
10
  /**
16
11
  * A PowerSync database which provides SQLite functionality
17
12
  * which is automatically synced.
@@ -26,14 +21,7 @@ export type NodePowerSyncConnectionOptions = PowerSyncConnectionOptions & NodeAd
26
21
  * });
27
22
  * ```
28
23
  */
29
- export declare class PowerSyncDatabase extends AbstractPowerSyncDatabase {
30
- constructor(options: NodePowerSyncDatabaseOptions);
31
- _initialize(): Promise<void>;
32
- /**
33
- * Opens a DBAdapter using better-sqlite3 as the default SQLite open factory.
34
- */
35
- protected openDBAdapter(options: PowerSyncDatabaseOptionsWithSettings): DBAdapter;
36
- protected generateBucketStorageAdapter(): BucketStorageAdapter;
37
- connect(connector: PowerSyncBackendConnector, options?: PowerSyncConnectionOptions & NodeCustomConnectionOptions): Promise<void>;
38
- protected generateSyncStreamImplementation(connector: PowerSyncBackendConnector, options: RequiredAdditionalConnectionOptions & NodeAdditionalConnectionOptions): AbstractStreamingSyncImplementation;
24
+ export declare const PowerSyncDatabase: PowerSyncDatabaseConstructor<NodePowerSyncDatabaseOptions>;
25
+ export interface PowerSyncDatabase extends CommonPowerSyncDatabase {
39
26
  }
27
+ //# sourceMappingURL=PowerSyncDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PowerSyncDatabase.d.ts","sourceRoot":"","sources":["../../src/db/PowerSyncDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,cAAc,EAGd,4BAA4B,EAC7B,MAAM,mBAAmB,CAAC;AAU3B,OAAO,EAAc,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAI7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,MAAM,4BAA4B,GAAG,4BAA4B,GACrE,cAAc,CAAC,kBAAkB,CAAC,GAAG;IACnC;;OAEG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC,CAAC;AA0CJ;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,iBAAiB,EAAE,4BAA4B,CAAC,4BAA4B,CAAyB,CAAC;AAEnH,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;CAAG"}
@@ -1,22 +1,8 @@
1
- import { AbstractPowerSyncDatabase, SqliteBucketStorage } from '@powersync/common';
1
+ import { BasePowerSyncDatabase, SqliteBucketStorage, openDatabase } from '@powersync/shared-internals';
2
2
  import { NodeRemote } from '../sync/stream/NodeRemote.js';
3
3
  import { NodeStreamingSyncImplementation } from '../sync/stream/NodeStreamingSyncImplementation.js';
4
- import { WorkerPoolDatabaseAdapter } from './WorkerConnectionPool.js';
5
- /**
6
- * A PowerSync database which provides SQLite functionality
7
- * which is automatically synced.
8
- *
9
- * @example
10
- * ```typescript
11
- * export const db = new PowerSyncDatabase({
12
- * schema: AppSchema,
13
- * database: {
14
- * dbFilename: 'example.db'
15
- * }
16
- * });
17
- * ```
18
- */
19
- export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
4
+ import { WorkerConnectionPool } from './WorkerConnectionPool.js';
5
+ class NodePowerSyncDatabase extends BasePowerSyncDatabase {
20
6
  constructor(options) {
21
7
  super(options);
22
8
  }
@@ -25,24 +11,15 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
25
11
  await this.database.initialize();
26
12
  }
27
13
  }
28
- /**
29
- * Opens a DBAdapter using better-sqlite3 as the default SQLite open factory.
30
- */
31
- openDBAdapter(options) {
32
- return new WorkerPoolDatabaseAdapter(options.database);
14
+ openDBAdapter() {
15
+ return openDatabase(this.options, (open) => new WorkerConnectionPool(open));
33
16
  }
34
17
  generateBucketStorageAdapter() {
35
18
  return new SqliteBucketStorage(this.database, this.logger);
36
19
  }
37
- connect(connector, options) {
38
- return super.connect(connector, options);
39
- }
40
20
  generateSyncStreamImplementation(connector, options) {
41
21
  const logger = this.logger;
42
- const remote = new NodeRemote(connector, logger, {
43
- dispatcher: options.dispatcher,
44
- ...this.options.remoteOptions
45
- });
22
+ const remote = new NodeRemote(connector, logger, this.options.remoteOptions);
46
23
  return new NodeStreamingSyncImplementation({
47
24
  adapter: this.bucketStorageAdapter,
48
25
  remote,
@@ -56,4 +33,20 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
56
33
  });
57
34
  }
58
35
  }
36
+ /**
37
+ * A PowerSync database which provides SQLite functionality
38
+ * which is automatically synced.
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * export const db = new PowerSyncDatabase({
43
+ * schema: AppSchema,
44
+ * database: {
45
+ * dbFilename: 'example.db'
46
+ * }
47
+ * });
48
+ * ```
49
+ */
50
+ // Typed constructor to avoid leaking AbstractPowerSyncDatabase into the public interface
51
+ export const PowerSyncDatabase = NodePowerSyncDatabase;
59
52
  //# sourceMappingURL=PowerSyncDatabase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PowerSyncDatabase.js","sourceRoot":"","sources":["../../src/db/PowerSyncDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EAWzB,mBAAmB,EAEpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAA+B,UAAU,EAAE,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AAEpG,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAiBtE;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,iBAAkB,SAAQ,yBAAyB;IAC9D,YAAY,OAAqC;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAO,IAAI,CAAC,QAAsC,CAAC,UAAU,EAAE,CAAC;QAClE,CAAC;IACH,CAAC;IAED;;OAEG;IACO,aAAa,CAAC,OAA6C;QACnE,OAAO,IAAI,yBAAyB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAES,4BAA4B;QACpC,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CACL,SAAoC,EACpC,OAAkE;QAElE,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAES,gCAAgC,CACxC,SAAoC,EACpC,OAA8E;QAE9E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE;YAC/C,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,GAAI,IAAI,CAAC,OAAwC,CAAC,aAAa;SAChE,CAAC,CAAC;QAEH,OAAO,IAAI,+BAA+B,CAAC;YACzC,OAAO,EAAE,IAAI,CAAC,oBAAoB;YAClC,MAAM;YACN,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,MAAM,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;YACD,GAAG,OAAO;YACV,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YAC9B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"PowerSyncDatabase.js","sourceRoot":"","sources":["../../src/db/PowerSyncDatabase.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,qBAAqB,EAIrB,mBAAmB,EACnB,YAAY,EACb,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,UAAU,EAAqB,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AAEpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAWjE,MAAM,qBAAsB,SAAQ,qBAAmD;IACrF,YAAY,OAAqC;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAO,IAAI,CAAC,QAAiC,CAAC,UAAU,EAAE,CAAC;QAC7D,CAAC;IACH,CAAC;IAES,aAAa;QACrB,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAES,4BAA4B;QACpC,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7D,CAAC;IAES,gCAAgC,CACxC,SAAoC,EACpC,OAAwC;QAExC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAE7E,OAAO,IAAI,+BAA+B,CAAC;YACzC,OAAO,EAAE,IAAI,CAAC,oBAAoB;YAClC,MAAM;YACN,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,MAAM,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;YACD,GAAG,OAAO;YACV,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YAC9B,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,yFAAyF;AACzF,MAAM,CAAC,MAAM,iBAAiB,GAA+D,qBAAqB,CAAC"}
@@ -1,11 +1,11 @@
1
- import { QueryResult, SqlExecutor, LockContext } from '@powersync/common';
1
+ import { QueryResult, LockContext, RawQueryResult, SqliteRecord } from '@powersync/common';
2
2
  import { Remote } from 'comlink';
3
3
  import { Worker } from 'node:worker_threads';
4
- import { AsyncDatabase, AsyncDatabaseOpener, ProxiedQueryResult } from './AsyncDatabase.js';
4
+ import { AsyncDatabase, AsyncDatabaseOpener } from './AsyncDatabase.js';
5
5
  /**
6
6
  * A PowerSync database connection implemented with RPC calls to a background worker.
7
7
  */
8
- declare class BaseRemoteConnection implements SqlExecutor {
8
+ export declare class RemoteConnection extends LockContext {
9
9
  private readonly worker;
10
10
  private readonly comlink;
11
11
  private readonly database;
@@ -16,21 +16,10 @@ declare class BaseRemoteConnection implements SqlExecutor {
16
16
  * because stack traces from worker errors are otherwise unrelated to the application issue that has caused them.
17
17
  */
18
18
  private withRemote;
19
- executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
20
- execute(query: string, params?: any[] | undefined): Promise<QueryResult>;
21
- executeRaw(query: string, params?: any[] | undefined): Promise<any[][]>;
19
+ execute<T = SqliteRecord>(query: string, params?: any[] | undefined): Promise<QueryResult<T>>;
20
+ executeBatch(query: string, params?: any[][]): Promise<QueryResult<never>>;
21
+ executeRaw(query: string, params?: any[] | undefined): Promise<RawQueryResult>;
22
22
  refreshSchema(): Promise<void>;
23
23
  close(): Promise<void>;
24
- static wrapQueryResult(result: ProxiedQueryResult): QueryResult;
25
24
  }
26
- declare const RemoteConnection_base: (new (...args: any[]) => {
27
- getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
28
- getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
29
- get<T>(sql: string, parameters?: any[]): Promise<T>;
30
- executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
31
- execute: (query: string, params?: any[] | undefined) => Promise<QueryResult>;
32
- executeRaw: (query: string, params?: any[] | undefined) => Promise<any[][]>;
33
- }) & typeof BaseRemoteConnection;
34
- export declare class RemoteConnection extends RemoteConnection_base implements LockContext {
35
- }
36
- export {};
25
+ //# sourceMappingURL=RemoteConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteConnection.d.ts","sourceRoot":"","sources":["../../src/db/RemoteConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAyB,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAgB,MAAM,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGxE;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IAEjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyB;gBAEhD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,aAAa,CAAC;IAWjG;;;OAGG;IACH,OAAO,CAAC,UAAU;IAiClB,OAAO,CAAC,CAAC,GAAG,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAO7F,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,GAAG,EAAE,EAAO,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAM9E,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;IAMxE,aAAa;IAIb,KAAK;CAMZ"}
@@ -1,14 +1,16 @@
1
- import { ConnectionClosedError, DBGetUtilsDefaultMixin } from '@powersync/common';
1
+ import { LockContext, queryResultFromMapped } from '@powersync/common';
2
2
  import { releaseProxy } from 'comlink';
3
+ import { ConnectionClosedError } from '@powersync/shared-internals';
3
4
  /**
4
5
  * A PowerSync database connection implemented with RPC calls to a background worker.
5
6
  */
6
- class BaseRemoteConnection {
7
+ export class RemoteConnection extends LockContext {
7
8
  worker;
8
9
  comlink;
9
10
  database;
10
11
  notifyWorkerClosed = new AbortController();
11
12
  constructor(worker, comlink, database) {
13
+ super();
12
14
  this.worker = worker;
13
15
  this.comlink = comlink;
14
16
  this.database = database;
@@ -46,16 +48,15 @@ class BaseRemoteConnection {
46
48
  });
47
49
  });
48
50
  }
49
- executeBatch(query, params = []) {
51
+ execute(query, params) {
50
52
  return this.withRemote(async () => {
51
- const result = await this.database.executeBatch(query, params ?? []);
52
- return BaseRemoteConnection.wrapQueryResult(result);
53
+ const results = await this.database.execute(query, params ?? []);
54
+ return queryResultFromMapped(results, results.rows);
53
55
  });
54
56
  }
55
- execute(query, params) {
57
+ executeBatch(query, params = []) {
56
58
  return this.withRemote(async () => {
57
- const result = await this.database.execute(query, params ?? []);
58
- return BaseRemoteConnection.wrapQueryResult(result);
59
+ return await this.database.executeBatch(query, params ?? []);
59
60
  });
60
61
  }
61
62
  executeRaw(query, params) {
@@ -64,7 +65,7 @@ class BaseRemoteConnection {
64
65
  });
65
66
  }
66
67
  async refreshSchema() {
67
- await this.execute("pragma table_info('sqlite_master')");
68
+ await this.executeRaw("pragma table_info('sqlite_master')");
68
69
  }
69
70
  async close() {
70
71
  await this.database.close();
@@ -72,20 +73,5 @@ class BaseRemoteConnection {
72
73
  this.comlink[releaseProxy]();
73
74
  await this.worker.terminate();
74
75
  }
75
- static wrapQueryResult(result) {
76
- let rows = undefined;
77
- if (result.rows) {
78
- rows = {
79
- ...result.rows,
80
- item: (idx) => result.rows?._array[idx]
81
- };
82
- }
83
- return {
84
- ...result,
85
- rows
86
- };
87
- }
88
- }
89
- export class RemoteConnection extends DBGetUtilsDefaultMixin(BaseRemoteConnection) {
90
76
  }
91
77
  //# sourceMappingURL=RemoteConnection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RemoteConnection.js","sourceRoot":"","sources":["../../src/db/RemoteConnection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RemoteConnection.js","sourceRoot":"","sources":["../../src/db/RemoteConnection.ts"],"names":[],"mappings":"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"}
@@ -15,3 +15,4 @@ export interface PowerSyncWorkerOptions {
15
15
  */
16
16
  export declare function getPowerSyncExtensionFilename(): string;
17
17
  export declare function startPowerSyncWorker(options?: Partial<PowerSyncWorkerOptions>): void;
18
+ //# sourceMappingURL=SqliteWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SqliteWorker.d.ts","sourceRoot":"","sources":["../../src/db/SqliteWorker.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,aAAa,EAAE,MAAM,MAAM,CAAC;IAE5B;;OAEG;IACH,iBAAiB,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,6BAA6B,WAyC5C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,QAe7E"}
@@ -1,9 +1,7 @@
1
1
  import * as Comlink from 'comlink';
2
2
  import OS from 'node:os';
3
- import * as path from 'node:path';
4
3
  import url from 'node:url';
5
4
  import { parentPort } from 'node:worker_threads';
6
- import { dynamicImport, isBundledToCommonJs } from '../utils/modules.js';
7
5
  import { openDatabase as openBetterSqliteDatabase } from './BetterSqliteWorker.js';
8
6
  import { openDatabase as openNodeDatabase } from './NodeSqliteWorker.js';
9
7
  /**
@@ -61,21 +59,13 @@ export function getPowerSyncExtensionFilename() {
61
59
  export function startPowerSyncWorker(options) {
62
60
  const resolvedOptions = {
63
61
  extensionPath() {
64
- const isCommonJsModule = isBundledToCommonJs;
65
62
  const extensionFilename = getPowerSyncExtensionFilename();
66
- let resolved;
67
- if (isCommonJsModule) {
68
- resolved = path.resolve(__dirname, '../lib/', extensionFilename);
69
- }
70
- else {
71
- resolved = url.fileURLToPath(new URL(`../${extensionFilename}`, import.meta.url));
72
- }
63
+ const resolved = url.fileURLToPath(new URL(`../${extensionFilename}`, import.meta.url));
73
64
  return resolved;
74
65
  },
75
66
  async loadBetterSqlite3() {
76
- const module = await dynamicImport('better-sqlite3');
77
- // require() gives us the default directly, for an ESM import() we need to use the default export.
78
- return isBundledToCommonJs ? module : module.default;
67
+ const module = await import('better-sqlite3');
68
+ return module.default;
79
69
  },
80
70
  ...options
81
71
  };
@@ -1 +1 @@
1
- {"version":3,"file":"SqliteWorker.js","sourceRoot":"","sources":["../../src/db/SqliteWorker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SqliteWorker.js","sourceRoot":"","sources":["../../src/db/SqliteWorker.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { BaseObserver, ConnectionPool, DBAdapterListener, DBLockOptions, LockContext, QueryResult, Transaction } from '@powersync/common';
1
+ import { DBAdapter, DBLockOptions, LockContext, QueryResult, Transaction } from '@powersync/common';
2
2
  import { RemoteConnection } from './RemoteConnection.js';
3
3
  import { NodeSQLOpenOptions } from './options.js';
4
4
  export type BetterSQLite3LockContext = LockContext & {
@@ -8,11 +8,11 @@ export type BetterSQLite3Transaction = Transaction & BetterSQLite3LockContext;
8
8
  /**
9
9
  * Adapter for better-sqlite3
10
10
  */
11
- export declare class WorkerConnectionPool extends BaseObserver<DBAdapterListener> implements ConnectionPool {
11
+ export declare class WorkerConnectionPool extends DBAdapter {
12
12
  private readonly options;
13
13
  readonly name: string;
14
- private writeConnection;
15
- private readConnections;
14
+ private writeConnection?;
15
+ private readConnections?;
16
16
  constructor(options: NodeSQLOpenOptions);
17
17
  initialize(): Promise<void>;
18
18
  close(): Promise<void>;
@@ -20,22 +20,4 @@ export declare class WorkerConnectionPool extends BaseObserver<DBAdapterListener
20
20
  writeLock<T>(fn: (tx: RemoteConnection) => Promise<T>, options?: DBLockOptions | undefined): Promise<T>;
21
21
  refreshSchema(): Promise<void>;
22
22
  }
23
- declare const WorkerPoolDatabaseAdapter_base: (new (...args: any[]) => {
24
- readTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
25
- writeTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
26
- getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
27
- getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
28
- get<T>(sql: string, parameters?: any[]): Promise<T>;
29
- execute(query: string, params?: any[]): Promise<QueryResult>;
30
- executeRaw(query: string, params?: any[]): Promise<any[][]>;
31
- executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
32
- name: string;
33
- close: () => void | Promise<void>;
34
- readLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
35
- writeLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
36
- refreshSchema: () => Promise<void>;
37
- registerListener(listener: Partial<DBAdapterListener>): () => void;
38
- }) & typeof WorkerConnectionPool;
39
- export declare class WorkerPoolDatabaseAdapter extends WorkerPoolDatabaseAdapter_base {
40
- }
41
- export {};
23
+ //# sourceMappingURL=WorkerConnectionPool.d.ts.map