@powersync/node 0.17.1 → 0.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bundle.cjs CHANGED
@@ -154,7 +154,7 @@ class NodeStreamingSyncImplementation extends common.AbstractStreamingSyncImplem
154
154
  /**
155
155
  * A PowerSync database connection implemented with RPC calls to a background worker.
156
156
  */
157
- class RemoteConnection {
157
+ class BaseRemoteConnection {
158
158
  isBusy = false;
159
159
  worker;
160
160
  comlink;
@@ -201,13 +201,13 @@ class RemoteConnection {
201
201
  executeBatch(query, params = []) {
202
202
  return this.withRemote(async () => {
203
203
  const result = await this.database.executeBatch(query, params ?? []);
204
- return RemoteConnection.wrapQueryResult(result);
204
+ return BaseRemoteConnection.wrapQueryResult(result);
205
205
  });
206
206
  }
207
207
  execute(query, params) {
208
208
  return this.withRemote(async () => {
209
209
  const result = await this.database.execute(query, params ?? []);
210
- return RemoteConnection.wrapQueryResult(result);
210
+ return BaseRemoteConnection.wrapQueryResult(result);
211
211
  });
212
212
  }
213
213
  executeRaw(query, params) {
@@ -215,22 +215,6 @@ class RemoteConnection {
215
215
  return await this.database.executeRaw(query, params ?? []);
216
216
  });
217
217
  }
218
- async getAll(sql, parameters) {
219
- const res = await this.execute(sql, parameters);
220
- return res.rows?._array ?? [];
221
- }
222
- async getOptional(sql, parameters) {
223
- const res = await this.execute(sql, parameters);
224
- return res.rows?.item(0) ?? null;
225
- }
226
- async get(sql, parameters) {
227
- const res = await this.execute(sql, parameters);
228
- const first = res.rows?.item(0);
229
- if (!first) {
230
- throw new Error('Result set is empty');
231
- }
232
- return first;
233
- }
234
218
  async refreshSchema() {
235
219
  await this.execute("pragma table_info('sqlite_master')");
236
220
  }
@@ -254,6 +238,8 @@ class RemoteConnection {
254
238
  };
255
239
  }
256
240
  }
241
+ class RemoteConnection extends common.DBGetUtilsDefaultMixin(BaseRemoteConnection) {
242
+ }
257
243
 
258
244
  const READ_CONNECTIONS = 5;
259
245
  const defaultDatabaseImplementation = {
@@ -435,79 +421,13 @@ class WorkerConnectionPool extends common.BaseObserver {
435
421
  }
436
422
  })();
437
423
  }
438
- readTransaction(fn, _options) {
439
- return this.readLock((ctx) => this.internalTransaction(ctx, fn));
440
- }
441
- writeTransaction(fn, _options) {
442
- return this.writeLock((ctx) => this.internalTransaction(ctx, fn));
443
- }
444
- async internalTransaction(connection, fn) {
445
- let finalized = false;
446
- const commit = async () => {
447
- if (!finalized) {
448
- finalized = true;
449
- await connection.execute('COMMIT');
450
- }
451
- return { rowsAffected: 0 };
452
- };
453
- const rollback = async () => {
454
- if (!finalized) {
455
- finalized = true;
456
- await connection.execute('ROLLBACK');
457
- }
458
- return { rowsAffected: 0 };
459
- };
460
- try {
461
- await connection.execute('BEGIN');
462
- const result = await fn({
463
- execute: (query, params) => connection.execute(query, params),
464
- executeRaw: (query, params) => connection.executeRaw(query, params),
465
- executeBatch: (query, params) => connection.executeBatch(query, params),
466
- get: (query, params) => connection.get(query, params),
467
- getAll: (query, params) => connection.getAll(query, params),
468
- getOptional: (query, params) => connection.getOptional(query, params),
469
- commit,
470
- rollback
471
- });
472
- await commit();
473
- return result;
474
- }
475
- catch (ex) {
476
- try {
477
- await rollback();
478
- }
479
- catch (ex2) {
480
- // In rare cases, a rollback may fail.
481
- // Safe to ignore.
482
- }
483
- throw ex;
484
- }
485
- }
486
- getAll(sql, parameters) {
487
- return this.readLock((ctx) => ctx.getAll(sql, parameters));
488
- }
489
- getOptional(sql, parameters) {
490
- return this.readLock((ctx) => ctx.getOptional(sql, parameters));
491
- }
492
- get(sql, parameters) {
493
- return this.readLock((ctx) => ctx.get(sql, parameters));
494
- }
495
- execute(query, params) {
496
- return this.writeLock((ctx) => ctx.execute(query, params));
497
- }
498
- executeRaw(query, params) {
499
- return this.writeLock((ctx) => ctx.executeRaw(query, params));
500
- }
501
- executeBatch(query, params) {
502
- return this.writeTransaction((ctx) => ctx.executeBatch(query, params));
503
- }
504
424
  async refreshSchema() {
505
425
  await this.writeConnection.refreshSchema();
506
- for (const readConnection of this.readConnections) {
507
- await readConnection.refreshSchema();
508
- }
426
+ await Promise.all(this.readConnections.map((c) => c.refreshSchema()));
509
427
  }
510
428
  }
429
+ class WorkerPoolDatabaseAdapter extends common.DBAdapterDefaultMixin(WorkerConnectionPool) {
430
+ }
511
431
 
512
432
  /**
513
433
  * A PowerSync database which provides SQLite functionality
@@ -534,7 +454,7 @@ class PowerSyncDatabase extends common.AbstractPowerSyncDatabase {
534
454
  * Opens a DBAdapter using better-sqlite3 as the default SQLite open factory.
535
455
  */
536
456
  openDBAdapter(options) {
537
- return new WorkerConnectionPool(options.database);
457
+ return new WorkerPoolDatabaseAdapter(options.database);
538
458
  }
