@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkerConnectionPool.d.ts","sourceRoot":"","sources":["../../src/db/WorkerConnectionPool.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,SAAS,EACT,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAA8B,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE9E,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG;IACnD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG,wBAAwB,CAAC;AAQ9E;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,SAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B,OAAO,CAAC,eAAe,CAAC,CAA8B;IACtD,OAAO,CAAC,eAAe,CAAC,CAA8B;gBAE1C,OAAO,EAAE,kBAAkB;IAWjC,UAAU;IA4FV,KAAK;IAaL,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;IAStG,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;IAsBvG,aAAa;CAUpB"}
@@ -2,8 +2,8 @@ import * as Comlink from 'comlink';
2
2
  import fs from 'node:fs/promises';
3
3
  import * as path from 'node:path';
4
4
  import { Worker } from 'node:worker_threads';
5
- import { BaseObserver, DBAdapterDefaultMixin, Semaphore, timeoutSignal } from '@powersync/common';
6
- import { isBundledToCommonJs } from '../utils/modules.js';
5
+ import { DBAdapter } from '@powersync/common';
6
+ import { Semaphore, timeoutSignal } from '@powersync/shared-internals';
7
7
  import { RemoteConnection } from './RemoteConnection.js';
8
8
  const READ_CONNECTIONS = 5;
