@powersync/node 0.13.0 → 0.14.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/DefaultWorker.cjs.map +1 -1
- package/dist/bundle.cjs +38 -18
- package/dist/bundle.cjs.map +1 -1
- package/dist/worker.cjs.map +1 -1
- package/lib/db/AsyncDatabase.js +1 -0
- package/lib/db/AsyncDatabase.js.map +1 -0
- package/lib/db/BetterSqliteWorker.js +1 -0
- package/lib/db/BetterSqliteWorker.js.map +1 -0
- package/lib/db/DefaultWorker.js +1 -0
- package/lib/db/DefaultWorker.js.map +1 -0
- package/lib/db/NodeSqliteWorker.js +1 -0
- package/lib/db/NodeSqliteWorker.js.map +1 -0
- package/lib/db/PowerSyncDatabase.js +1 -0
- package/lib/db/PowerSyncDatabase.js.map +1 -0
- package/lib/db/RemoteConnection.d.ts +3 -2
- package/lib/db/RemoteConnection.js +30 -12
- package/lib/db/RemoteConnection.js.map +1 -0
- package/lib/db/SqliteWorker.js +1 -0
- package/lib/db/SqliteWorker.js.map +1 -0
- package/lib/db/WorkerConnectionPool.js +2 -1
- package/lib/db/WorkerConnectionPool.js.map +1 -0
- package/lib/db/options.js +1 -0
- package/lib/db/options.js.map +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -0
- package/lib/sync/stream/NodeRemote.js +1 -0
- package/lib/sync/stream/NodeRemote.js.map +1 -0
- package/lib/sync/stream/NodeStreamingSyncImplementation.d.ts +3 -3
- package/lib/sync/stream/NodeStreamingSyncImplementation.js +8 -4
- package/lib/sync/stream/NodeStreamingSyncImplementation.js.map +1 -0
- package/lib/utils/modules.js +1 -0
- package/lib/utils/modules.js.map +1 -0
- package/lib/utils/modules_commonjs.js +1 -0
- package/lib/utils/modules_commonjs.js.map +1 -0
- package/lib/worker.js +1 -0
- package/lib/worker.js.map +1 -0
- package/package.json +10 -10
- package/src/db/AsyncDatabase.ts +26 -0
- package/src/db/BetterSqliteWorker.ts +72 -0
- package/src/db/DefaultWorker.ts +3 -0
- package/src/db/NodeSqliteWorker.ts +63 -0
- package/src/db/PowerSyncDatabase.ts +100 -0
- package/src/db/RemoteConnection.ts +129 -0
- package/src/db/SqliteWorker.ts +119 -0
- package/src/db/WorkerConnectionPool.ts +328 -0
- package/src/db/options.ts +51 -0
- package/src/index.ts +4 -0
- package/src/sync/stream/NodeRemote.ts +123 -0
- package/src/sync/stream/NodeStreamingSyncImplementation.ts +57 -0
- package/src/utils/modules.ts +6 -0
- package/src/utils/modules_commonjs.ts +7 -0
- package/src/worker.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultWorker.cjs","sources":["../lib/utils/modules_commonjs.js","../lib/db/BetterSqliteWorker.js","../lib/db/NodeSqliteWorker.js","../lib/db/SqliteWorker.js","../lib/db/DefaultWorker.js"],"sourcesContent":["// NOTE! Do not import this file directly! We have a rollup plugin that rewrites imports to modules.js to this file when\n// bundling to CommonJS.\nexport const isBundledToCommonJs = true;\nexport async function dynamicImport(path) {\n return require(path);\n}\n","import { threadId } from 'node:worker_threads';\nclass BlockingAsyncDatabase {\n db;\n constructor(db) {\n this.db = db;\n db.function('node_thread_id', () => threadId);\n }\n async close() {\n this.db.close();\n }\n async execute(query, params) {\n const stmt = this.db.prepare(query);\n if (stmt.reader) {\n const rows = stmt.all(params);\n return {\n rowsAffected: 0,\n rows: {\n _array: rows,\n length: rows.length\n }\n };\n }\n else {\n const info = stmt.run(params);\n return {\n rowsAffected: info.changes,\n insertId: Number(info.lastInsertRowid)\n };\n }\n }\n async executeRaw(query, params) {\n const stmt = this.db.prepare(query);\n if (stmt.reader) {\n return stmt.raw().all(params);\n }\n else {\n stmt.raw().run(params);\n return [];\n }\n }\n async executeBatch(query, params) {\n params = params ?? [];\n let rowsAffected = 0;\n const stmt = this.db.prepare(query);\n for (const paramSet of params) {\n const info = stmt.run(paramSet);\n rowsAffected += info.changes;\n }\n return { rowsAffected };\n }\n}\nexport async function openDatabase(worker, options) {\n const BetterSQLite3Database = await worker.loadBetterSqlite3();\n const baseDB = new BetterSQLite3Database(options.path);\n baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');\n const asyncDb = new BlockingAsyncDatabase(baseDB);\n return asyncDb;\n}\n","import { threadId } from 'node:worker_threads';\nimport { dynamicImport } from '../utils/modules.js';\nclass BlockingNodeDatabase {\n db;\n constructor(db, write) {\n this.db = db;\n db.function('node_thread_id', () => threadId);\n }\n async close() {\n this.db.close();\n }\n async execute(query, params) {\n const stmt = this.db.prepare(query);\n const rows = stmt.all(...params);\n return {\n rowsAffected: 0,\n rows: {\n _array: rows,\n length: rows.length\n }\n };\n }\n async executeRaw(query, params) {\n const stmt = this.db.prepare(query);\n stmt.setReturnArrays(true); // Missing in @types/node, https://nodejs.org/api/sqlite.html#statementsetreturnarraysenabled\n return stmt.all(...params);\n }\n async executeBatch(query, params) {\n params = params ?? [];\n let rowsAffected = 0;\n const stmt = this.db.prepare(query);\n for (const paramSet of params) {\n const info = stmt.run(...paramSet);\n rowsAffected += info.changes;\n }\n return { rowsAffected };\n }\n}\nexport async function openDatabase(worker, options) {\n // NOTE: We want to import node:sqlite dynamically, to avoid bundlers unconditionally requiring node:sqlite in the\n // end, since that would make us incompatible with older Node.JS versions.\n const { DatabaseSync } = await dynamicImport('node:sqlite');\n const baseDB = new DatabaseSync(options.path, { allowExtension: true });\n baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');\n return new BlockingNodeDatabase(baseDB, options.isWriter);\n}\n","import * as Comlink from 'comlink';\nimport OS from 'node:os';\nimport * as path from 'node:path';\nimport url from 'node:url';\nimport { parentPort } from 'node:worker_threads';\nimport { dynamicImport, isBundledToCommonJs } from '../utils/modules.js';\nimport { openDatabase as openBetterSqliteDatabase } from './BetterSqliteWorker.js';\nimport { openDatabase as openNodeDatabase } from './NodeSqliteWorker.js';\n/**\n * @returns The relevant PowerSync extension binary filename for the current platform and architecture\n */\nexport function getPowerSyncExtensionFilename() {\n const platform = OS.platform();\n const arch = OS.arch();\n let extensionFile;\n if (platform == 'win32') {\n if (arch == 'x64') {\n extensionFile = 'powersync_x64.dll';\n }\n else if (arch == 'ia32') {\n extensionFile = 'powersync_x86.dll';\n }\n else if (arch == 'arm64') {\n extensionFile = 'powersync_aarch64.dll';\n }\n else {\n throw new Error('Windows platform only supports arm64, ia32 and x64 architecture.');\n }\n }\n else if (platform == 'linux') {\n if (arch == 'x64') {\n extensionFile = 'libpowersync_x64.so';\n }\n else if (arch == 'arm64') {\n // TODO detect armv7 as an option\n extensionFile = 'libpowersync_aarch64.so';\n }\n else if (arch == 'riscv64') {\n extensionFile = 'libpowersync_riscv64gc.so';\n }\n else {\n throw new Error('Linux platform only supports x64, arm64 and riscv64 architectures.');\n }\n }\n else if (platform == 'darwin') {\n if (arch == 'x64') {\n extensionFile = 'libpowersync_x64.dylib';\n }\n else if (arch == 'arm64') {\n extensionFile = 'libpowersync_aarch64.dylib';\n }\n else {\n throw new Error('macOS platform only supports x64 and arm64 architectures.');\n }\n }\n else {\n throw new Error(`Unknown platform: ${platform}, PowerSync for Node.js currently supports Windows, Linux and macOS.`);\n }\n return extensionFile;\n}\nexport function startPowerSyncWorker(options) {\n const resolvedOptions = {\n extensionPath() {\n const isCommonJsModule = isBundledToCommonJs;\n const extensionFilename = getPowerSyncExtensionFilename();\n let resolved;\n if (isCommonJsModule) {\n resolved = path.resolve(__dirname, '../lib/', extensionFilename);\n }\n else {\n resolved = url.fileURLToPath(new URL(`../${extensionFilename}`, import.meta.url));\n }\n return resolved;\n },\n async loadBetterSqlite3() {\n const module = await dynamicImport('better-sqlite3');\n return module.default;\n },\n ...options\n };\n Comlink.expose(new DatabaseOpenHelper(resolvedOptions), parentPort);\n}\nclass DatabaseOpenHelper {\n options;\n constructor(options) {\n this.options = options;\n }\n async open(options) {\n let database;\n const implementation = options.implementation;\n switch (implementation.type) {\n case 'better-sqlite3':\n database = await openBetterSqliteDatabase(this.options, options);\n break;\n case 'node:sqlite':\n database = await openNodeDatabase(this.options, options);\n break;\n default:\n throw new Error(`Unknown database implementation: ${options.implementation}.`);\n }\n return Comlink.proxy(database);\n }\n}\n","import { startPowerSyncWorker } from './SqliteWorker.js';\nstartPowerSyncWorker();\n"],"names":["threadId","openDatabase","path","Comlink","parentPort","openBetterSqliteDatabase","openNodeDatabase"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DefaultWorker.cjs","sources":["../lib/utils/modules_commonjs.js","../lib/db/BetterSqliteWorker.js","../lib/db/NodeSqliteWorker.js","../lib/db/SqliteWorker.js","../lib/db/DefaultWorker.js"],"sourcesContent":["// NOTE! Do not import this file directly! We have a rollup plugin that rewrites imports to modules.js to this file when\n// bundling to CommonJS.\nexport const isBundledToCommonJs = true;\nexport async function dynamicImport(path) {\n return require(path);\n}\n//# sourceMappingURL=modules_commonjs.js.map","import { threadId } from 'node:worker_threads';\nclass BlockingAsyncDatabase {\n db;\n constructor(db) {\n this.db = db;\n db.function('node_thread_id', () => threadId);\n }\n async close() {\n this.db.close();\n }\n async execute(query, params) {\n const stmt = this.db.prepare(query);\n if (stmt.reader) {\n const rows = stmt.all(params);\n return {\n rowsAffected: 0,\n rows: {\n _array: rows,\n length: rows.length\n }\n };\n }\n else {\n const info = stmt.run(params);\n return {\n rowsAffected: info.changes,\n insertId: Number(info.lastInsertRowid)\n };\n }\n }\n async executeRaw(query, params) {\n const stmt = this.db.prepare(query);\n if (stmt.reader) {\n return stmt.raw().all(params);\n }\n else {\n stmt.raw().run(params);\n return [];\n }\n }\n async executeBatch(query, params) {\n params = params ?? [];\n let rowsAffected = 0;\n const stmt = this.db.prepare(query);\n for (const paramSet of params) {\n const info = stmt.run(paramSet);\n rowsAffected += info.changes;\n }\n return { rowsAffected };\n }\n}\nexport async function openDatabase(worker, options) {\n const BetterSQLite3Database = await worker.loadBetterSqlite3();\n const baseDB = new BetterSQLite3Database(options.path);\n baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');\n const asyncDb = new BlockingAsyncDatabase(baseDB);\n return asyncDb;\n}\n//# sourceMappingURL=BetterSqliteWorker.js.map","import { threadId } from 'node:worker_threads';\nimport { dynamicImport } from '../utils/modules.js';\nclass BlockingNodeDatabase {\n db;\n constructor(db, write) {\n this.db = db;\n db.function('node_thread_id', () => threadId);\n }\n async close() {\n this.db.close();\n }\n async execute(query, params) {\n const stmt = this.db.prepare(query);\n const rows = stmt.all(...params);\n return {\n rowsAffected: 0,\n rows: {\n _array: rows,\n length: rows.length\n }\n };\n }\n async executeRaw(query, params) {\n const stmt = this.db.prepare(query);\n stmt.setReturnArrays(true); // Missing in @types/node, https://nodejs.org/api/sqlite.html#statementsetreturnarraysenabled\n return stmt.all(...params);\n }\n async executeBatch(query, params) {\n params = params ?? [];\n let rowsAffected = 0;\n const stmt = this.db.prepare(query);\n for (const paramSet of params) {\n const info = stmt.run(...paramSet);\n rowsAffected += info.changes;\n }\n return { rowsAffected };\n }\n}\nexport async function openDatabase(worker, options) {\n // NOTE: We want to import node:sqlite dynamically, to avoid bundlers unconditionally requiring node:sqlite in the\n // end, since that would make us incompatible with older Node.JS versions.\n const { DatabaseSync } = await dynamicImport('node:sqlite');\n const baseDB = new DatabaseSync(options.path, { allowExtension: true });\n baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');\n return new BlockingNodeDatabase(baseDB, options.isWriter);\n}\n//# sourceMappingURL=NodeSqliteWorker.js.map","import * as Comlink from 'comlink';\nimport OS from 'node:os';\nimport * as path from 'node:path';\nimport url from 'node:url';\nimport { parentPort } from 'node:worker_threads';\nimport { dynamicImport, isBundledToCommonJs } from '../utils/modules.js';\nimport { openDatabase as openBetterSqliteDatabase } from './BetterSqliteWorker.js';\nimport { openDatabase as openNodeDatabase } from './NodeSqliteWorker.js';\n/**\n * @returns The relevant PowerSync extension binary filename for the current platform and architecture\n */\nexport function getPowerSyncExtensionFilename() {\n const platform = OS.platform();\n const arch = OS.arch();\n let extensionFile;\n if (platform == 'win32') {\n if (arch == 'x64') {\n extensionFile = 'powersync_x64.dll';\n }\n else if (arch == 'ia32') {\n extensionFile = 'powersync_x86.dll';\n }\n else if (arch == 'arm64') {\n extensionFile = 'powersync_aarch64.dll';\n }\n else {\n throw new Error('Windows platform only supports arm64, ia32 and x64 architecture.');\n }\n }\n else if (platform == 'linux') {\n if (arch == 'x64') {\n extensionFile = 'libpowersync_x64.so';\n }\n else if (arch == 'arm64') {\n // TODO detect armv7 as an option\n extensionFile = 'libpowersync_aarch64.so';\n }\n else if (arch == 'riscv64') {\n extensionFile = 'libpowersync_riscv64gc.so';\n }\n else {\n throw new Error('Linux platform only supports x64, arm64 and riscv64 architectures.');\n }\n }\n else if (platform == 'darwin') {\n if (arch == 'x64') {\n extensionFile = 'libpowersync_x64.dylib';\n }\n else if (arch == 'arm64') {\n extensionFile = 'libpowersync_aarch64.dylib';\n }\n else {\n throw new Error('macOS platform only supports x64 and arm64 architectures.');\n }\n }\n else {\n throw new Error(`Unknown platform: ${platform}, PowerSync for Node.js currently supports Windows, Linux and macOS.`);\n }\n return extensionFile;\n}\nexport function startPowerSyncWorker(options) {\n const resolvedOptions = {\n extensionPath() {\n const isCommonJsModule = isBundledToCommonJs;\n const extensionFilename = getPowerSyncExtensionFilename();\n let resolved;\n if (isCommonJsModule) {\n resolved = path.resolve(__dirname, '../lib/', extensionFilename);\n }\n else {\n resolved = url.fileURLToPath(new URL(`../${extensionFilename}`, import.meta.url));\n }\n return resolved;\n },\n async loadBetterSqlite3() {\n const module = await dynamicImport('better-sqlite3');\n return module.default;\n },\n ...options\n };\n Comlink.expose(new DatabaseOpenHelper(resolvedOptions), parentPort);\n}\nclass DatabaseOpenHelper {\n options;\n constructor(options) {\n this.options = options;\n }\n async open(options) {\n let database;\n const implementation = options.implementation;\n switch (implementation.type) {\n case 'better-sqlite3':\n database = await openBetterSqliteDatabase(this.options, options);\n break;\n case 'node:sqlite':\n database = await openNodeDatabase(this.options, options);\n break;\n default:\n throw new Error(`Unknown database implementation: ${options.implementation}.`);\n }\n return Comlink.proxy(database);\n }\n}\n//# sourceMappingURL=SqliteWorker.js.map","import { startPowerSyncWorker } from './SqliteWorker.js';\nstartPowerSyncWorker();\n//# sourceMappingURL=DefaultWorker.js.map"],"names":["threadId","openDatabase","path","Comlink","parentPort","openBetterSqliteDatabase","openNodeDatabase"],"mappings":"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"}
|
package/dist/bundle.cjs
CHANGED
|
@@ -4,7 +4,7 @@ var common = require('@powersync/common');
|
|
|
4
4
|
var os = require('node:os');
|
|
5
5
|
var bson = require('bson');
|
|
6
6
|
var undici = require('undici');
|
|
7
|
-
var
|
|
7
|
+
var asyncMutex = require('async-mutex');
|
|
8
8
|
var Comlink = require('comlink');
|
|
9
9
|
var fs = require('node:fs/promises');
|
|
10
10
|
var path = require('node:path');
|
|
@@ -111,7 +111,7 @@ function getProxyForProtocol(protocol) {
|
|
|
111
111
|
* concurrently.
|
|
112
112
|
*/
|
|
113
113
|
const LOCKS = new Map();
|
|
114
|
-
|
|
114
|
+
new Set(Object.values(common.LockType));
|
|
115
115
|
class NodeStreamingSyncImplementation extends common.AbstractStreamingSyncImplementation {
|
|
116
116
|
locks;
|
|
117
117
|
constructor(options) {
|
|
@@ -127,16 +127,19 @@ class NodeStreamingSyncImplementation extends common.AbstractStreamingSyncImplem
|
|
|
127
127
|
this.locks = LOCKS.get(identifier);
|
|
128
128
|
return;
|
|
129
129
|
}
|
|
130
|
-
this.locks = new
|
|
130
|
+
this.locks = new Map();
|
|
131
|
+
this.locks.set(common.LockType.CRUD, new asyncMutex.Mutex());
|
|
132
|
+
this.locks.set(common.LockType.SYNC, new asyncMutex.Mutex());
|
|
131
133
|
if (identifier) {
|
|
132
134
|
LOCKS.set(identifier, this.locks);
|
|
133
135
|
}
|
|
134
136
|
}
|
|
135
137
|
obtainLock(lockOptions) {
|
|
136
|
-
|
|
138
|
+
const lock = this.locks.get(lockOptions.type);
|
|
139
|
+
if (!lock) {
|
|
137
140
|
throw new Error(`Lock type ${lockOptions.type} not found`);
|
|
138
141
|
}
|
|
139
|
-
return
|
|
142
|
+
return lock.runExclusive(async () => {
|
|
140
143
|
if (lockOptions.signal?.aborted) {
|
|
141
144
|
throw new Error('Aborted');
|
|
142
145
|
}
|
|
@@ -153,42 +156,59 @@ class RemoteConnection {
|
|
|
153
156
|
worker;
|
|
154
157
|
comlink;
|
|
155
158
|
database;
|
|
159
|
+
notifyWorkerClosed = new AbortController();
|
|
156
160
|
constructor(worker, comlink, database) {
|
|
157
161
|
this.worker = worker;
|
|
158
162
|
this.comlink = comlink;
|
|
159
163
|
this.database = database;
|
|
164
|
+
this.worker.once('exit', (_) => {
|
|
165
|
+
this.notifyWorkerClosed.abort();
|
|
166
|
+
});
|
|
160
167
|
}
|
|
161
168
|
/**
|
|
162
169
|
* Runs the inner function, but appends the stack trace where this function was called. This is useful for workers
|
|
163
170
|
* because stack traces from worker errors are otherwise unrelated to the application issue that has caused them.
|
|
164
171
|
*/
|
|
165
|
-
|
|
172
|
+
withRemote(inner) {
|
|
166
173
|
const trace = {};
|
|
167
174
|
Error.captureStackTrace(trace);
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
if (e instanceof Error && e.stack) {
|
|
173
|
-
e.stack += trace.stack;
|
|
175
|
+
const controller = this.notifyWorkerClosed;
|
|
176
|
+
return new Promise((resolve, reject) => {
|
|
177
|
+
if (controller.signal.aborted) {
|
|
178
|
+
reject(new Error('Called operation on closed remote'));
|
|
174
179
|
}
|
|
175
|
-
|
|
176
|
-
|
|
180
|
+
function handleAbort() {
|
|
181
|
+
reject(new Error('Remote peer closed with request in flight'));
|
|
182
|
+
}
|
|
183
|
+
function completePromise(action) {
|
|
184
|
+
controller.signal.removeEventListener('abort', handleAbort);
|
|
185
|
+
action();
|
|
186
|
+
}
|
|
187
|
+
controller.signal.addEventListener('abort', handleAbort);
|
|
188
|
+
inner()
|
|
189
|
+
.then((data) => completePromise(() => resolve(data)))
|
|
190
|
+
.catch((e) => {
|
|
191
|
+
if (e instanceof Error && e.stack) {
|
|
192
|
+
e.stack += trace.stack;
|
|
193
|
+
}
|
|
194
|
+
return completePromise(() => reject(e));
|
|
195
|
+
});
|
|
196
|
+
});
|
|
177
197
|
}
|
|
178
198
|
executeBatch(query, params = []) {
|
|
179
|
-
return this.
|
|
199
|
+
return this.withRemote(async () => {
|
|
180
200
|
const result = await this.database.executeBatch(query, params ?? []);
|
|
181
201
|
return RemoteConnection.wrapQueryResult(result);
|
|
182
202
|
});
|
|
183
203
|
}
|
|
184
204
|
execute(query, params) {
|
|
185
|
-
return this.
|
|
205
|
+
return this.withRemote(async () => {
|
|
186
206
|
const result = await this.database.execute(query, params ?? []);
|
|
187
207
|
return RemoteConnection.wrapQueryResult(result);
|
|
188
208
|
});
|
|
189
209
|
}
|
|
190
210
|
executeRaw(query, params) {
|
|
191
|
-
return this.
|
|
211
|
+
return this.withRemote(async () => {
|
|
192
212
|
return await this.database.executeRaw(query, params ?? []);
|
|
193
213
|
});
|
|
194
214
|
}
|
|
@@ -389,7 +409,7 @@ class WorkerConnectionPool extends common.BaseObserver {
|
|
|
389
409
|
return await fn(this.writeConnection);
|
|
390
410
|
}
|
|
391
411
|
finally {
|
|
392
|
-
const serializedUpdates = await this.writeConnection.
|
|
412
|
+
const serializedUpdates = await this.writeConnection.executeRaw("SELECT powersync_update_hooks('get');", []);
|
|
393
413
|
const updates = JSON.parse(serializedUpdates[0][0]);
|
|
394
414
|
if (updates.length > 0) {
|
|
395
415
|
const event = {
|
package/dist/bundle.cjs.map
CHANGED
|
@@ -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"],"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","import { AbstractStreamingSyncImplementation, LockType } from '@powersync/common';\nimport Lock from 'async-lock';\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 Lock();\n if (identifier) {\n LOCKS.set(identifier, this.locks);\n }\n }\n obtainLock(lockOptions) {\n if (!lockTypes.has(lockOptions.type)) {\n throw new Error(`Lock type ${lockOptions.type} not found`);\n }\n return this.locks.acquire(lockOptions.type, async () => {\n if (lockOptions.signal?.aborted) {\n throw new Error('Aborted');\n }\n return lockOptions.callback();\n });\n }\n}\n","import { 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 constructor(worker, comlink, database) {\n this.worker = worker;\n this.comlink = comlink;\n this.database = database;\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 async recoverTrace(inner) {\n const trace = {};\n Error.captureStackTrace(trace);\n try {\n return await inner();\n }\n catch (e) {\n if (e instanceof Error && e.stack) {\n e.stack += trace.stack;\n }\n throw e;\n }\n }\n executeBatch(query, params = []) {\n return this.recoverTrace(async () => {\n const result = await this.database.executeBatch(query, params ?? []);\n return RemoteConnection.wrapQueryResult(result);\n });\n }\n execute(query, params) {\n return this.recoverTrace(async () => {\n const result = await this.database.execute(query, params ?? []);\n return RemoteConnection.wrapQueryResult(result);\n });\n }\n executeRaw(query, params) {\n return this.recoverTrace(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","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.database.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","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"],"names":["FetchImplementationProvider","AbstractRemote","DEFAULT_REMOTE_LOGGER","UndiciWebSocket","ProxyAgent","getGlobalDispatcher","os","BSON","EnvHttpProxyAgent","LockType","AbstractStreamingSyncImplementation","releaseProxy","BaseObserver","path","Worker","Comlink","AsyncResource","AbstractPowerSyncDatabase","SqliteBucketStorage"],"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"],"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 { 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 Error('Called operation on closed remote'));\n }\n function handleAbort() {\n reject(new Error('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"],"names":["FetchImplementationProvider","AbstractRemote","DEFAULT_REMOTE_LOGGER","UndiciWebSocket","ProxyAgent","getGlobalDispatcher","os","BSON","EnvHttpProxyAgent","LockType","AbstractStreamingSyncImplementation","Mutex","releaseProxy","BaseObserver","path","Worker","Comlink","AsyncResource","AbstractPowerSyncDatabase","SqliteBucketStorage"],"mappings":"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"}
|
package/dist/worker.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.cjs","sources":["../lib/utils/modules_commonjs.js","../lib/db/BetterSqliteWorker.js","../lib/db/NodeSqliteWorker.js","../lib/db/SqliteWorker.js"],"sourcesContent":["// NOTE! Do not import this file directly! We have a rollup plugin that rewrites imports to modules.js to this file when\n// bundling to CommonJS.\nexport const isBundledToCommonJs = true;\nexport async function dynamicImport(path) {\n return require(path);\n}\n","import { threadId } from 'node:worker_threads';\nclass BlockingAsyncDatabase {\n db;\n constructor(db) {\n this.db = db;\n db.function('node_thread_id', () => threadId);\n }\n async close() {\n this.db.close();\n }\n async execute(query, params) {\n const stmt = this.db.prepare(query);\n if (stmt.reader) {\n const rows = stmt.all(params);\n return {\n rowsAffected: 0,\n rows: {\n _array: rows,\n length: rows.length\n }\n };\n }\n else {\n const info = stmt.run(params);\n return {\n rowsAffected: info.changes,\n insertId: Number(info.lastInsertRowid)\n };\n }\n }\n async executeRaw(query, params) {\n const stmt = this.db.prepare(query);\n if (stmt.reader) {\n return stmt.raw().all(params);\n }\n else {\n stmt.raw().run(params);\n return [];\n }\n }\n async executeBatch(query, params) {\n params = params ?? [];\n let rowsAffected = 0;\n const stmt = this.db.prepare(query);\n for (const paramSet of params) {\n const info = stmt.run(paramSet);\n rowsAffected += info.changes;\n }\n return { rowsAffected };\n }\n}\nexport async function openDatabase(worker, options) {\n const BetterSQLite3Database = await worker.loadBetterSqlite3();\n const baseDB = new BetterSQLite3Database(options.path);\n baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');\n const asyncDb = new BlockingAsyncDatabase(baseDB);\n return asyncDb;\n}\n","import { threadId } from 'node:worker_threads';\nimport { dynamicImport } from '../utils/modules.js';\nclass BlockingNodeDatabase {\n db;\n constructor(db, write) {\n this.db = db;\n db.function('node_thread_id', () => threadId);\n }\n async close() {\n this.db.close();\n }\n async execute(query, params) {\n const stmt = this.db.prepare(query);\n const rows = stmt.all(...params);\n return {\n rowsAffected: 0,\n rows: {\n _array: rows,\n length: rows.length\n }\n };\n }\n async executeRaw(query, params) {\n const stmt = this.db.prepare(query);\n stmt.setReturnArrays(true); // Missing in @types/node, https://nodejs.org/api/sqlite.html#statementsetreturnarraysenabled\n return stmt.all(...params);\n }\n async executeBatch(query, params) {\n params = params ?? [];\n let rowsAffected = 0;\n const stmt = this.db.prepare(query);\n for (const paramSet of params) {\n const info = stmt.run(...paramSet);\n rowsAffected += info.changes;\n }\n return { rowsAffected };\n }\n}\nexport async function openDatabase(worker, options) {\n // NOTE: We want to import node:sqlite dynamically, to avoid bundlers unconditionally requiring node:sqlite in the\n // end, since that would make us incompatible with older Node.JS versions.\n const { DatabaseSync } = await dynamicImport('node:sqlite');\n const baseDB = new DatabaseSync(options.path, { allowExtension: true });\n baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');\n return new BlockingNodeDatabase(baseDB, options.isWriter);\n}\n","import * as Comlink from 'comlink';\nimport OS from 'node:os';\nimport * as path from 'node:path';\nimport url from 'node:url';\nimport { parentPort } from 'node:worker_threads';\nimport { dynamicImport, isBundledToCommonJs } from '../utils/modules.js';\nimport { openDatabase as openBetterSqliteDatabase } from './BetterSqliteWorker.js';\nimport { openDatabase as openNodeDatabase } from './NodeSqliteWorker.js';\n/**\n * @returns The relevant PowerSync extension binary filename for the current platform and architecture\n */\nexport function getPowerSyncExtensionFilename() {\n const platform = OS.platform();\n const arch = OS.arch();\n let extensionFile;\n if (platform == 'win32') {\n if (arch == 'x64') {\n extensionFile = 'powersync_x64.dll';\n }\n else if (arch == 'ia32') {\n extensionFile = 'powersync_x86.dll';\n }\n else if (arch == 'arm64') {\n extensionFile = 'powersync_aarch64.dll';\n }\n else {\n throw new Error('Windows platform only supports arm64, ia32 and x64 architecture.');\n }\n }\n else if (platform == 'linux') {\n if (arch == 'x64') {\n extensionFile = 'libpowersync_x64.so';\n }\n else if (arch == 'arm64') {\n // TODO detect armv7 as an option\n extensionFile = 'libpowersync_aarch64.so';\n }\n else if (arch == 'riscv64') {\n extensionFile = 'libpowersync_riscv64gc.so';\n }\n else {\n throw new Error('Linux platform only supports x64, arm64 and riscv64 architectures.');\n }\n }\n else if (platform == 'darwin') {\n if (arch == 'x64') {\n extensionFile = 'libpowersync_x64.dylib';\n }\n else if (arch == 'arm64') {\n extensionFile = 'libpowersync_aarch64.dylib';\n }\n else {\n throw new Error('macOS platform only supports x64 and arm64 architectures.');\n }\n }\n else {\n throw new Error(`Unknown platform: ${platform}, PowerSync for Node.js currently supports Windows, Linux and macOS.`);\n }\n return extensionFile;\n}\nexport function startPowerSyncWorker(options) {\n const resolvedOptions = {\n extensionPath() {\n const isCommonJsModule = isBundledToCommonJs;\n const extensionFilename = getPowerSyncExtensionFilename();\n let resolved;\n if (isCommonJsModule) {\n resolved = path.resolve(__dirname, '../lib/', extensionFilename);\n }\n else {\n resolved = url.fileURLToPath(new URL(`../${extensionFilename}`, import.meta.url));\n }\n return resolved;\n },\n async loadBetterSqlite3() {\n const module = await dynamicImport('better-sqlite3');\n return module.default;\n },\n ...options\n };\n Comlink.expose(new DatabaseOpenHelper(resolvedOptions), parentPort);\n}\nclass DatabaseOpenHelper {\n options;\n constructor(options) {\n this.options = options;\n }\n async open(options) {\n let database;\n const implementation = options.implementation;\n switch (implementation.type) {\n case 'better-sqlite3':\n database = await openBetterSqliteDatabase(this.options, options);\n break;\n case 'node:sqlite':\n database = await openNodeDatabase(this.options, options);\n break;\n default:\n throw new Error(`Unknown database implementation: ${options.implementation}.`);\n }\n return Comlink.proxy(database);\n }\n}\n"],"names":["threadId","openDatabase","path","Comlink","parentPort","openBetterSqliteDatabase","openNodeDatabase"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker.cjs","sources":["../lib/utils/modules_commonjs.js","../lib/db/BetterSqliteWorker.js","../lib/db/NodeSqliteWorker.js","../lib/db/SqliteWorker.js"],"sourcesContent":["// NOTE! Do not import this file directly! We have a rollup plugin that rewrites imports to modules.js to this file when\n// bundling to CommonJS.\nexport const isBundledToCommonJs = true;\nexport async function dynamicImport(path) {\n return require(path);\n}\n//# sourceMappingURL=modules_commonjs.js.map","import { threadId } from 'node:worker_threads';\nclass BlockingAsyncDatabase {\n db;\n constructor(db) {\n this.db = db;\n db.function('node_thread_id', () => threadId);\n }\n async close() {\n this.db.close();\n }\n async execute(query, params) {\n const stmt = this.db.prepare(query);\n if (stmt.reader) {\n const rows = stmt.all(params);\n return {\n rowsAffected: 0,\n rows: {\n _array: rows,\n length: rows.length\n }\n };\n }\n else {\n const info = stmt.run(params);\n return {\n rowsAffected: info.changes,\n insertId: Number(info.lastInsertRowid)\n };\n }\n }\n async executeRaw(query, params) {\n const stmt = this.db.prepare(query);\n if (stmt.reader) {\n return stmt.raw().all(params);\n }\n else {\n stmt.raw().run(params);\n return [];\n }\n }\n async executeBatch(query, params) {\n params = params ?? [];\n let rowsAffected = 0;\n const stmt = this.db.prepare(query);\n for (const paramSet of params) {\n const info = stmt.run(paramSet);\n rowsAffected += info.changes;\n }\n return { rowsAffected };\n }\n}\nexport async function openDatabase(worker, options) {\n const BetterSQLite3Database = await worker.loadBetterSqlite3();\n const baseDB = new BetterSQLite3Database(options.path);\n baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');\n const asyncDb = new BlockingAsyncDatabase(baseDB);\n return asyncDb;\n}\n//# sourceMappingURL=BetterSqliteWorker.js.map","import { threadId } from 'node:worker_threads';\nimport { dynamicImport } from '../utils/modules.js';\nclass BlockingNodeDatabase {\n db;\n constructor(db, write) {\n this.db = db;\n db.function('node_thread_id', () => threadId);\n }\n async close() {\n this.db.close();\n }\n async execute(query, params) {\n const stmt = this.db.prepare(query);\n const rows = stmt.all(...params);\n return {\n rowsAffected: 0,\n rows: {\n _array: rows,\n length: rows.length\n }\n };\n }\n async executeRaw(query, params) {\n const stmt = this.db.prepare(query);\n stmt.setReturnArrays(true); // Missing in @types/node, https://nodejs.org/api/sqlite.html#statementsetreturnarraysenabled\n return stmt.all(...params);\n }\n async executeBatch(query, params) {\n params = params ?? [];\n let rowsAffected = 0;\n const stmt = this.db.prepare(query);\n for (const paramSet of params) {\n const info = stmt.run(...paramSet);\n rowsAffected += info.changes;\n }\n return { rowsAffected };\n }\n}\nexport async function openDatabase(worker, options) {\n // NOTE: We want to import node:sqlite dynamically, to avoid bundlers unconditionally requiring node:sqlite in the\n // end, since that would make us incompatible with older Node.JS versions.\n const { DatabaseSync } = await dynamicImport('node:sqlite');\n const baseDB = new DatabaseSync(options.path, { allowExtension: true });\n baseDB.loadExtension(worker.extensionPath(), 'sqlite3_powersync_init');\n return new BlockingNodeDatabase(baseDB, options.isWriter);\n}\n//# sourceMappingURL=NodeSqliteWorker.js.map","import * as Comlink from 'comlink';\nimport OS from 'node:os';\nimport * as path from 'node:path';\nimport url from 'node:url';\nimport { parentPort } from 'node:worker_threads';\nimport { dynamicImport, isBundledToCommonJs } from '../utils/modules.js';\nimport { openDatabase as openBetterSqliteDatabase } from './BetterSqliteWorker.js';\nimport { openDatabase as openNodeDatabase } from './NodeSqliteWorker.js';\n/**\n * @returns The relevant PowerSync extension binary filename for the current platform and architecture\n */\nexport function getPowerSyncExtensionFilename() {\n const platform = OS.platform();\n const arch = OS.arch();\n let extensionFile;\n if (platform == 'win32') {\n if (arch == 'x64') {\n extensionFile = 'powersync_x64.dll';\n }\n else if (arch == 'ia32') {\n extensionFile = 'powersync_x86.dll';\n }\n else if (arch == 'arm64') {\n extensionFile = 'powersync_aarch64.dll';\n }\n else {\n throw new Error('Windows platform only supports arm64, ia32 and x64 architecture.');\n }\n }\n else if (platform == 'linux') {\n if (arch == 'x64') {\n extensionFile = 'libpowersync_x64.so';\n }\n else if (arch == 'arm64') {\n // TODO detect armv7 as an option\n extensionFile = 'libpowersync_aarch64.so';\n }\n else if (arch == 'riscv64') {\n extensionFile = 'libpowersync_riscv64gc.so';\n }\n else {\n throw new Error('Linux platform only supports x64, arm64 and riscv64 architectures.');\n }\n }\n else if (platform == 'darwin') {\n if (arch == 'x64') {\n extensionFile = 'libpowersync_x64.dylib';\n }\n else if (arch == 'arm64') {\n extensionFile = 'libpowersync_aarch64.dylib';\n }\n else {\n throw new Error('macOS platform only supports x64 and arm64 architectures.');\n }\n }\n else {\n throw new Error(`Unknown platform: ${platform}, PowerSync for Node.js currently supports Windows, Linux and macOS.`);\n }\n return extensionFile;\n}\nexport function startPowerSyncWorker(options) {\n const resolvedOptions = {\n extensionPath() {\n const isCommonJsModule = isBundledToCommonJs;\n const extensionFilename = getPowerSyncExtensionFilename();\n let resolved;\n if (isCommonJsModule) {\n resolved = path.resolve(__dirname, '../lib/', extensionFilename);\n }\n else {\n resolved = url.fileURLToPath(new URL(`../${extensionFilename}`, import.meta.url));\n }\n return resolved;\n },\n async loadBetterSqlite3() {\n const module = await dynamicImport('better-sqlite3');\n return module.default;\n },\n ...options\n };\n Comlink.expose(new DatabaseOpenHelper(resolvedOptions), parentPort);\n}\nclass DatabaseOpenHelper {\n options;\n constructor(options) {\n this.options = options;\n }\n async open(options) {\n let database;\n const implementation = options.implementation;\n switch (implementation.type) {\n case 'better-sqlite3':\n database = await openBetterSqliteDatabase(this.options, options);\n break;\n case 'node:sqlite':\n database = await openNodeDatabase(this.options, options);\n break;\n default:\n throw new Error(`Unknown database implementation: ${options.implementation}.`);\n }\n return Comlink.proxy(database);\n }\n}\n//# sourceMappingURL=SqliteWorker.js.map"],"names":["threadId","openDatabase","path","Comlink","parentPort","openBetterSqliteDatabase","openNodeDatabase"],"mappings":"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"}
|
package/lib/db/AsyncDatabase.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncDatabase.js","sourceRoot":"","sources":["../../src/db/AsyncDatabase.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BetterSqliteWorker.js","sourceRoot":"","sources":["../../src/db/BetterSqliteWorker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,qBAAqB;IACR,EAAE,CAAW;IAE9B,YAAY,EAAY;QACtB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,MAAa;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO;gBACL,YAAY,EAAE,CAAC;gBACf,IAAI,EAAE;oBACJ,MAAM,EAAE,IAAI;oBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9B,OAAO;gBACL,YAAY,EAAE,IAAI,CAAC,OAAO;gBAC1B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC;aACvC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,MAAa;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAY,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,MAAe;QAC/C,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAEtB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC;QAC/B,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAA8B,EAAE,OAAiC;IAClG,MAAM,qBAAqB,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAEvE,MAAM,OAAO,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/lib/db/DefaultWorker.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultWorker.js","sourceRoot":"","sources":["../../src/db/DefaultWorker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,oBAAoB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeSqliteWorker.js","sourceRoot":"","sources":["../../src/db/NodeSqliteWorker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIpD,MAAM,oBAAoB;IACP,EAAE,CAAe;IAElC,YAAY,EAAgB,EAAE,KAAc;QAC1C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QAEb,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,MAAa;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QACjC,OAAO;YACL,YAAY,EAAE,CAAC;YACf,IAAI,EAAE;gBACJ,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,MAAa;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,6FAA6F;QAClI,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAmB,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,MAAe;QAC/C,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAEtB,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;YACnC,YAAY,IAAI,IAAI,CAAC,OAAiB,CAAC;QACzC,CAAC;QAED,OAAO,EAAE,YAAY,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAA8B,EAAE,OAAiC;IAClG,kHAAkH;IAClH,0EAA0E;IAC1E,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,wBAAwB,CAAC,CAAC;IAEvE,OAAO,IAAI,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +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"}
|
|
@@ -9,13 +9,14 @@ export declare class RemoteConnection implements LockContext {
|
|
|
9
9
|
isBusy: boolean;
|
|
10
10
|
private readonly worker;
|
|
11
11
|
private readonly comlink;
|
|
12
|
-
readonly database
|
|
12
|
+
private readonly database;
|
|
13
|
+
private readonly notifyWorkerClosed;
|
|
13
14
|
constructor(worker: Worker, comlink: Remote<AsyncDatabaseOpener>, database: Remote<AsyncDatabase>);
|
|
14
15
|
/**
|
|
15
16
|
* Runs the inner function, but appends the stack trace where this function was called. This is useful for workers
|
|
16
17
|
* because stack traces from worker errors are otherwise unrelated to the application issue that has caused them.
|
|
17
18
|
*/
|
|
18
|
-
private
|
|
19
|
+
private withRemote;
|
|
19
20
|
executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
|
|
20
21
|
execute(query: string, params?: any[] | undefined): Promise<QueryResult>;
|
|
21
22
|
executeRaw(query: string, params?: any[] | undefined): Promise<any[][]>;
|
|
@@ -7,42 +7,59 @@ export class RemoteConnection {
|
|
|
7
7
|
worker;
|
|
8
8
|
comlink;
|
|
9
9
|
database;
|
|
10
|
+
notifyWorkerClosed = new AbortController();
|
|
10
11
|
constructor(worker, comlink, database) {
|
|
11
12
|
this.worker = worker;
|
|
12
13
|
this.comlink = comlink;
|
|
13
14
|
this.database = database;
|
|
15
|
+
this.worker.once('exit', (_) => {
|
|
16
|
+
this.notifyWorkerClosed.abort();
|
|
17
|
+
});
|
|
14
18
|
}
|
|
15
19
|
/**
|
|
16
20
|
* Runs the inner function, but appends the stack trace where this function was called. This is useful for workers
|
|
17
21
|
* because stack traces from worker errors are otherwise unrelated to the application issue that has caused them.
|
|
18
22
|
*/
|
|
19
|
-
|
|
23
|
+
withRemote(inner) {
|
|
20
24
|
const trace = {};
|
|
21
25
|
Error.captureStackTrace(trace);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
if (e instanceof Error && e.stack) {
|
|
27
|
-
e.stack += trace.stack;
|
|
26
|
+
const controller = this.notifyWorkerClosed;
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
if (controller.signal.aborted) {
|
|
29
|
+
reject(new Error('Called operation on closed remote'));
|
|
28
30
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
function handleAbort() {
|
|
32
|
+
reject(new Error('Remote peer closed with request in flight'));
|
|
33
|
+
}
|
|
34
|
+
function completePromise(action) {
|
|
35
|
+
controller.signal.removeEventListener('abort', handleAbort);
|
|
36
|
+
action();
|
|
37
|
+
}
|
|
38
|
+
controller.signal.addEventListener('abort', handleAbort);
|
|
39
|
+
inner()
|
|
40
|
+
.then((data) => completePromise(() => resolve(data)))
|
|
41
|
+
.catch((e) => {
|
|
42
|
+
if (e instanceof Error && e.stack) {
|
|
43
|
+
e.stack += trace.stack;
|
|
44
|
+
}
|
|
45
|
+
return completePromise(() => reject(e));
|
|
46
|
+
});
|
|
47
|
+
});
|
|
31
48
|
}
|
|
32
49
|
executeBatch(query, params = []) {
|
|
33
|
-
return this.
|
|
50
|
+
return this.withRemote(async () => {
|
|
34
51
|
const result = await this.database.executeBatch(query, params ?? []);
|
|
35
52
|
return RemoteConnection.wrapQueryResult(result);
|
|
36
53
|
});
|
|
37
54
|
}
|
|
38
55
|
execute(query, params) {
|
|
39
|
-
return this.
|
|
56
|
+
return this.withRemote(async () => {
|
|
40
57
|
const result = await this.database.execute(query, params ?? []);
|
|
41
58
|
return RemoteConnection.wrapQueryResult(result);
|
|
42
59
|
});
|
|
43
60
|
}
|
|
44
61
|
executeRaw(query, params) {
|
|
45
|
-
return this.
|
|
62
|
+
return this.withRemote(async () => {
|
|
46
63
|
return await this.database.executeRaw(query, params ?? []);
|
|
47
64
|
});
|
|
48
65
|
}
|
|
@@ -85,3 +102,4 @@ export class RemoteConnection {
|
|
|
85
102
|
};
|
|
86
103
|
}
|
|
87
104
|
}
|
|
105
|
+
//# sourceMappingURL=RemoteConnection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteConnection.js","sourceRoot":"","sources":["../../src/db/RemoteConnection.ts"],"names":[],"mappings":"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"}
|