539
459
  generateBucketStorageAdapter() {
540
460
  return new common.SqliteBucketStorage(this.database, this.logger);
@@ -1 +1 @@
1
- {"version":3,"file":"bundle.cjs","sources":["../lib/sync/stream/NodeRemote.js","../lib/sync/stream/NodeStreamingSyncImplementation.js","../lib/db/RemoteConnection.js","../lib/db/WorkerConnectionPool.js","../lib/db/PowerSyncDatabase.js","../lib/attachments/NodeFileSystemAdapter.js"],"sourcesContent":["import * as os from 'node:os';\nimport { AbstractRemote, DEFAULT_REMOTE_LOGGER, FetchImplementationProvider } from '@powersync/common';\nimport { BSON } from 'bson';\nimport { EnvHttpProxyAgent, getGlobalDispatcher, ProxyAgent, WebSocket as UndiciWebSocket } from 'undici';\nexport const STREAMING_POST_TIMEOUT_MS = 30_000;\nclass NodeFetchProvider extends FetchImplementationProvider {\n getFetch() {\n return fetch.bind(globalThis);\n }\n}\nexport class NodeRemote extends AbstractRemote {\n connector;\n logger;\n wsDispatcher;\n constructor(connector, logger = DEFAULT_REMOTE_LOGGER, options) {\n const fetchDispatcher = options?.dispatcher ?? defaultFetchDispatcher();\n super(connector, logger, {\n fetchImplementation: options?.fetchImplementation ?? new NodeFetchProvider(),\n fetchOptions: {\n dispatcher: fetchDispatcher\n },\n ...(options ?? {})\n });\n this.connector = connector;\n this.logger = logger;\n this.wsDispatcher = options?.dispatcher;\n }\n createSocket(url) {\n // Create dedicated dispatcher for this WebSocket\n const baseDispatcher = this.getWebsocketDispatcher(url);\n // Create WebSocket with dedicated dispatcher\n const ws = new UndiciWebSocket(url, {\n dispatcher: baseDispatcher,\n headers: {\n 'User-Agent': this.getUserAgent()\n }\n });\n return ws;\n }\n getWebsocketDispatcher(url) {\n if (this.wsDispatcher != null) {\n return this.wsDispatcher;\n }\n const protocol = new URL(url).protocol.replace(':', '');\n const proxy = getProxyForProtocol(protocol);\n if (proxy != null) {\n return new ProxyAgent(proxy);\n }\n else {\n return getGlobalDispatcher();\n }\n }\n getUserAgent() {\n return [\n super.getUserAgent(),\n `powersync-node`,\n `node/${process.versions.node}`,\n `${os.platform()}/${os.release()}`\n ].join(' ');\n }\n async getBSON() {\n return BSON;\n }\n}\nfunction defaultFetchDispatcher() {\n // EnvHttpProxyAgent automatically uses HTTP_PROXY, HTTPS_PROXY and NO_PROXY env vars by default.\n // We add ALL_PROXY support.\n return new EnvHttpProxyAgent({\n httpProxy: getProxyForProtocol('http'),\n httpsProxy: getProxyForProtocol('https')\n });\n}\nfunction getProxyForProtocol(protocol) {\n return (process.env[`${protocol.toLowerCase()}_proxy`] ??\n process.env[`${protocol.toUpperCase()}_PROXY`] ??\n process.env[`all_proxy`] ??\n process.env[`ALL_PROXY`]);\n}\n//# sourceMappingURL=NodeRemote.js.map","import { AbstractStreamingSyncImplementation, LockType } from '@powersync/common';\nimport { Mutex } from 'async-mutex';\n/**\n * Global locks which prevent multiple instances from syncing\n * concurrently.\n */\nconst LOCKS = new Map();\nconst lockTypes = new Set(Object.values(LockType));\nexport class NodeStreamingSyncImplementation extends AbstractStreamingSyncImplementation {\n locks;\n constructor(options) {\n super(options);\n this.initLocks();\n }\n /**\n * Configures global locks on sync process\n */\n initLocks() {\n const { identifier } = this.options;\n if (identifier && LOCKS.has(identifier)) {\n this.locks = LOCKS.get(identifier);\n return;\n }\n this.locks = new Map();\n this.locks.set(LockType.CRUD, new Mutex());\n this.locks.set(LockType.SYNC, new Mutex());\n if (identifier) {\n LOCKS.set(identifier, this.locks);\n }\n }\n obtainLock(lockOptions) {\n const lock = this.locks.get(lockOptions.type);\n if (!lock) {\n throw new Error(`Lock type ${lockOptions.type} not found`);\n }\n return lock.runExclusive(async () => {\n if (lockOptions.signal?.aborted) {\n throw new Error('Aborted');\n }\n return lockOptions.callback();\n });\n }\n}\n//# sourceMappingURL=NodeStreamingSyncImplementation.js.map","import { ConnectionClosedError } from '@powersync/common';\nimport { releaseProxy } from 'comlink';\n/**\n * A PowerSync database connection implemented with RPC calls to a background worker.\n */\nexport class RemoteConnection {\n isBusy = false;\n worker;\n comlink;\n database;\n notifyWorkerClosed = new AbortController();\n constructor(worker, comlink, database) {\n this.worker = worker;\n this.comlink = comlink;\n this.database = database;\n this.worker.once('exit', (_) => {\n this.notifyWorkerClosed.abort();\n });\n }\n /**\n * Runs the inner function, but appends the stack trace where this function was called. This is useful for workers\n * because stack traces from worker errors are otherwise unrelated to the application issue that has caused them.\n */\n withRemote(inner) {\n const trace = {};\n Error.captureStackTrace(trace);\n const controller = this.notifyWorkerClosed;\n return new Promise((resolve, reject) => {\n if (controller.signal.aborted) {\n reject(new ConnectionClosedError('Called operation on closed remote'));\n }\n function handleAbort() {\n reject(new ConnectionClosedError('Remote peer closed with request in flight'));\n }\n function completePromise(action) {\n controller.signal.removeEventListener('abort', handleAbort);\n action();\n }\n controller.signal.addEventListener('abort', handleAbort);\n inner()\n .then((data) => completePromise(() => resolve(data)))\n .catch((e) => {\n if (e instanceof Error && e.stack) {\n e.stack += trace.stack;\n }\n return completePromise(() => reject(e));\n });\n });\n }\n executeBatch(query, params = []) {\n return this.withRemote(async () => {\n const result = await this.database.executeBatch(query, params ?? []);\n return RemoteConnection.wrapQueryResult(result);\n });\n }\n execute(query, params) {\n return this.withRemote(async () => {\n const result = await this.database.execute(query, params ?? []);\n return RemoteConnection.wrapQueryResult(result);\n });\n }\n executeRaw(query, params) {\n return this.withRemote(async () => {\n return await this.database.executeRaw(query, params ?? []);\n });\n }\n async getAll(sql, parameters) {\n const res = await this.execute(sql, parameters);\n return res.rows?._array ?? [];\n }\n async getOptional(sql, parameters) {\n const res = await this.execute(sql, parameters);\n return res.rows?.item(0) ?? null;\n }\n async get(sql, parameters) {\n const res = await this.execute(sql, parameters);\n const first = res.rows?.item(0);\n if (!first) {\n throw new Error('Result set is empty');\n }\n return first;\n }\n async refreshSchema() {\n await this.execute(\"pragma table_info('sqlite_master')\");\n }\n async close() {\n await this.database.close();\n this.database[releaseProxy]();\n this.comlink[releaseProxy]();\n await this.worker.terminate();\n }\n static wrapQueryResult(result) {\n let rows = undefined;\n if (result.rows) {\n rows = {\n ...result.rows,\n item: (idx) => result.rows?._array[idx]\n };\n }\n return {\n ...result,\n rows\n };\n }\n}\n//# sourceMappingURL=RemoteConnection.js.map","import * as Comlink from 'comlink';\nimport fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport { Worker } from 'node:worker_threads';\nimport { BaseObserver } from '@powersync/common';\nimport { AsyncResource } from 'node:async_hooks';\nimport { isBundledToCommonJs } from '../utils/modules.js';\nimport { RemoteConnection } from './RemoteConnection.js';\nconst READ_CONNECTIONS = 5;\nconst defaultDatabaseImplementation = {\n type: 'better-sqlite3'\n};\n/**\n * Adapter for better-sqlite3\n */\nexport class WorkerConnectionPool extends BaseObserver {\n options;\n name;\n readConnections;\n writeConnection;\n readQueue = [];\n writeQueue = [];\n constructor(options) {\n super();\n if (options.readWorkerCount != null && options.readWorkerCount < 1) {\n throw `Needs at least one worker for reads, got ${options.readWorkerCount}`;\n }\n this.options = options;\n this.name = options.dbFilename;\n }\n async initialize() {\n let dbFilePath = this.options.dbFilename;\n if (this.options.dbLocation !== undefined) {\n // Make sure the dbLocation exists, we get a TypeError from better-sqlite3 otherwise.\n let directoryExists = false;\n try {\n const stat = await fs.stat(this.options.dbLocation);\n directoryExists = stat.isDirectory();\n }\n catch (_) {\n // If we can't even stat, the directory won't be accessible to SQLite either.\n }\n if (!directoryExists) {\n throw new Error(`The dbLocation directory at \"${this.options.dbLocation}\" does not exist. Please create it before opening the PowerSync database!`);\n }\n dbFilePath = path.join(this.options.dbLocation, dbFilePath);\n }\n const openWorker = async (isWriter) => {\n const isCommonJsModule = isBundledToCommonJs;\n let worker;\n const workerName = isWriter ? `write ${dbFilePath}` : `read ${dbFilePath}`;\n const workerFactory = this.options.openWorker ?? ((...args) => new Worker(...args));\n if (isCommonJsModule) {\n worker = workerFactory(path.resolve(__dirname, 'DefaultWorker.cjs'), { name: workerName });\n }\n else {\n worker = workerFactory(new URL('./DefaultWorker.js', import.meta.url), { name: workerName });\n }\n const listeners = new WeakMap();\n const comlink = Comlink.wrap({\n postMessage: worker.postMessage.bind(worker),\n addEventListener: (type, listener) => {\n let resolved = 'handleEvent' in listener ? listener.handleEvent.bind(listener) : listener;\n // Comlink wants message events, but the message event on workers in Node returns the data only.\n if (type === 'message') {\n const original = resolved;\n resolved = (data) => {\n original({ data });\n };\n }\n listeners.set(listener, resolved);\n worker.addListener(type, resolved);\n },\n removeEventListener: (type, listener) => {\n const resolved = listeners.get(listener);\n if (!resolved) {\n return;\n }\n worker.removeListener(type, resolved);\n }\n });\n worker.once('error', (e) => {\n console.error('Unexpected PowerSync database worker error', e);\n });\n const database = (await comlink.open({\n path: dbFilePath,\n isWriter,\n implementation: this.options.implementation ?? defaultDatabaseImplementation\n }));\n if (isWriter) {\n await database.execute(\"SELECT powersync_update_hooks('install');\", []);\n }\n const connection = new RemoteConnection(worker, comlink, database);\n if (this.options.initializeConnection) {\n await this.options.initializeConnection(connection, isWriter);\n }\n if (!isWriter) {\n await connection.execute('pragma query_only = true');\n }\n else {\n // We only need to enable this on the writer connection.\n // We can get `database is locked` errors if we enable this on concurrently opening read connections.\n await connection.execute('pragma journal_mode = WAL');\n }\n return connection;\n };\n // Open the writer first to avoid multiple threads enabling WAL concurrently (causing \"database is locked\" errors).\n this.writeConnection = await openWorker(true);\n const createWorkers = [];\n const amountOfReaders = this.options.readWorkerCount ?? READ_CONNECTIONS;\n for (let i = 0; i < amountOfReaders; i++) {\n createWorkers.push(openWorker(false));\n }\n this.readConnections = await Promise.all(createWorkers);\n }\n async close() {\n await this.writeConnection.close();\n for (const connection of this.readConnections) {\n await connection.close();\n }\n }\n readLock(fn, _options) {\n let resolveConnectionPromise;\n const connectionPromise = new Promise((resolve, _reject) => {\n resolveConnectionPromise = AsyncResource.bind(resolve);\n });\n const connection = this.readConnections.find((connection) => !connection.isBusy);\n if (connection) {\n connection.isBusy = true;\n resolveConnectionPromise(connection);\n }\n else {\n this.readQueue.push(resolveConnectionPromise);\n }\n return (async () => {\n const connection = await connectionPromise;\n try {\n return await fn(connection);\n }\n finally {\n const next = this.readQueue.shift();\n if (next) {\n next(connection);\n }\n else {\n connection.isBusy = false;\n }\n }\n })();\n }\n writeLock(fn, _options) {\n let resolveLockPromise;\n const lockPromise = new Promise((resolve, _reject) => {\n resolveLockPromise = AsyncResource.bind(resolve);\n });\n if (!this.writeConnection.isBusy) {\n this.writeConnection.isBusy = true;\n resolveLockPromise();\n }\n else {\n this.writeQueue.push(resolveLockPromise);\n }\n return (async () => {\n await lockPromise;\n try {\n try {\n return await fn(this.writeConnection);\n }\n finally {\n const serializedUpdates = await this.writeConnection.executeRaw(\"SELECT powersync_update_hooks('get');\", []);\n const updates = JSON.parse(serializedUpdates[0][0]);\n if (updates.length > 0) {\n const event = {\n tables: updates,\n groupedUpdates: {},\n rawUpdates: []\n };\n this.iterateListeners((cb) => cb.tablesUpdated?.(event));\n }\n }\n }\n finally {\n const next = this.writeQueue.shift();\n if (next) {\n next();\n }\n else {\n this.writeConnection.isBusy = false;\n }\n }\n })();\n }\n readTransaction(fn, _options) {\n return this.readLock((ctx) => this.internalTransaction(ctx, fn));\n }\n writeTransaction(fn, _options) {\n return this.writeLock((ctx) => this.internalTransaction(ctx, fn));\n }\n async internalTransaction(connection, fn) {\n let finalized = false;\n const commit = async () => {\n if (!finalized) {\n finalized = true;\n await connection.execute('COMMIT');\n }\n return { rowsAffected: 0 };\n };\n const rollback = async () => {\n if (!finalized) {\n finalized = true;\n await connection.execute('ROLLBACK');\n }\n return { rowsAffected: 0 };\n };\n try {\n await connection.execute('BEGIN');\n const result = await fn({\n execute: (query, params) => connection.execute(query, params),\n executeRaw: (query, params) => connection.executeRaw(query, params),\n executeBatch: (query, params) => connection.executeBatch(query, params),\n get: (query, params) => connection.get(query, params),\n getAll: (query, params) => connection.getAll(query, params),\n getOptional: (query, params) => connection.getOptional(query, params),\n commit,\n rollback\n });\n await commit();\n return result;\n }\n catch (ex) {\n try {\n await rollback();\n }\n catch (ex2) {\n // In rare cases, a rollback may fail.\n // Safe to ignore.\n }\n throw ex;\n }\n }\n getAll(sql, parameters) {\n return this.readLock((ctx) => ctx.getAll(sql, parameters));\n }\n getOptional(sql, parameters) {\n return this.readLock((ctx) => ctx.getOptional(sql, parameters));\n }\n get(sql, parameters) {\n return this.readLock((ctx) => ctx.get(sql, parameters));\n }\n execute(query, params) {\n return this.writeLock((ctx) => ctx.execute(query, params));\n }\n executeRaw(query, params) {\n return this.writeLock((ctx) => ctx.executeRaw(query, params));\n }\n executeBatch(query, params) {\n return this.writeTransaction((ctx) => ctx.executeBatch(query, params));\n }\n async refreshSchema() {\n await this.writeConnection.refreshSchema();\n for (const readConnection of this.readConnections) {\n await readConnection.refreshSchema();\n }\n }\n}\n//# sourceMappingURL=WorkerConnectionPool.js.map","import { AbstractPowerSyncDatabase, SqliteBucketStorage } from '@powersync/common';\nimport { NodeRemote } from '../sync/stream/NodeRemote.js';\nimport { NodeStreamingSyncImplementation } from '../sync/stream/NodeStreamingSyncImplementation.js';\nimport { WorkerConnectionPool } from './WorkerConnectionPool.js';\n/**\n * A PowerSync database which provides SQLite functionality\n * which is automatically synced.\n *\n * @example\n * ```typescript\n * export const db = new PowerSyncDatabase({\n * schema: AppSchema,\n * database: {\n * dbFilename: 'example.db'\n * }\n * });\n * ```\n */\nexport class PowerSyncDatabase extends AbstractPowerSyncDatabase {\n constructor(options) {\n super(options);\n }\n async _initialize() {\n await this.database.initialize();\n }\n /**\n * Opens a DBAdapter using better-sqlite3 as the default SQLite open factory.\n */\n openDBAdapter(options) {\n return new WorkerConnectionPool(options.database);\n }\n generateBucketStorageAdapter() {\n return new SqliteBucketStorage(this.database, this.logger);\n }\n connect(connector, options) {\n return super.connect(connector, options);\n }\n generateSyncStreamImplementation(connector, options) {\n const logger = this.logger;\n const remote = new NodeRemote(connector, logger, {\n dispatcher: options.dispatcher,\n ...this.options.remoteOptions\n });\n return new NodeStreamingSyncImplementation({\n adapter: this.bucketStorageAdapter,\n remote,\n uploadCrud: async () => {\n await this.waitForReady();\n await connector.uploadData(this);\n },\n ...options,\n identifier: this.database.name,\n logger\n });\n }\n}\n//# sourceMappingURL=PowerSyncDatabase.js.map","import { promises as fs } from 'fs';\nimport * as path from 'path';\nimport { EncodingType } from '@powersync/common';\n/**\n * NodeFileSystemAdapter implements LocalStorageAdapter using Node.js filesystem.\n * Suitable for Node.js environments and Electron applications.\n */\nexport class NodeFileSystemAdapter {\n storageDirectory;\n constructor(storageDirectory = './user_data') {\n this.storageDirectory = storageDirectory;\n }\n async initialize() {\n const dir = path.resolve(this.storageDirectory);\n await fs.mkdir(dir, { recursive: true });\n }\n async clear() {\n const dir = path.resolve(this.storageDirectory);\n await fs.rmdir(dir, { recursive: true });\n }\n getLocalUri(filename) {\n return path.join(path.resolve(this.storageDirectory), filename);\n }\n async uploadFile(filePath, data, options) {\n const buffer = Buffer.from(data);\n await fs.writeFile(filePath, buffer, {\n encoding: options?.encoding\n });\n }\n async downloadFile(filePath) {\n const data = await fs.readFile(filePath);\n return new Blob([new Uint8Array(data)]);\n }\n async saveFile(filePath, data, options) {\n let buffer;\n if (typeof data === 'string') {\n buffer = Buffer.from(data, options?.encoding ?? EncodingType.Base64);\n }\n else {\n buffer = Buffer.from(data);\n }\n await fs.writeFile(filePath, buffer);\n return buffer.length;\n }\n async readFile(filePath, options) {\n const data = await fs.readFile(filePath);\n if (options?.encoding === EncodingType.Base64) {\n return Buffer.from(data.toString(), 'base64').buffer;\n }\n else {\n return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n }\n }\n async deleteFile(path, options) {\n await fs.unlink(path).catch((err) => {\n if (err.code !== 'ENOENT') {\n throw err;\n }\n });\n }\n async fileExists(filePath) {\n try {\n await fs.access(filePath);\n return true;\n }\n catch {\n return false;\n }\n }\n async makeDir(path) {\n await fs.mkdir(path, { recursive: true });\n }\n async rmDir(path) {\n await fs.rmdir(path, { recursive: true });\n }\n}\n//# sourceMappingURL=NodeFileSystemAdapter.js.map"],"names":["FetchImplementationProvider","AbstractRemote","DEFAULT_REMOTE_LOGGER","UndiciWebSocket","ProxyAgent","getGlobalDispatcher","os","BSON","EnvHttpProxyAgent","LockType","AbstractStreamingSyncImplementation","Mutex","ConnectionClosedError","releaseProxy","BaseObserver","path","Worker","Comlink","AsyncResource","AbstractPowerSyncDatabase","SqliteBucketStorage","fs","EncodingType"],"mappings":"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"}
1
+ {"version":3,"file":"bundle.cjs","sources":["../lib/sync/stream/NodeRemote.js","../lib/sync/stream/NodeStreamingSyncImplementation.js","../lib/db/RemoteConnection.js","../lib/db/WorkerConnectionPool.js","../lib/db/PowerSyncDatabase.js","../lib/attachments/NodeFileSystemAdapter.js"],"sourcesContent":["import * as os from 'node:os';\nimport { AbstractRemote, DEFAULT_REMOTE_LOGGER, FetchImplementationProvider } from '@powersync/common';\nimport { BSON } from 'bson';\nimport { EnvHttpProxyAgent, getGlobalDispatcher, ProxyAgent, WebSocket as UndiciWebSocket } from 'undici';\nexport const STREAMING_POST_TIMEOUT_MS = 30_000;\nclass NodeFetchProvider extends FetchImplementationProvider {\n getFetch() {\n return fetch.bind(globalThis);\n }\n}\nexport class NodeRemote extends AbstractRemote {\n connector;\n logger;\n wsDispatcher;\n constructor(connector, logger = DEFAULT_REMOTE_LOGGER, options) {\n const fetchDispatcher = options?.dispatcher ?? defaultFetchDispatcher();\n super(connector, logger, {\n fetchImplementation: options?.fetchImplementation ?? new NodeFetchProvider(),\n fetchOptions: {\n dispatcher: fetchDispatcher\n },\n ...(options ?? {})\n });\n this.connector = connector;\n this.logger = logger;\n this.wsDispatcher = options?.dispatcher;\n }\n createSocket(url) {\n // Create dedicated dispatcher for this WebSocket\n const baseDispatcher = this.getWebsocketDispatcher(url);\n // Create WebSocket with dedicated dispatcher\n const ws = new UndiciWebSocket(url, {\n dispatcher: baseDispatcher,\n headers: {\n 'User-Agent': this.getUserAgent()\n }\n });\n return ws;\n }\n getWebsocketDispatcher(url) {\n if (this.wsDispatcher != null) {\n return this.wsDispatcher;\n }\n const protocol = new URL(url).protocol.replace(':', '');\n const proxy = getProxyForProtocol(protocol);\n if (proxy != null) {\n return new ProxyAgent(proxy);\n }\n else {\n return getGlobalDispatcher();\n }\n }\n getUserAgent() {\n return [\n super.getUserAgent(),\n `powersync-node`,\n `node/${process.versions.node}`,\n `${os.platform()}/${os.release()}`\n ].join(' ');\n }\n async getBSON() {\n return BSON;\n }\n}\nfunction defaultFetchDispatcher() {\n // EnvHttpProxyAgent automatically uses HTTP_PROXY, HTTPS_PROXY and NO_PROXY env vars by default.\n // We add ALL_PROXY support.\n return new EnvHttpProxyAgent({\n httpProxy: getProxyForProtocol('http'),\n httpsProxy: getProxyForProtocol('https')\n });\n}\nfunction getProxyForProtocol(protocol) {\n return (process.env[`${protocol.toLowerCase()}_proxy`] ??\n process.env[`${protocol.toUpperCase()}_PROXY`] ??\n process.env[`all_proxy`] ??\n process.env[`ALL_PROXY`]);\n}\n//# sourceMappingURL=NodeRemote.js.map","import { AbstractStreamingSyncImplementation, LockType } from '@powersync/common';\nimport { Mutex } from 'async-mutex';\n/**\n * Global locks which prevent multiple instances from syncing\n * concurrently.\n */\nconst LOCKS = new Map();\nconst lockTypes = new Set(Object.values(LockType));\nexport class NodeStreamingSyncImplementation extends AbstractStreamingSyncImplementation {\n locks;\n constructor(options) {\n super(options);\n this.initLocks();\n }\n /**\n * Configures global locks on sync process\n */\n initLocks() {\n const { identifier } = this.options;\n if (identifier && LOCKS.has(identifier)) {\n this.locks = LOCKS.get(identifier);\n return;\n }\n this.locks = new Map();\n this.locks.set(LockType.CRUD, new Mutex());\n this.locks.set(LockType.SYNC, new Mutex());\n if (identifier) {\n LOCKS.set(identifier, this.locks);\n }\n }\n obtainLock(lockOptions) {\n const lock = this.locks.get(lockOptions.type);\n if (!lock) {\n throw new Error(`Lock type ${lockOptions.type} not found`);\n }\n return lock.runExclusive(async () => {\n if (lockOptions.signal?.aborted) {\n throw new Error('Aborted');\n }\n return lockOptions.callback();\n });\n }\n}\n//# sourceMappingURL=NodeStreamingSyncImplementation.js.map","import { ConnectionClosedError, DBGetUtilsDefaultMixin } from '@powersync/common';\nimport { releaseProxy } from 'comlink';\n/**\n * A PowerSync database connection implemented with RPC calls to a background worker.\n */\nclass BaseRemoteConnection {\n isBusy = false;\n worker;\n comlink;\n database;\n notifyWorkerClosed = new AbortController();\n constructor(worker, comlink, database) {\n this.worker = worker;\n this.comlink = comlink;\n this.database = database;\n this.worker.once('exit', (_) => {\n this.notifyWorkerClosed.abort();\n });\n }\n /**\n * Runs the inner function, but appends the stack trace where this function was called. This is useful for workers\n * because stack traces from worker errors are otherwise unrelated to the application issue that has caused them.\n */\n withRemote(inner) {\n const trace = {};\n Error.captureStackTrace(trace);\n const controller = this.notifyWorkerClosed;\n return new Promise((resolve, reject) => {\n if (controller.signal.aborted) {\n reject(new ConnectionClosedError('Called operation on closed remote'));\n }\n function handleAbort() {\n reject(new ConnectionClosedError('Remote peer closed with request in flight'));\n }\n function completePromise(action) {\n controller.signal.removeEventListener('abort', handleAbort);\n action();\n }\n controller.signal.addEventListener('abort', handleAbort);\n inner()\n .then((data) => completePromise(() => resolve(data)))\n .catch((e) => {\n if (e instanceof Error && e.stack) {\n e.stack += trace.stack;\n }\n return completePromise(() => reject(e));\n });\n });\n }\n executeBatch(query, params = []) {\n return this.withRemote(async () => {\n const result = await this.database.executeBatch(query, params ?? []);\n return BaseRemoteConnection.wrapQueryResult(result);\n });\n }\n execute(query, params) {\n return this.withRemote(async () => {\n const result = await this.database.execute(query, params ?? []);\n return BaseRemoteConnection.wrapQueryResult(result);\n });\n }\n executeRaw(query, params) {\n return this.withRemote(async () => {\n return await this.database.executeRaw(query, params ?? []);\n });\n }\n async refreshSchema() {\n await this.execute(\"pragma table_info('sqlite_master')\");\n }\n async close() {\n await this.database.close();\n this.database[releaseProxy]();\n this.comlink[releaseProxy]();\n await this.worker.terminate();\n }\n static wrapQueryResult(result) {\n let rows = undefined;\n if (result.rows) {\n rows = {\n ...result.rows,\n item: (idx) => result.rows?._array[idx]\n };\n }\n return {\n ...result,\n rows\n };\n }\n}\nexport class RemoteConnection extends DBGetUtilsDefaultMixin(BaseRemoteConnection) {\n}\n//# sourceMappingURL=RemoteConnection.js.map","import * as Comlink from 'comlink';\nimport fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport { Worker } from 'node:worker_threads';\nimport { BaseObserver, DBAdapterDefaultMixin } from '@powersync/common';\nimport { AsyncResource } from 'node:async_hooks';\nimport { isBundledToCommonJs } from '../utils/modules.js';\nimport { RemoteConnection } from './RemoteConnection.js';\nconst READ_CONNECTIONS = 5;\nconst defaultDatabaseImplementation = {\n type: 'better-sqlite3'\n};\n/**\n * Adapter for better-sqlite3\n */\nexport class WorkerConnectionPool extends BaseObserver {\n options;\n name;\n readConnections;\n writeConnection;\n readQueue = [];\n writeQueue = [];\n constructor(options) {\n super();\n if (options.readWorkerCount != null && options.readWorkerCount < 1) {\n throw `Needs at least one worker for reads, got ${options.readWorkerCount}`;\n }\n this.options = options;\n this.name = options.dbFilename;\n }\n async initialize() {\n let dbFilePath = this.options.dbFilename;\n if (this.options.dbLocation !== undefined) {\n // Make sure the dbLocation exists, we get a TypeError from better-sqlite3 otherwise.\n let directoryExists = false;\n try {\n const stat = await fs.stat(this.options.dbLocation);\n directoryExists = stat.isDirectory();\n }\n catch (_) {\n // If we can't even stat, the directory won't be accessible to SQLite either.\n }\n if (!directoryExists) {\n throw new Error(`The dbLocation directory at \"${this.options.dbLocation}\" does not exist. Please create it before opening the PowerSync database!`);\n }\n dbFilePath = path.join(this.options.dbLocation, dbFilePath);\n }\n const openWorker = async (isWriter) => {\n const isCommonJsModule = isBundledToCommonJs;\n let worker;\n const workerName = isWriter ? `write ${dbFilePath}` : `read ${dbFilePath}`;\n const workerFactory = this.options.openWorker ?? ((...args) => new Worker(...args));\n if (isCommonJsModule) {\n worker = workerFactory(path.resolve(__dirname, 'DefaultWorker.cjs'), { name: workerName });\n }\n else {\n worker = workerFactory(new URL('./DefaultWorker.js', import.meta.url), { name: workerName });\n }\n const listeners = new WeakMap();\n const comlink = Comlink.wrap({\n postMessage: worker.postMessage.bind(worker),\n addEventListener: (type, listener) => {\n let resolved = 'handleEvent' in listener ? listener.handleEvent.bind(listener) : listener;\n // Comlink wants message events, but the message event on workers in Node returns the data only.\n if (type === 'message') {\n const original = resolved;\n resolved = (data) => {\n original({ data });\n };\n }\n listeners.set(listener, resolved);\n worker.addListener(type, resolved);\n },\n removeEventListener: (type, listener) => {\n const resolved = listeners.get(listener);\n if (!resolved) {\n return;\n }\n worker.removeListener(type, resolved);\n }\n });\n worker.once('error', (e) => {\n console.error('Unexpected PowerSync database worker error', e);\n });\n const database = (await comlink.open({\n path: dbFilePath,\n isWriter,\n implementation: this.options.implementation ?? defaultDatabaseImplementation\n }));\n if (isWriter) {\n await database.execute(\"SELECT powersync_update_hooks('install');\", []);\n }\n const connection = new RemoteConnection(worker, comlink, database);\n if (this.options.initializeConnection) {\n await this.options.initializeConnection(connection, isWriter);\n }\n if (!isWriter) {\n await connection.execute('pragma query_only = true');\n }\n else {\n // We only need to enable this on the writer connection.\n // We can get `database is locked` errors if we enable this on concurrently opening read connections.\n await connection.execute('pragma journal_mode = WAL');\n }\n return connection;\n };\n // Open the writer first to avoid multiple threads enabling WAL concurrently (causing \"database is locked\" errors).\n this.writeConnection = await openWorker(true);\n const createWorkers = [];\n const amountOfReaders = this.options.readWorkerCount ?? READ_CONNECTIONS;\n for (let i = 0; i < amountOfReaders; i++) {\n createWorkers.push(openWorker(false));\n }\n this.readConnections = await Promise.all(createWorkers);\n }\n async close() {\n await this.writeConnection.close();\n for (const connection of this.readConnections) {\n await connection.close();\n }\n }\n readLock(fn, _options) {\n let resolveConnectionPromise;\n const connectionPromise = new Promise((resolve, _reject) => {\n resolveConnectionPromise = AsyncResource.bind(resolve);\n });\n const connection = this.readConnections.find((connection) => !connection.isBusy);\n if (connection) {\n connection.isBusy = true;\n resolveConnectionPromise(connection);\n }\n else {\n this.readQueue.push(resolveConnectionPromise);\n }\n return (async () => {\n const connection = await connectionPromise;\n try {\n return await fn(connection);\n }\n finally {\n const next = this.readQueue.shift();\n if (next) {\n next(connection);\n }\n else {\n connection.isBusy = false;\n }\n }\n })();\n }\n writeLock(fn, _options) {\n let resolveLockPromise;\n const lockPromise = new Promise((resolve, _reject) => {\n resolveLockPromise = AsyncResource.bind(resolve);\n });\n if (!this.writeConnection.isBusy) {\n this.writeConnection.isBusy = true;\n resolveLockPromise();\n }\n else {\n this.writeQueue.push(resolveLockPromise);\n }\n return (async () => {\n await lockPromise;\n try {\n try {\n return await fn(this.writeConnection);\n }\n finally {\n const serializedUpdates = await this.writeConnection.executeRaw(\"SELECT powersync_update_hooks('get');\", []);\n const updates = JSON.parse(serializedUpdates[0][0]);\n if (updates.length > 0) {\n const event = {\n tables: updates,\n groupedUpdates: {},\n rawUpdates: []\n };\n this.iterateListeners((cb) => cb.tablesUpdated?.(event));\n }\n }\n }\n finally {\n const next = this.writeQueue.shift();\n if (next) {\n next();\n }\n else {\n this.writeConnection.isBusy = false;\n }\n }\n })();\n }\n async refreshSchema() {\n await this.writeConnection.refreshSchema();\n await Promise.all(this.readConnections.map((c) => c.refreshSchema()));\n }\n}\nexport class WorkerPoolDatabaseAdapter extends DBAdapterDefaultMixin(WorkerConnectionPool) {\n}\n//# sourceMappingURL=WorkerConnectionPool.js.map","import { AbstractPowerSyncDatabase, SqliteBucketStorage } from '@powersync/common';\nimport { NodeRemote } from '../sync/stream/NodeRemote.js';\nimport { NodeStreamingSyncImplementation } from '../sync/stream/NodeStreamingSyncImplementation.js';\nimport { WorkerPoolDatabaseAdapter } from './WorkerConnectionPool.js';\n/**\n * A PowerSync database which provides SQLite functionality\n * which is automatically synced.\n *\n * @example\n * ```typescript\n * export const db = new PowerSyncDatabase({\n * schema: AppSchema,\n * database: {\n * dbFilename: 'example.db'\n * }\n * });\n * ```\n */\nexport class PowerSyncDatabase extends AbstractPowerSyncDatabase {\n constructor(options) {\n super(options);\n }\n async _initialize() {\n await this.database.initialize();\n }\n /**\n * Opens a DBAdapter using better-sqlite3 as the default SQLite open factory.\n */\n openDBAdapter(options) {\n return new WorkerPoolDatabaseAdapter(options.database);\n }\n generateBucketStorageAdapter() {\n return new SqliteBucketStorage(this.database, this.logger);\n }\n connect(connector, options) {\n return super.connect(connector, options);\n }\n generateSyncStreamImplementation(connector, options) {\n const logger = this.logger;\n const remote = new NodeRemote(connector, logger, {\n dispatcher: options.dispatcher,\n ...this.options.remoteOptions\n });\n return new NodeStreamingSyncImplementation({\n adapter: this.bucketStorageAdapter,\n remote,\n uploadCrud: async () => {\n await this.waitForReady();\n await connector.uploadData(this);\n },\n ...options,\n identifier: this.database.name,\n logger\n });\n }\n}\n//# sourceMappingURL=PowerSyncDatabase.js.map","import { promises as fs } from 'fs';\nimport * as path from 'path';\nimport { EncodingType } from '@powersync/common';\n/**\n * NodeFileSystemAdapter implements LocalStorageAdapter using Node.js filesystem.\n * Suitable for Node.js environments and Electron applications.\n */\nexport class NodeFileSystemAdapter {\n storageDirectory;\n constructor(storageDirectory = './user_data') {\n this.storageDirectory = storageDirectory;\n }\n async initialize() {\n const dir = path.resolve(this.storageDirectory);\n await fs.mkdir(dir, { recursive: true });\n }\n async clear() {\n const dir = path.resolve(this.storageDirectory);\n await fs.rmdir(dir, { recursive: true });\n }\n getLocalUri(filename) {\n return path.join(path.resolve(this.storageDirectory), filename);\n }\n async uploadFile(filePath, data, options) {\n const buffer = Buffer.from(data);\n await fs.writeFile(filePath, buffer, {\n encoding: options?.encoding\n });\n }\n async downloadFile(filePath) {\n const data = await fs.readFile(filePath);\n return new Blob([new Uint8Array(data)]);\n }\n async saveFile(filePath, data, options) {\n let buffer;\n if (typeof data === 'string') {\n buffer = Buffer.from(data, options?.encoding ?? EncodingType.Base64);\n }\n else {\n buffer = Buffer.from(data);\n }\n await fs.writeFile(filePath, buffer);\n return buffer.length;\n }\n async readFile(filePath, options) {\n const data = await fs.readFile(filePath);\n if (options?.encoding === EncodingType.Base64) {\n return Buffer.from(data.toString(), 'base64').buffer;\n }\n else {\n return data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);\n }\n }\n async deleteFile(path, options) {\n await fs.unlink(path).catch((err) => {\n if (err.code !== 'ENOENT') {\n throw err;\n }\n });\n }\n async fileExists(filePath) {\n try {\n await fs.access(filePath);\n return true;\n }\n catch {\n return false;\n }\n }\n async makeDir(path) {\n await fs.mkdir(path, { recursive: true });\n }\n async rmDir(path) {\n await fs.rmdir(path, { recursive: true });\n }\n}\n//# sourceMappingURL=NodeFileSystemAdapter.js.map"],"names":["FetchImplementationProvider","AbstractRemote","DEFAULT_REMOTE_LOGGER","UndiciWebSocket","ProxyAgent","getGlobalDispatcher","os","BSON","EnvHttpProxyAgent","LockType","AbstractStreamingSyncImplementation","Mutex","ConnectionClosedError","releaseProxy","DBGetUtilsDefaultMixin","BaseObserver","path","Worker","Comlink","AsyncResource","DBAdapterDefaultMixin","AbstractPowerSyncDatabase","SqliteBucketStorage","fs","EncodingType"],"mappings":"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"}
package/dist/bundle.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { SQLOpenOptions, LockContext, PowerSyncDatabaseOptions, DBAdapter, SQLOpenFactory, AbstractRemoteOptions, AdditionalConnectionOptions, PowerSyncConnectionOptions, AbstractPowerSyncDatabase, PowerSyncDatabaseOptionsWithSettings, BucketStorageAdapter, PowerSyncBackendConnector, RequiredAdditionalConnectionOptions, AbstractStreamingSyncImplementation, LocalStorageAdapter, EncodingType, AttachmentData } from '@powersync/common';
1
+ import { SQLOpenOptions, LockContext, AdditionalConnectionOptions, PowerSyncConnectionOptions, PowerSyncDatabaseOptions, DBAdapter, SQLOpenFactory, AbstractRemoteOptions, AbstractPowerSyncDatabase, PowerSyncDatabaseOptionsWithSettings, BucketStorageAdapter, PowerSyncBackendConnector, RequiredAdditionalConnectionOptions, AbstractStreamingSyncImplementation, LocalStorageAdapter, EncodingType, AttachmentData } from '@powersync/common';
2
2
  export * from '@powersync/common';
3
3
  import { Dispatcher } from 'undici';
4
4
  import { Worker } from 'node:worker_threads';
@@ -1,7 +1,7 @@
1
1
  import { AbstractPowerSyncDatabase, SqliteBucketStorage } from '@powersync/common';
2
2
  import { NodeRemote } from '../sync/stream/NodeRemote.js';
3
3
  import { NodeStreamingSyncImplementation } from '../sync/stream/NodeStreamingSyncImplementation.js';
4
- import { WorkerConnectionPool } from './WorkerConnectionPool.js';
4
+ import { WorkerPoolDatabaseAdapter } from './WorkerConnectionPool.js';
5
5
  /**
6
6
  * A PowerSync database which provides SQLite functionality
7
7
  * which is automatically synced.
@@ -27,7 +27,7 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
27
27
  * Opens a DBAdapter using better-sqlite3 as the default SQLite open factory.
28
28
  */
29
29
  openDBAdapter(options) {
30
- return new WorkerConnectionPool(options.database);
30
+ return new WorkerPoolDatabaseAdapter(options.database);
31
31
  }
32
32
  generateBucketStorageAdapter() {
33
33
  return new SqliteBucketStorage(this.database, this.logger);
@@ -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,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAiBjE;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,iBAAkB,SAAQ,yBAAyB;IAC9D,YAAY,OAAqC;QAC/C,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAO,IAAI,CAAC,QAAiC,CAAC,UAAU,EAAE,CAAC;IAC7D,CAAC;IAED;;OAEG;IACO,aAAa,CAAC,OAA6C;QACnE,OAAO,IAAI,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpD,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":"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,MAAO,IAAI,CAAC,QAAsC,CAAC,UAAU,EAAE,CAAC;IAClE,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,11 +1,11 @@
1
- import { LockContext, QueryResult } from '@powersync/common';
1
+ import { QueryResult, SqlExecutor, LockContext } from '@powersync/common';
2
2
  import { Remote } from 'comlink';
3
3
  import { Worker } from 'node:worker_threads';
4
4
  import { AsyncDatabase, AsyncDatabaseOpener, ProxiedQueryResult } from './AsyncDatabase.js';
5
5
  /**
6
6
  * A PowerSync database connection implemented with RPC calls to a background worker.
7
7
  */
8
- export declare class RemoteConnection implements LockContext {
8
+ declare class BaseRemoteConnection implements SqlExecutor {
9
9
  isBusy: boolean;
10
10
  private readonly worker;
11
11
  private readonly comlink;
@@ -20,10 +20,18 @@ export declare class RemoteConnection implements LockContext {
20
20
  executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
21
21
  execute(query: string, params?: any[] | undefined): Promise<QueryResult>;
22
22
  executeRaw(query: string, params?: any[] | undefined): Promise<any[][]>;
23
- getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
24
- getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
25
- get<T>(sql: string, parameters?: any[]): Promise<T>;
26
23
  refreshSchema(): Promise<void>;
27
24
  close(): Promise<void>;
28
25
  static wrapQueryResult(result: ProxiedQueryResult): QueryResult;
29
26
  }
27
+ declare const RemoteConnection_base: (new (...args: any[]) => {
28
+ getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
29
+ getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
30
+ get<T>(sql: string, parameters?: any[]): Promise<T>;
31
+ executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
32
+ execute: (query: string, params?: any[] | undefined) => Promise<QueryResult>;
33
+ executeRaw: (query: string, params?: any[] | undefined) => Promise<any[][]>;
34
+ }) & typeof BaseRemoteConnection;
35
+ export declare class RemoteConnection extends RemoteConnection_base implements LockContext {
36
+ }
37
+ export {};
@@ -1,9 +1,9 @@
1
- import { ConnectionClosedError } from '@powersync/common';
1
+ import { ConnectionClosedError, DBGetUtilsDefaultMixin } from '@powersync/common';
2
2
  import { releaseProxy } from 'comlink';
3
3
  /**
4
4
  * A PowerSync database connection implemented with RPC calls to a background worker.
5
5
  */
6
- export class RemoteConnection {
6
+ class BaseRemoteConnection {
7
7
  isBusy = false;
8
8
  worker;
9
9
  comlink;
@@ -50,13 +50,13 @@ export class RemoteConnection {
50
50
  executeBatch(query, params = []) {
51
51
  return this.withRemote(async () => {
52
52
  const result = await this.database.executeBatch(query, params ?? []);
53
- return RemoteConnection.wrapQueryResult(result);
53
+ return BaseRemoteConnection.wrapQueryResult(result);
54
54
  });
55
55
  }
56
56
  execute(query, params) {
57
57
  return this.withRemote(async () => {
58
58
  const result = await this.database.execute(query, params ?? []);
59
- return RemoteConnection.wrapQueryResult(result);
59
+ return BaseRemoteConnection.wrapQueryResult(result);
60
60
  });
61
61
  }
62
62
  executeRaw(query, params) {
@@ -64,22 +64,6 @@ export class RemoteConnection {
64
64
  return await this.database.executeRaw(query, params ?? []);
65
65
  });
66
66
  }
67
- async getAll(sql, parameters) {
68
- const res = await this.execute(sql, parameters);
69
- return res.rows?._array ?? [];
70
- }
71
- async getOptional(sql, parameters) {
72
- const res = await this.execute(sql, parameters);
73
- return res.rows?.item(0) ?? null;
74
- }
75
- async get(sql, parameters) {
76
- const res = await this.execute(sql, parameters);
77
- const first = res.rows?.item(0);
78
- if (!first) {
79
- throw new Error('Result set is empty');
80
- }
81
- return first;
82
- }
83
67
  async refreshSchema() {
84
68
  await this.execute("pragma table_info('sqlite_master')");
85
69
  }
@@ -103,4 +87,6 @@ export class RemoteConnection {
103
87
  };
104
88
  }
105
89
  }
90
+ export class RemoteConnection extends DBGetUtilsDefaultMixin(BaseRemoteConnection) {
91
+ }
106
92
  //# 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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"}
@@ -1,4 +1,4 @@
1
- import { BaseObserver, DBAdapter, DBAdapterListener, DBLockOptions, LockContext, QueryResult, Transaction } from '@powersync/common';
1
+ import { BaseObserver, ConnectionPool, DBAdapterListener, DBLockOptions, LockContext, QueryResult, Transaction } from '@powersync/common';
2
2
  import { NodeSQLOpenOptions } from './options.js';
3
3
  export type BetterSQLite3LockContext = LockContext & {
4
4
  executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
@@ -7,7 +7,7 @@ export type BetterSQLite3Transaction = Transaction & BetterSQLite3LockContext;
7
7
  /**
8
8
  * Adapter for better-sqlite3
9
9
  */
10
- export declare class WorkerConnectionPool extends BaseObserver<DBAdapterListener> implements DBAdapter {
10
+ export declare class WorkerConnectionPool extends BaseObserver<DBAdapterListener> implements ConnectionPool {
11
11
  private readonly options;
12
12
  readonly name: string;
13
13
  private readConnections;
@@ -19,14 +19,24 @@ export declare class WorkerConnectionPool extends BaseObserver<DBAdapterListener
19
19
  close(): Promise<void>;
20
20
  readLock<T>(fn: (tx: BetterSQLite3LockContext) => Promise<T>, _options?: DBLockOptions | undefined): Promise<T>;
21
21
  writeLock<T>(fn: (tx: BetterSQLite3LockContext) => Promise<T>, _options?: DBLockOptions | undefined): Promise<T>;
22
- readTransaction<T>(fn: (tx: BetterSQLite3Transaction) => Promise<T>, _options?: DBLockOptions | undefined): Promise<T>;
23
- writeTransaction<T>(fn: (tx: BetterSQLite3Transaction) => Promise<T>, _options?: DBLockOptions | undefined): Promise<T>;
24
- private internalTransaction;
22
+ refreshSchema(): Promise<void>;
23
+ }
24
+ declare const WorkerPoolDatabaseAdapter_base: (new (...args: any[]) => {
25
+ readTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
26
+ writeTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
25
27
  getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
26
28
  getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
27
29
  get<T>(sql: string, parameters?: any[]): Promise<T>;
28
- execute(query: string, params?: any[] | undefined): Promise<QueryResult>;
29
- executeRaw(query: string, params?: any[] | undefined): Promise<any[][]>;
30
+ execute(query: string, params?: any[]): Promise<QueryResult>;
31
+ executeRaw(query: string, params?: any[]): Promise<any[][]>;
30
32
  executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
31
- refreshSchema(): Promise<void>;
33
+ name: string;
34
+ close: () => void | Promise<void>;
35
+ readLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
36
+ writeLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
37
+ refreshSchema: () => Promise<void>;
38
+ registerListener(listener: Partial<DBAdapterListener>): () => void;
39
+ }) & typeof WorkerConnectionPool;
40
+ export declare class WorkerPoolDatabaseAdapter extends WorkerPoolDatabaseAdapter_base {
32
41
  }
42
+ export {};
@@ -2,7 +2,7 @@ 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 } from '@powersync/common';
5
+ import { BaseObserver, DBAdapterDefaultMixin } from '@powersync/common';
6
6
  import { AsyncResource } from 'node:async_hooks';
7
7
  import { isBundledToCommonJs } from '../utils/modules.js';
8
8
  import { RemoteConnection } from './RemoteConnection.js';
@@ -190,77 +190,11 @@ export class WorkerConnectionPool extends BaseObserver {
190
190
  }
191
191
  })();
192
192
  }
193
- readTransaction(fn, _options) {
194
- return this.readLock((ctx) => this.internalTransaction(ctx, fn));
195
- }
196
- writeTransaction(fn, _options) {
197
- return this.writeLock((ctx) => this.internalTransaction(ctx, fn));
198
- }
199
- async internalTransaction(connection, fn) {
200
- let finalized = false;
201
- const commit = async () => {
202
- if (!finalized) {
203
- finalized = true;
204
- await connection.execute('COMMIT');
205
- }
206
- return { rowsAffected: 0 };
207
- };
208
- const rollback = async () => {
209
- if (!finalized) {
210
- finalized = true;
211
- await connection.execute('ROLLBACK');
212
- }
213
- return { rowsAffected: 0 };
214
- };
215
- try {
216
- await connection.execute('BEGIN');
217
- const result = await fn({
218
- execute: (query, params) => connection.execute(query, params),
219
- executeRaw: (query, params) => connection.executeRaw(query, params),
220
- executeBatch: (query, params) => connection.executeBatch(query, params),
221
- get: (query, params) => connection.get(query, params),
222
- getAll: (query, params) => connection.getAll(query, params),
223
- getOptional: (query, params) => connection.getOptional(query, params),
224
- commit,
225
- rollback
226
- });
227
- await commit();
228
- return result;
229
- }
230
- catch (ex) {
231
- try {
232
- await rollback();
233
- }
234
- catch (ex2) {
235
- // In rare cases, a rollback may fail.
236
- // Safe to ignore.
237
- }
238
- throw ex;
239
- }
240
- }
241
- getAll(sql, parameters) {
242
- return this.readLock((ctx) => ctx.getAll(sql, parameters));
243
- }
244
- getOptional(sql, parameters) {
245
- return this.readLock((ctx) => ctx.getOptional(sql, parameters));
246
- }
247
- get(sql, parameters) {
248
- return this.readLock((ctx) => ctx.get(sql, parameters));
249
- }
250
- execute(query, params) {
251
- return this.writeLock((ctx) => ctx.execute(query, params));
252
- }
253
- executeRaw(query, params) {
254
- return this.writeLock((ctx) => ctx.executeRaw(query, params));
255
- }
256
- executeBatch(query, params) {
257
- return this.writeTransaction((ctx) => ctx.executeBatch(query, params));
258
- }
259
193
  async refreshSchema() {
260
194
  await this.writeConnection.refreshSchema();
261
- for (const readConnection of this.readConnections) {
262
- await readConnection.refreshSchema();
263
- }
195
+ await Promise.all(this.readConnections.map((c) => c.refreshSchema()));
264
196
  }
265
197
  }
198
+ export class WorkerPoolDatabaseAdapter extends DBAdapterDefaultMixin(WorkerConnectionPool) {
199
+ }
266
200
  //# 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powersync/node",
3
- "version": "0.17.1",
3
+ "version": "0.18.1",
4
4
  "publishConfig": {
5
5
  "registry": "https://registry.npmjs.org/",
6
6
  "access": "public"
@@ -48,7 +48,7 @@
48
48
  },
49
49
  "homepage": "https://docs.powersync.com/",
50
50
  "peerDependencies": {
51
- "@powersync/common": "^1.47.0",
51
+ "@powersync/common": "^1.49.0",
52
52
  "better-sqlite3": "12.x"
53
53
  },
54
54
  "peerDependenciesMeta": {
@@ -61,7 +61,7 @@
61
61
  "bson": "^6.10.4",
62
62
  "comlink": "^4.4.2",
63
63
  "undici": "^7.11.0",
64
- "@powersync/common": "1.47.0"
64
+ "@powersync/common": "1.49.0"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@types/node": "^24.0.0",
@@ -17,7 +17,7 @@ import {
17
17
  import { NodeCustomConnectionOptions, NodeRemote } from '../sync/stream/NodeRemote.js';
18
18
  import { NodeStreamingSyncImplementation } from '../sync/stream/NodeStreamingSyncImplementation.js';
19
19
 
20
- import { WorkerConnectionPool } from './WorkerConnectionPool.js';
20
+ import { WorkerPoolDatabaseAdapter } from './WorkerConnectionPool.js';
21
21
  import { NodeSQLOpenOptions } from './options.js';
22
22
 
23
23
  export type NodePowerSyncDatabaseOptions = PowerSyncDatabaseOptions & {
@@ -54,14 +54,14 @@ export class PowerSyncDatabase extends AbstractPowerSyncDatabase {
54
54
  }
55
55
 
56
56
  async _initialize(): Promise<void> {
57
- await (this.database as WorkerConnectionPool).initialize();
57
+ await (this.database as WorkerPoolDatabaseAdapter).initialize();
58
58
  }
59
59
 
60
60
  /**
61
61
  * Opens a DBAdapter using better-sqlite3 as the default SQLite open factory.
62
62
  */
63
63
  protected openDBAdapter(options: PowerSyncDatabaseOptionsWithSettings): DBAdapter {
64
- return new WorkerConnectionPool(options.database);
64
+ return new WorkerPoolDatabaseAdapter(options.database);
65
65
  }
66
66
 
67
67
  protected generateBucketStorageAdapter(): BucketStorageAdapter {
@@ -1,4 +1,10 @@
1
- import { ConnectionClosedError, LockContext, QueryResult } from '@powersync/common';
1
+ import {
2
+ ConnectionClosedError,
3
+ DBGetUtilsDefaultMixin,
4
+ QueryResult,
5
+ SqlExecutor,
6
+ LockContext
7
+ } from '@powersync/common';
2
8
  import { releaseProxy, Remote } from 'comlink';
3
9
  import { Worker } from 'node:worker_threads';
4
10
  import { AsyncDatabase, AsyncDatabaseOpener, ProxiedQueryResult } from './AsyncDatabase.js';
@@ -6,7 +12,7 @@ import { AsyncDatabase, AsyncDatabaseOpener, ProxiedQueryResult } from './AsyncD
6
12
  /**
7
13
  * A PowerSync database connection implemented with RPC calls to a background worker.
8
14
  */
9
- export class RemoteConnection implements LockContext {
15
+ class BaseRemoteConnection implements SqlExecutor {
10
16
  isBusy = false;
11
17
 
12
18
  private readonly worker: Worker;
@@ -65,14 +71,14 @@ export class RemoteConnection implements LockContext {
65
71
  executeBatch(query: string, params: any[][] = []): Promise<QueryResult> {
66
72
  return this.withRemote(async () => {
67
73
  const result = await this.database.executeBatch(query, params ?? []);
68
- return RemoteConnection.wrapQueryResult(result);
74
+ return BaseRemoteConnection.wrapQueryResult(result);
69
75
  });
70
76
  }
71
77
 
72
78
  execute(query: string, params?: any[] | undefined): Promise<QueryResult> {
73
79
  return this.withRemote(async () => {
74
80
  const result = await this.database.execute(query, params ?? []);
75
- return RemoteConnection.wrapQueryResult(result);
81
+ return BaseRemoteConnection.wrapQueryResult(result);
76
82
  });
77
83
  }
78
84
 
@@ -82,25 +88,6 @@ export class RemoteConnection implements LockContext {
82
88
  });
83
89
  }
84
90
 
85
- async getAll<T>(sql: string, parameters?: any[]): Promise<T[]> {
86
- const res = await this.execute(sql, parameters);
87
- return res.rows?._array ?? [];
88
- }
89
-
90
- async getOptional<T>(sql: string, parameters?: any[]): Promise<T | null> {
91
- const res = await this.execute(sql, parameters);
92
- return res.rows?.item(0) ?? null;
93
- }
94
-
95
- async get<T>(sql: string, parameters?: any[]): Promise<T> {
96
- const res = await this.execute(sql, parameters);
97
- const first = res.rows?.item(0);
98
- if (!first) {
99
- throw new Error('Result set is empty');
100
- }
101
- return first;
102
- }
103
-
104
91
  async refreshSchema() {
105
92
  await this.execute("pragma table_info('sqlite_master')");
106
93
  }
@@ -127,3 +114,5 @@ export class RemoteConnection implements LockContext {
127
114
  };
128
115
  }
129
116
  }
117
+
118
+ export class RemoteConnection extends DBGetUtilsDefaultMixin(BaseRemoteConnection) implements LockContext {}
@@ -6,7 +6,8 @@ import { Worker } from 'node:worker_threads';
6
6
  import {
7
7
  BaseObserver,
8
8
  BatchedUpdateNotification,
9
- DBAdapter,
9
+ ConnectionPool,
10
+ DBAdapterDefaultMixin,
10
11
  DBAdapterListener,
11
12
  DBLockOptions,
12
13
  LockContext,
@@ -35,7 +36,7 @@ const defaultDatabaseImplementation: NodeDatabaseImplementation = {
35
36
  /**
36
37
  * Adapter for better-sqlite3
37
38
  */
38
- export class WorkerConnectionPool extends BaseObserver<DBAdapterListener> implements DBAdapter {
39
+ export class WorkerConnectionPool extends BaseObserver<DBAdapterListener> implements ConnectionPool {
39
40
  private readonly options: NodeSQLOpenOptions;
40
41
  public readonly name: string;
41
42
 
@@ -236,93 +237,11 @@ export class WorkerConnectionPool extends BaseObserver<DBAdapterListener> implem
236
237
  })();
237
238
  }
238
239
 
239
- readTransaction<T>(
240
- fn: (tx: BetterSQLite3Transaction) => Promise<T>,
241
- _options?: DBLockOptions | undefined
242
- ): Promise<T> {
243
- return this.readLock((ctx) => this.internalTransaction(ctx as RemoteConnection, fn));
244
- }
245
-
246
- writeTransaction<T>(
247
- fn: (tx: BetterSQLite3Transaction) => Promise<T>,
248
- _options?: DBLockOptions | undefined
249
- ): Promise<T> {
250
- return this.writeLock((ctx) => this.internalTransaction(ctx as RemoteConnection, fn));
251
- }
252
-
253
- private async internalTransaction<T>(
254
- connection: RemoteConnection,
255
- fn: (tx: BetterSQLite3Transaction) => Promise<T>
256
- ): Promise<T> {
257
- let finalized = false;
258
- const commit = async (): Promise<QueryResult> => {
259
- if (!finalized) {
260
- finalized = true;
261
- await connection.execute('COMMIT');
262
- }
263
- return { rowsAffected: 0 };
264
- };
265
- const rollback = async (): Promise<QueryResult> => {
266
- if (!finalized) {
267
- finalized = true;
268
- await connection.execute('ROLLBACK');
269
- }
270
- return { rowsAffected: 0 };
271
- };
272
- try {
273
- await connection.execute('BEGIN');
274
- const result = await fn({
275
- execute: (query, params) => connection.execute(query, params),
276
- executeRaw: (query, params) => connection.executeRaw(query, params),
277
- executeBatch: (query, params) => connection.executeBatch(query, params),
278
- get: (query, params) => connection.get(query, params),
279
- getAll: (query, params) => connection.getAll(query, params),
280
- getOptional: (query, params) => connection.getOptional(query, params),
281
- commit,
282
- rollback
283
- });
284
- await commit();
285
- return result;
286
- } catch (ex) {
287
- try {
288
- await rollback();
289
- } catch (ex2) {
290
- // In rare cases, a rollback may fail.
291
- // Safe to ignore.
292
- }
293
- throw ex;
294
- }
295
- }
296
-
297
- getAll<T>(sql: string, parameters?: any[]): Promise<T[]> {
298
- return this.readLock((ctx) => ctx.getAll(sql, parameters));
299
- }
300
-
301
- getOptional<T>(sql: string, parameters?: any[]): Promise<T | null> {
302
- return this.readLock((ctx) => ctx.getOptional(sql, parameters));
303
- }
304
-
305
- get<T>(sql: string, parameters?: any[]): Promise<T> {
306
- return this.readLock((ctx) => ctx.get(sql, parameters));
307
- }
308
-
309
- execute(query: string, params?: any[] | undefined): Promise<QueryResult> {
310
- return this.writeLock((ctx) => ctx.execute(query, params));
311
- }
312
-
313
- executeRaw(query: string, params?: any[] | undefined): Promise<any[][]> {
314
- return this.writeLock((ctx) => ctx.executeRaw(query, params));
315
- }
316
-
317
- executeBatch(query: string, params?: any[][]): Promise<QueryResult> {
318
- return this.writeTransaction((ctx) => ctx.executeBatch(query, params));
319
- }
320
-
321
240
  async refreshSchema() {
322
241
  await this.writeConnection.refreshSchema();
323
242
 
324
- for (const readConnection of this.readConnections) {
325
- await readConnection.refreshSchema();
326
- }
243
+ await Promise.all(this.readConnections.map((c) => c.refreshSchema()));
327
244
  }
328
245
  }
246
+
247
+ export class WorkerPoolDatabaseAdapter extends DBAdapterDefaultMixin(WorkerConnectionPool) {}