9
9
  const defaultDatabaseImplementation = {
@@ -12,7 +12,7 @@ const defaultDatabaseImplementation = {
12
12
  /**
13
13
  * Adapter for better-sqlite3
14
14
  */
15
- export class WorkerConnectionPool extends BaseObserver {
15
+ export class WorkerConnectionPool extends DBAdapter {
16
16
  options;
17
17
  name;
18
18
  writeConnection;
@@ -43,16 +43,9 @@ export class WorkerConnectionPool extends BaseObserver {
43
43
  dbFilePath = path.join(this.options.dbLocation, dbFilePath);
44
44
  }
45
45
  const openWorker = async (isWriter) => {
46
- const isCommonJsModule = isBundledToCommonJs;
47
- let worker;
48
46
  const workerName = isWriter ? `write ${dbFilePath}` : `read ${dbFilePath}`;
49
47
  const workerFactory = this.options.openWorker ?? ((...args) => new Worker(...args));
50
- if (isCommonJsModule) {
51
- worker = workerFactory(path.resolve(__dirname, 'DefaultWorker.cjs'), { name: workerName });
52
- }
53
- else {
54
- worker = workerFactory(new URL('./DefaultWorker.js', import.meta.url), { name: workerName });
55
- }
48
+ const worker = workerFactory(new URL('./DefaultWorker.js', import.meta.url), { name: workerName });
56
49
  const listeners = new WeakMap();
57
50
  const comlink = Comlink.wrap({
58
51
  postMessage: worker.postMessage.bind(worker),
@@ -85,16 +78,13 @@ export class WorkerConnectionPool extends BaseObserver {
85
78
  implementation: this.options.implementation ?? defaultDatabaseImplementation
86
79
  }));
87
80
  if (isWriter) {
88
- await database.execute("SELECT powersync_update_hooks('install');", []);
81
+ await database.executeRaw("SELECT powersync_update_hooks('install');", []);
89
82
  }
90
83
  const connection = new RemoteConnection(worker, comlink, database);
91
84
  if (this.options.initializeConnection) {
92
85
  await this.options.initializeConnection(connection, isWriter);
93
86
  }
94
- if (!isWriter) {
95
- await connection.execute('pragma query_only = true');
96
- }
97
- else {
87
+ if (isWriter) {
98
88
  // We only need to enable this on the writer connection.
99
89
  // We can get `database is locked` errors if we enable this on concurrently opening read connections.
100
90
  await connection.execute('pragma journal_mode = WAL');
@@ -138,13 +128,11 @@ export class WorkerConnectionPool extends BaseObserver {
138
128
  return await fn(item);
139
129
  }
140
130
  finally {
141
- const serializedUpdates = await item.executeRaw("SELECT powersync_update_hooks('get');", []);
131
+ const { rawRows: serializedUpdates } = await item.executeRaw("SELECT powersync_update_hooks('get');", []);
142
132
  const updates = JSON.parse(serializedUpdates[0][0]);
143
133
  if (updates.length > 0) {
144
134
  const event = {
145
- tables: updates,
146
- groupedUpdates: {},
147
- rawUpdates: []
135
+ tables: updates
148
136
  };
149
137
  this.iterateListeners((cb) => cb.tablesUpdated?.(event));
150
138
  }
@@ -165,6 +153,4 @@ export class WorkerConnectionPool extends BaseObserver {
165
153
  }
166
154
  }
167
155
  }
168
- export class WorkerPoolDatabaseAdapter extends DBAdapterDefaultMixin(WorkerConnectionPool) {
169
- }
170
156
  //# sourceMappingURL=WorkerConnectionPool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerConnectionPool.js","sourceRoot":"","sources":["../../src/db/WorkerConnectionPool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkerConnectionPool.js","sourceRoot":"","sources":["../../src/db/WorkerConnectionPool.ts"],"names":[],"mappings":"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"}
@@ -42,3 +42,4 @@ export interface NodeSQLOpenOptions extends SQLOpenOptions {
42
42
  */
43
43
  initializeConnection?: (db: LockContext, isWriter: boolean) => Promise<void>;
44
44
  }
45
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/db/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,MAAM,CAAC,KAAK,YAAY,CAAC,OAAO,MAAM,CAAC,CAAC;AAE1G;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,MAAM,0BAA0B,GAAG,oBAAoB,GAAG,iBAAiB,CAAC;AAElF;;;GAGG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,cAAc,CAAC,EAAE,0BAA0B,CAAC;IAE5C;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;IAE1B;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E"}
package/lib/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from '@powersync/common';
2
2
  export * from './db/PowerSyncDatabase.js';
3
+ export * from './db/options.js';
3
4
  export * from './attachments/NodeFileSystemAdapter.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAElC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAEhC,cAAc,wCAAwC,CAAC"}
package/lib/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // Re export to only require one import in client side code
2
2
  export * from '@powersync/common';
3
3
  export * from './db/PowerSyncDatabase.js';
4
+ export * from './db/options.js';
4
5
  export * from './attachments/NodeFileSystemAdapter.js';
5
6
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,cAAc,mBAAmB,CAAC;AAElC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,wCAAwC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,cAAc,mBAAmB,CAAC;AAElC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAEhC,cAAc,wCAAwC,CAAC"}
@@ -1,7 +1,13 @@
1
- import { type ILogger, AbstractRemote, AbstractRemoteOptions, BSONImplementation, RemoteConnector } from '@powersync/common';
1
+ import { AbstractRemote, FetchOptions, RemoteConnector } from '@powersync/shared-internals';
2
2
  import { Dispatcher } from 'undici';
3
+ import { PowerSyncLogger } from '@powersync/common';
4
+ import type { WebSocketSyncStreamPlatform, WebSocketSupport } from '@powersync/shared-internals/websockets';
3
5
  export declare const STREAMING_POST_TIMEOUT_MS = 30000;
4
- export type NodeCustomConnectionOptions = {
6
+ export interface NodeRemoteOptions {
7
+ /**
8
+ * @internal Only meant to be used for tests.
9
+ */
10
+ customFetch?: typeof fetch;
5
11
  /**
6
12
  * Optional custom dispatcher for HTTP or WEB_SOCKET connections.
7
13
  *
@@ -9,15 +15,16 @@ export type NodeCustomConnectionOptions = {
9
15
  * or other connection options.
10
16
  */
11
17
  dispatcher?: Dispatcher;
12
- };
13
- export type NodeRemoteOptions = AbstractRemoteOptions & NodeCustomConnectionOptions;
18
+ }
14
19
  export declare class NodeRemote extends AbstractRemote {
15
20
  protected connector: RemoteConnector;
16
- protected logger: ILogger;
17
21
  private wsDispatcher;
18
- constructor(connector: RemoteConnector, logger?: ILogger, options?: Partial<NodeRemoteOptions>);
19
- protected createSocket(url: string): globalThis.WebSocket;
22
+ private fetchImpl;
23
+ constructor(connector: RemoteConnector, logger: PowerSyncLogger, options?: NodeRemoteOptions);
24
+ protected fetch({ resource, request }: FetchOptions): Promise<Response>;
25
+ protected loadWebSocketSupport(platform: WebSocketSyncStreamPlatform): Promise<WebSocketSupport>;
26
+ createSocket(url: string): globalThis.WebSocket;
20
27
  protected getWebsocketDispatcher(url: string): Dispatcher;
21
28
  getUserAgent(): string;
22
- getBSON(): Promise<BSONImplementation>;
23
29
  }
30
+ //# sourceMappingURL=NodeRemote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeRemote.d.ts","sourceRoot":"","sources":["../../../src/sync/stream/NodeRemote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAoF,MAAM,QAAQ,CAAC;AACtH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE5G,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAEhD,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,KAAK,CAAC;IAE3B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,qBAAa,UAAW,SAAQ,cAAc;IAK1C,SAAS,CAAC,SAAS,EAAE,eAAe;IAJtC,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,SAAS,CAAe;gBAGpB,SAAS,EAAE,eAAe,EACpC,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,iBAAiB;IAmB7B,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;cAIvD,oBAAoB,CAAC,QAAQ,EAAE,2BAA2B,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUtG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,SAAS;IAe/C,SAAS,CAAC,sBAAsB,CAAC,GAAG,EAAE,MAAM;IAc5C,YAAY,IAAI,MAAM;CAQvB"}
@@ -1,30 +1,37 @@
1
1
  import * as os from 'node:os';
2
- import { AbstractRemote, DEFAULT_REMOTE_LOGGER, FetchImplementationProvider } from '@powersync/common';
3
- import { BSON } from 'bson';
2
+ import { AbstractRemote } from '@powersync/shared-internals';
4
3
  import { EnvHttpProxyAgent, getGlobalDispatcher, ProxyAgent, WebSocket as UndiciWebSocket } from 'undici';
5
4
  export const STREAMING_POST_TIMEOUT_MS = 30_000;
6
- class NodeFetchProvider extends FetchImplementationProvider {
7
- getFetch() {
8
- return fetch.bind(globalThis);
9
- }
10
- }
11
5
  export class NodeRemote extends AbstractRemote {
12
6
  connector;
13
- logger;
14
7
  wsDispatcher;
15
- constructor(connector, logger = DEFAULT_REMOTE_LOGGER, options) {
16
- const fetchDispatcher = options?.dispatcher ?? defaultFetchDispatcher();
17
- super(connector, logger, {
18
- fetchImplementation: options?.fetchImplementation ?? new NodeFetchProvider(),
19
- fetchOptions: {
20
- dispatcher: fetchDispatcher
21
- },
22
- ...(options ?? {})
23
- });
8
+ fetchImpl;
9
+ constructor(connector, logger, options) {
10
+ super(connector, logger);
24
11
  this.connector = connector;
25
- this.logger = logger;
12
+ this.fetchImpl =
13
+ options?.customFetch ??
14
+ ((resource, init) => {
15
+ const dispatcher = options?.dispatcher ?? defaultFetchDispatcher();
16
+ return fetch(resource, {
17
+ // @ts-expect-error
18
+ dispatcher,
19
+ ...init
20
+ });
21
+ });
26
22
  this.wsDispatcher = options?.dispatcher;
27
23
  }
24
+ fetch({ resource, request }) {
25
+ return this.fetchImpl(resource, request);
26
+ }
27
+ async loadWebSocketSupport(platform) {
28
+ if (!websockets) {
29
+ // loadWebSocketSupport being called concurrently is safe, the import resolves to the same module in that case.
30
+ const module = await import('@powersync/shared-internals/websockets');
31
+ websockets = new module.WebSocketSupport(platform);
32
+ }
33
+ return websockets;
34
+ }
28
35
  createSocket(url) {
29
36
  // Create dedicated dispatcher for this WebSocket
30
37
  const baseDispatcher = this.getWebsocketDispatcher(url);
@@ -58,9 +65,6 @@ export class NodeRemote extends AbstractRemote {
58
65
  `${os.platform()}/${os.release()}`
59
66
  ].join(' ');
60
67
  }
61
- async getBSON() {
62
- return BSON;
63
- }
64
68
  }
65
69
  function defaultFetchDispatcher() {
66
70
  // EnvHttpProxyAgent automatically uses HTTP_PROXY, HTTPS_PROXY and NO_PROXY env vars by default.
@@ -76,4 +80,5 @@ function getProxyForProtocol(protocol) {
76
80
  process.env[`all_proxy`] ??
77
81
  process.env[`ALL_PROXY`]);
78
82
  }
83
+ let websockets;
79
84
  //# sourceMappingURL=NodeRemote.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeRemote.js","sourceRoot":"","sources":["../../../src/sync/stream/NodeRemote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NodeRemote.js","sourceRoot":"","sources":["../../../src/sync/stream/NodeRemote.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { AbstractStreamingSyncImplementation, AbstractStreamingSyncImplementationOptions, LockOptions, LockType, Mutex } from '@powersync/common';
1
+ import { AbstractStreamingSyncImplementation, AbstractStreamingSyncImplementationOptions, LockOptions, LockType, Mutex } from '@powersync/shared-internals';
2
2
  export declare class NodeStreamingSyncImplementation extends AbstractStreamingSyncImplementation {
3
3
  locks: Map<LockType, Mutex>;
4
4
  constructor(options: AbstractStreamingSyncImplementationOptions);
@@ -8,3 +8,4 @@ export declare class NodeStreamingSyncImplementation extends AbstractStreamingSy
8
8
  initLocks(): void;
9
9
  obtainLock<T>(lockOptions: LockOptions<T>): Promise<T>;
10
10
  }
11
+ //# sourceMappingURL=NodeStreamingSyncImplementation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeStreamingSyncImplementation.d.ts","sourceRoot":"","sources":["../../../src/sync/stream/NodeStreamingSyncImplementation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EACnC,0CAA0C,EAC1C,WAAW,EACX,QAAQ,EACR,KAAK,EACN,MAAM,6BAA6B,CAAC;AAQrC,qBAAa,+BAAgC,SAAQ,mCAAmC;IACtF,KAAK,EAAG,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;gBAEjB,OAAO,EAAE,0CAA0C;IAK/D;;OAEG;IACH,SAAS;IAgBT,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CASvD"}
@@ -1,11 +1,11 @@
1
- import { AbstractStreamingSyncImplementation, LockType, Mutex } from '@powersync/common';
1
+ import { AbstractStreamingSyncImplementation, LockType, Mutex } from '@powersync/shared-internals';
2
2
  /**
3
3
  * Global locks which prevent multiple instances from syncing
4
4
  * concurrently.
5
5
  */
6
6
  const LOCKS = new Map();
7
7
  export class NodeStreamingSyncImplementation extends AbstractStreamingSyncImplementation {
8
- locks;
8
+ locks; // initialized by initLocks()
9
9
  constructor(options) {
10
10
  super(options);
11
11
  this.initLocks();
@@ -1 +1 @@
1
- {"version":3,"file":"NodeStreamingSyncImplementation.js","sourceRoot":"","sources":["../../../src/sync/stream/NodeStreamingSyncImplementation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EAGnC,QAAQ,EACR,KAAK,EACN,MAAM,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;AAEtD,MAAM,OAAO,+BAAgC,SAAQ,mCAAmC;IACtF,KAAK,CAAuB;IAE5B,YAAY,OAAmD;QAC7D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACpC,IAAI,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;QAE3C,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,UAAU,CAAI,WAA2B;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,aAAa,WAAW,CAAC,IAAI,YAAY,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAClC,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"NodeStreamingSyncImplementation.js","sourceRoot":"","sources":["../../../src/sync/stream/NodeStreamingSyncImplementation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,EAGnC,QAAQ,EACR,KAAK,EACN,MAAM,6BAA6B,CAAC;AAErC;;;GAGG;AACH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;AAEtD,MAAM,OAAO,+BAAgC,SAAQ,mCAAmC;IACtF,KAAK,CAAwB,CAAC,6BAA6B;IAE3D,YAAY,OAAmD;QAC7D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACpC,IAAI,UAAU,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAE,CAAC;YACpC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;QAE3C,IAAI,UAAU,EAAE,CAAC;YACf,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,UAAU,CAAI,WAA2B;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,aAAa,WAAW,CAAC,IAAI,YAAY,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;YAClC,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;CACF"}
package/lib/worker.d.ts CHANGED
@@ -1 +1,2 @@
1
1
  export * from './db/SqliteWorker.js';
2
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powersync/node",
3
- "version": "0.0.0-dev-20260503073249",
3
+ "version": "0.0.0-dev-20260630141119",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -16,24 +16,14 @@
16
16
  "type": "module",
17
17
  "exports": {
18
18
  ".": {
19
- "import": {
20
- "types": "./lib/index.d.ts",
21
- "default": "./lib/index.js"
22
- },
23
- "require": {
24
- "types": "./dist/bundle.d.cts",
25
- "default": "./dist/bundle.cjs"
26
- }
19
+ "types": "./lib/index.d.ts",
20
+ "import": "./lib/index.js",
21
+ "module-sync": "./lib/index.js"
27
22
  },
28
23
  "./worker.js": {
29
- "import": {
30
- "types": "./lib/worker.d.ts",
31
- "default": "./lib/worker.js"
32
- },
33
- "require": {
34
- "types": "./dist/worker.d.cts",
35
- "default": "./dist/worker.cjs"
36
- }
24
+ "types": "./lib/worker.d.ts",
25
+ "import": "./lib/worker.js",
26
+ "module-sync": "./lib/worker.js"
37
27
  },
38
28
  "./package.json": "./package.json"
39
29
  },
@@ -48,7 +38,7 @@
48
38
  },
49
39
  "homepage": "https://docs.powersync.com/",
50
40
  "peerDependencies": {
51
- "@powersync/common": "0.0.0-dev-20260503073249",
41
+ "@powersync/common": "0.0.0-dev-20260630141119",
52
42
  "better-sqlite3": "12.x"
53
43
  },
54
44
  "peerDependenciesMeta": {
@@ -57,21 +47,20 @@
57
47
  }
58
48
  },
59
49
  "dependencies": {
60
- "bson": "^6.10.4",
61
50
  "comlink": "^4.4.2",
62
51
  "undici": "^7.11.0",
63
- "@powersync/common": "0.0.0-dev-20260503073249"
52
+ "@powersync/common": "0.0.0-dev-20260630141119",
53
+ "@powersync/shared-internals": "1.0.0"
64
54
  },
65
55
  "devDependencies": {
66
56
  "@types/node": "^24.0.0",
67
- "better-sqlite3": "^12.2.0",
57
+ "better-sqlite3": "^12.10.0",
58
+ "@types/better-sqlite3": "^7.6.13",
59
+ "bson": "^6.10.4",
68
60
  "drizzle-orm": "^0.44.7",
69
- "js-logger": "^1.6.1",
70
- "rollup": "^4.52.5",
71
- "rollup-plugin-dts": "^6.2.1",
72
- "typescript": "^5.5.3",
73
- "vitest": "^3.2.4",
74
- "@powersync/drizzle-driver": "0.7.3"
61
+ "typescript": "^6.0.3",
62
+ "vitest": "^4.1.8",
63
+ "@powersync/drizzle-driver": "0.0.0-dev-20260630141119"
75
64
  },
76
65
  "keywords": [
77
66
  "data sync",
@@ -82,11 +71,11 @@
82
71
  ],
83
72
  "scripts": {
84
73
  "prepare:core": "node download_core.js",
85
- "build": " pnpm prepare:core && tsc -b && rollup --config",
86
- "build:prod": "pnpm prepare:core && tsc -b && rollup --config",
74
+ "build": " pnpm prepare:core && tsc -b",
75
+ "build:prod": "pnpm prepare:core && tsc -b",
87
76
  "clean": "rm -rf lib dist tsconfig.tsbuildinfo",
88
77
  "watch": "tsc -b -w",
89
78
  "test": " pnpm prepare:core && vitest",
90
- "test:exports": "attw --pack . --ignore-rules no-resolution"
79
+ "test:exports": "attw --pack . --ignore-rules no-resolution cjs-resolves-to-esm"
91
80
  }
92
81
  }
@@ -1,12 +1,9 @@
1
- import { QueryResult } from '@powersync/common';
1
+ import { BaseQueryResult, QueryResult, RawQueryResult } from '@powersync/common';
2
2
  import { NodeDatabaseImplementation } from './options.js';
3
3
 
4
- export type ProxiedQueryResult = Omit<QueryResult, 'rows'> & {
5
- rows?: {
6
- _array: any[];
7
- length: number;
8
- };
9
- };
4
+ export interface MappedQueryResult extends BaseQueryResult {
5
+ rows?: unknown[];
6
+ }
10
7
 
11
8
  export interface AsyncDatabaseOpenOptions {
12
9
  path: string;
@@ -19,8 +16,8 @@ export interface AsyncDatabaseOpener {
19
16
  }
20
17
 
21
18
  export interface AsyncDatabase {
22
- execute: (query: string, params: any[]) => Promise<ProxiedQueryResult>;
23
- executeRaw: (query: string, params: any[]) => Promise<any[][]>;
24
- executeBatch: (query: string, params: any[][]) => Promise<ProxiedQueryResult>;
19
+ execute: (query: string, params: any[]) => Promise<MappedQueryResult>;
20
+ executeRaw: (query: string, params: any[]) => Promise<RawQueryResult>;
21
+ executeBatch: (query: string, params: any[][]) => Promise<QueryResult<never>>;
25
22
  close: () => Promise<void>;
26
23
  }
@@ -1,7 +1,8 @@
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
4
  import { threadId } from 'node:worker_threads';
5
+ import { QueryResult, queryResultWithoutRows, RawQueryResult, SqliteValue } from '@powersync/common';
5
6
 
6
7
  class BlockingAsyncDatabase implements AsyncDatabase {
7
8
  private readonly db: Database;
@@ -16,16 +17,13 @@ class BlockingAsyncDatabase implements AsyncDatabase {
16
17
  this.db.close();
17
18
  }
18
19
 
19
- async execute(query: string, params: any[]) {
20
+ async execute(query: string, params: any[]): Promise<MappedQueryResult> {
20
21
  const stmt = this.db.prepare(query);
21
22
  if (stmt.reader) {
22
23
  const rows = stmt.all(params);
23
24
  return {
24
25
  rowsAffected: 0,
25
- rows: {
26
- _array: rows,
27
- length: rows.length
28
- }
26
+ rows
29
27
  };
30
28
  } else {
31
29
  const info = stmt.run(params);
@@ -36,18 +34,28 @@ class BlockingAsyncDatabase implements AsyncDatabase {
36
34
  }
37
35
  }
38
36
 
39
- async executeRaw(query: string, params: any[]) {
37
+ async executeRaw(query: string, params: any[]): Promise<RawQueryResult> {
40
38
  const stmt = this.db.prepare(query);
41
-
42
39
  if (stmt.reader) {
43
- return stmt.raw().all(params) as any[][];
40
+ stmt.raw();
41
+ const rows = stmt.all(params);
42
+ return {
43
+ rowsAffected: 0,
44
+ columnNames: stmt.columns().map((c) => c.name),
45
+ rawRows: rows as SqliteValue[][]
46
+ };
44
47
  } else {
45
- stmt.raw().run(params);
46
- return [];
48
+ const info = stmt.run(params);
49
+ return {
50
+ rowsAffected: info.changes,
51
+ insertId: Number(info.lastInsertRowid),
52
+ rawRows: [],
53
+ columnNames: []
54
+ };
47
55
  }
48
56
  }
49
57
 
50
- async executeBatch(query: string, params: any[][]) {
58
+ async executeBatch(query: string, params: any[][]): Promise<QueryResult<never>> {
51
59
  params = params ?? [];
52
60
 
53
61
  let rowsAffected = 0;
@@ -58,13 +66,13 @@ class BlockingAsyncDatabase implements AsyncDatabase {
58
66
  rowsAffected += info.changes;
59
67
  }
60
68
 
61
- return { rowsAffected };
69
+ return queryResultWithoutRows({ rowsAffected });
62
70
  }
63
71
  }
64
72
 
65
73
  export async function openDatabase(worker: PowerSyncWorkerOptions, options: AsyncDatabaseOpenOptions) {
66
74
  const BetterSQLite3Database = await worker.loadBetterSqlite3();
67
- const baseDB = new BetterSQLite3Database(options.path);
75
+ const baseDB = new BetterSQLite3Database(options.path, { readonly: !options.isWriter });
68
76
  baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');
69
77
 
70
78
  const asyncDb = new BlockingAsyncDatabase(baseDB);
@@ -1,9 +1,9 @@
1
1
  import type { DatabaseSync } from 'node:sqlite';
2
2
  import { threadId } from 'node:worker_threads';
3
3
 
4
- import { dynamicImport } from '../utils/modules.js';
5
- import { AsyncDatabase, AsyncDatabaseOpenOptions } from './AsyncDatabase.js';
4
+ import { AsyncDatabase, AsyncDatabaseOpenOptions, MappedQueryResult } from './AsyncDatabase.js';
6
5
  import { PowerSyncWorkerOptions } from './SqliteWorker.js';
6
+ import { QueryResult, queryResultWithoutRows, RawQueryResult, SqliteValue } from '@powersync/common';
7
7
 
8
8
  class BlockingNodeDatabase implements AsyncDatabase {
9
9
  private readonly db: DatabaseSync;
@@ -18,25 +18,27 @@ class BlockingNodeDatabase implements AsyncDatabase {
18
18
  this.db.close();
19
19
  }
20
20
 
21
- async execute(query: string, params: any[]) {
21
+ async execute(query: string, params: any[]): Promise<MappedQueryResult> {
22
22
  const stmt = this.db.prepare(query);
23
23
  const rows = stmt.all(...params);
24
24
  return {
25
25
  rowsAffected: 0,
26
- rows: {
27
- _array: rows,
28
- length: rows.length
29
- }
26
+ rows
30
27
  };
31
28
  }
32
29
 
33
- async executeRaw(query: string, params: any[]) {
30
+ async executeRaw(query: string, params: any[]): Promise<RawQueryResult> {
34
31
  const stmt = this.db.prepare(query);
35
32
  (stmt as any).setReturnArrays(true); // Missing in @types/node, https://nodejs.org/api/sqlite.html#statementsetreturnarraysenabled
36
- return stmt.all(...params) as any as any[][];
33
+
34
+ const rows = stmt.all(...params) as any as SqliteValue[][];
35
+ return {
36
+ rawRows: rows,
37
+ columnNames: stmt.columns().map((c) => c.name!)
38
+ };
37
39
  }
38
40
 
39
- async executeBatch(query: string, params: any[][]) {
41
+ async executeBatch(query: string, params: any[][]): Promise<QueryResult<never>> {
40
42
  params = params ?? [];
41
43
 
42
44
  let rowsAffected = 0;
@@ -47,16 +49,17 @@ class BlockingNodeDatabase implements AsyncDatabase {
47
49
  rowsAffected += info.changes as number;
48
50
  }
49
51
 
50
- return { rowsAffected };
52
+ return queryResultWithoutRows({ rowsAffected });
51
53
  }
52
54
  }
53
55
 
54
56
  export async function openDatabase(worker: PowerSyncWorkerOptions, options: AsyncDatabaseOpenOptions) {
55
57
  // NOTE: We want to import node:sqlite dynamically, to avoid bundlers unconditionally requiring node:sqlite in the
56
58
  // end, since that would make us incompatible with older Node.JS versions.
57
- const { DatabaseSync } = await dynamicImport('node:sqlite');
59
+ const { DatabaseSync } = await import('node:sqlite');
58
60
 
59
- const baseDB = new DatabaseSync(options.path, { allowExtension: true });
61
+ const baseDB = new DatabaseSync(options.path, { allowExtension: true, readOnly: !options.isWriter });
62
+ // @ts-expect-error (type definition is wrong)
60
63
  baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');
61
64
 
62
65
  return new BlockingNodeDatabase(baseDB, options.isWriter);