firebird-wasm 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +168 -0
- package/README.md +4 -1
- package/dist/.tsbuildinfo.build +1 -1
- package/dist/browser/engine-transport.d.ts +56 -5
- package/dist/browser/engine-transport.d.ts.map +1 -1
- package/dist/browser/engine-transport.js +271 -8
- package/dist/browser/engine-transport.js.map +1 -1
- package/dist/browser/firebird-browser.d.ts +228 -7
- package/dist/browser/firebird-browser.d.ts.map +1 -1
- package/dist/browser/firebird-browser.js +334 -26
- package/dist/browser/firebird-browser.js.map +1 -1
- package/dist/browser/index.d.ts +8 -2
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +19 -3
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/opfs-fs.d.ts +72 -0
- package/dist/browser/opfs-fs.d.ts.map +1 -0
- package/dist/browser/opfs-fs.js +249 -0
- package/dist/browser/opfs-fs.js.map +1 -0
- package/dist/browser/shared-transport.d.ts +8 -2
- package/dist/browser/shared-transport.d.ts.map +1 -1
- package/dist/browser/shared-transport.js +29 -2
- package/dist/browser/shared-transport.js.map +1 -1
- package/dist/browser/statement-types.d.ts +18 -0
- package/dist/browser/statement-types.d.ts.map +1 -0
- package/dist/browser/statement-types.js +39 -0
- package/dist/browser/statement-types.js.map +1 -0
- package/dist/browser/value-types.d.ts +173 -0
- package/dist/browser/value-types.d.ts.map +1 -0
- package/dist/browser/value-types.js +222 -0
- package/dist/browser/value-types.js.map +1 -0
- package/dist/browser/worker-entry.d.ts.map +1 -1
- package/dist/browser/worker-entry.js +38 -1
- package/dist/browser/worker-entry.js.map +1 -1
- package/dist/browser/worker-protocol.d.ts +1 -1
- package/dist/browser/worker-protocol.d.ts.map +1 -1
- package/dist/browser/worker-transport.d.ts +8 -2
- package/dist/browser/worker-transport.d.ts.map +1 -1
- package/dist/browser/worker-transport.js +26 -2
- package/dist/browser/worker-transport.js.map +1 -1
- package/dist/firebird.d.ts +58 -5
- package/dist/firebird.d.ts.map +1 -1
- package/dist/firebird.js +161 -52
- package/dist/firebird.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/sql-tag.d.ts +184 -0
- package/dist/sql-tag.d.ts.map +1 -0
- package/dist/sql-tag.js +287 -0
- package/dist/sql-tag.js.map +1 -0
- package/dist/statement-types.d.ts +23 -0
- package/dist/statement-types.d.ts.map +1 -0
- package/dist/statement-types.js +44 -0
- package/dist/statement-types.js.map +1 -0
- package/dist/types.d.ts +62 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wasm/firebird-embedded.js +1 -1
- package/dist/wasm/firebird-embedded.wasm +0 -0
- package/dist/wasm-loader.d.ts +38 -2
- package/dist/wasm-loader.d.ts.map +1 -1
- package/dist/wasm-loader.js.map +1 -1
- package/package.json +3 -2
|
@@ -29,11 +29,38 @@ const engine_transport_1 = require("./engine-transport");
|
|
|
29
29
|
const worker_transport_1 = require("./worker-transport");
|
|
30
30
|
const sql_script_1 = require("./sql-script");
|
|
31
31
|
const isolation_1 = require("./isolation");
|
|
32
|
+
const value_types_1 = require("./value-types");
|
|
32
33
|
const db_lock_1 = require("./db-lock");
|
|
33
34
|
const shared_transport_1 = require("./shared-transport");
|
|
35
|
+
const sql_tag_1 = require("../sql-tag");
|
|
34
36
|
// ---------------------------------------------------------------------------
|
|
35
37
|
// Shared helpers
|
|
36
38
|
// ---------------------------------------------------------------------------
|
|
39
|
+
/** Prefix marking a database that is never stored. Matches PGlite's. */
|
|
40
|
+
const MEMORY_PREFIX = 'memory://';
|
|
41
|
+
/** Prefix marking a database whose pages live in OPFS rather than IndexedDB. */
|
|
42
|
+
const OPFS_PREFIX = 'opfs://';
|
|
43
|
+
/**
|
|
44
|
+
* Distinguishes ephemeral databases opened in one page.
|
|
45
|
+
*
|
|
46
|
+
* A counter rather than randomness: every instance in a tab shares one WASM
|
|
47
|
+
* module and therefore one filesystem, so all this has to do is not repeat.
|
|
48
|
+
*/
|
|
49
|
+
let ephemeralCounter = 0;
|
|
50
|
+
/**
|
|
51
|
+
* A filesystem name for `memory://` or `memory://label`.
|
|
52
|
+
*
|
|
53
|
+
* The label is kept for readability when looking at the engine's filesystem,
|
|
54
|
+
* and made unique regardless: two `memory://scratch` databases are two
|
|
55
|
+
* databases, not one shared by two owners. Nothing addresses this path from
|
|
56
|
+
* outside, so uniqueness costs nothing and a collision would silently join two
|
|
57
|
+
* callers who each believe they have their own.
|
|
58
|
+
*/
|
|
59
|
+
function ephemeralFileName(dbName) {
|
|
60
|
+
const label = dbName.slice(MEMORY_PREFIX.length).replace(/[^A-Za-z0-9_-]/g, '') || 'memory';
|
|
61
|
+
ephemeralCounter += 1;
|
|
62
|
+
return `${label}-${ephemeralCounter}`;
|
|
63
|
+
}
|
|
37
64
|
// ---------------------------------------------------------------------------
|
|
38
65
|
// Implementation
|
|
39
66
|
// ---------------------------------------------------------------------------
|
|
@@ -50,6 +77,8 @@ class FirebirdBrowser {
|
|
|
50
77
|
* @param options Optional configuration.
|
|
51
78
|
*/
|
|
52
79
|
constructor(dbName, options = {}) {
|
|
80
|
+
/** Path the engine opens. Set by the OPFS mount, which chooses it. */
|
|
81
|
+
this.opfsPath = null;
|
|
53
82
|
this.dbHandle = 0;
|
|
54
83
|
this.closed = false;
|
|
55
84
|
this.initPromise = null;
|
|
@@ -61,6 +90,8 @@ class FirebirdBrowser {
|
|
|
61
90
|
this.lifecycleAttached = false;
|
|
62
91
|
/** Held for the connection's lifetime; released by close(). */
|
|
63
92
|
this.lock = null;
|
|
93
|
+
/** Live queries to tear down with the connection. */
|
|
94
|
+
this.liveQueries = new Set();
|
|
64
95
|
/** Set only in shared mode; owns the election and the channel. */
|
|
65
96
|
this.shared = null;
|
|
66
97
|
this.onVisibilityChange = () => {
|
|
@@ -74,9 +105,24 @@ class FirebirdBrowser {
|
|
|
74
105
|
void this.persistInBackground();
|
|
75
106
|
};
|
|
76
107
|
this.dbName = dbName;
|
|
108
|
+
this.ephemeral = dbName.startsWith(MEMORY_PREFIX);
|
|
109
|
+
this.opfs = dbName.startsWith(OPFS_PREFIX);
|
|
110
|
+
this.fileName = this.ephemeral
|
|
111
|
+
? ephemeralFileName(dbName)
|
|
112
|
+
: this.opfs
|
|
113
|
+
? dbName.slice(OPFS_PREFIX.length)
|
|
114
|
+
: dbName;
|
|
77
115
|
this.options = options;
|
|
78
116
|
this.vfs = new indexeddb_vfs_1.IndexedDBVFS(options.vfs);
|
|
79
|
-
this
|
|
117
|
+
// An ephemeral database is private to this instance and never stored, so
|
|
118
|
+
// there is nothing for another tab to overwrite and nothing to lock
|
|
119
|
+
// against. Taking the lock anyway would make two tabs queue for a database
|
|
120
|
+
// neither of them shares.
|
|
121
|
+
// OPFS holds the file exclusively itself — a second sync access handle on
|
|
122
|
+
// the same file is refused by the platform — so the Web Lock would be a
|
|
123
|
+
// second, weaker copy of a guarantee already made.
|
|
124
|
+
this.multiTab =
|
|
125
|
+
this.ephemeral || this.opfs ? 'allow-unsafe' : options.multiTab ?? 'exclusive';
|
|
80
126
|
this.lockTimeoutMs = options.lockTimeoutMs ?? 5000;
|
|
81
127
|
this.autoPersist = options.autoPersist ?? true;
|
|
82
128
|
this.autoPersistDebounceMs = options.autoPersistDebounceMs ?? 500;
|
|
@@ -128,7 +174,17 @@ class FirebirdBrowser {
|
|
|
128
174
|
}
|
|
129
175
|
/** Path of the database inside Emscripten's filesystem. */
|
|
130
176
|
get dbPath() {
|
|
131
|
-
return `/data/${this.
|
|
177
|
+
return this.opfsPath ?? `/data/${this.fileName}.fdb`;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Run any configured serializers over outgoing parameters.
|
|
181
|
+
*
|
|
182
|
+
* Here rather than in the encoder because the encoder may be on the far side
|
|
183
|
+
* of a Worker, where the serializer functions cannot follow — see
|
|
184
|
+
* {@link applySerializers}.
|
|
185
|
+
*/
|
|
186
|
+
serialize(params) {
|
|
187
|
+
return (0, value_types_1.applySerializers)(params, this.options.types?.serializers);
|
|
132
188
|
}
|
|
133
189
|
// ── Public API (mirrors FirebirdLite) ─────────────────────────────────
|
|
134
190
|
/**
|
|
@@ -149,14 +205,15 @@ class FirebirdBrowser {
|
|
|
149
205
|
*/
|
|
150
206
|
async exec(sql, params = []) {
|
|
151
207
|
await this.ensureReady();
|
|
152
|
-
const
|
|
153
|
-
|
|
208
|
+
const script = (0, sql_tag_1.toStatement)(sql, params);
|
|
209
|
+
const statements = (0, sql_script_1.splitStatements)(script.sql);
|
|
210
|
+
if (script.params.length > 0 && statements.length > 1) {
|
|
154
211
|
throw new Error(`Parameters cannot be used with a multi-statement script ` +
|
|
155
212
|
`(${statements.length} statements found); run the statements separately`);
|
|
156
213
|
}
|
|
157
214
|
const results = [];
|
|
158
215
|
for (const statement of statements) {
|
|
159
|
-
const affectedRows = await this.engine.execute(this.dbHandle, 0, statement.sql, params);
|
|
216
|
+
const affectedRows = await this.engine.execute(this.dbHandle, 0, statement.sql, this.serialize(script.params));
|
|
160
217
|
results.push({ affectedRows });
|
|
161
218
|
}
|
|
162
219
|
if (results.length > 0) {
|
|
@@ -164,29 +221,25 @@ class FirebirdBrowser {
|
|
|
164
221
|
}
|
|
165
222
|
return results;
|
|
166
223
|
}
|
|
167
|
-
|
|
168
|
-
* Execute a SQL query and return the result rows.
|
|
169
|
-
*
|
|
170
|
-
* Parameters are bound with `?` placeholders, as in the Node.js backend:
|
|
171
|
-
*
|
|
172
|
-
* ```ts
|
|
173
|
-
* await db.query('SELECT * FROM items WHERE id = ?', [1]);
|
|
174
|
-
* ```
|
|
175
|
-
*/
|
|
176
|
-
async query(sql, params = [], options = {}) {
|
|
224
|
+
async query(sql, paramsOrOptions = [], maybeOptions = {}) {
|
|
177
225
|
await this.ensureReady();
|
|
226
|
+
const { statement, options } = (0, sql_tag_1.resolveQueryCall)(sql, paramsOrOptions, maybeOptions);
|
|
178
227
|
// Without options the engine's own auto-commit transaction is used, which
|
|
179
228
|
// is one fewer round trip to the Worker. With them, the statement has to
|
|
180
229
|
// run inside a transaction that carries them — matching the Node backend,
|
|
181
230
|
// which starts one for every query.
|
|
231
|
+
const rowMode = options.rowMode ?? 'object';
|
|
232
|
+
// `types.binary` asks for Uint8Array values; the side channel is how they
|
|
233
|
+
// travel. Same result for the caller, without the base64 round trip.
|
|
234
|
+
const binaryBlobs = this.options.types?.binary === true;
|
|
182
235
|
if (!(0, isolation_1.hasTransactionOptions)(options)) {
|
|
183
|
-
return this.engine.query(this.dbHandle, 0, sql, params);
|
|
236
|
+
return (0, value_types_1.applyTypes)(await this.engine.query(this.dbHandle, 0, statement.sql, this.serialize(statement.params), rowMode, binaryBlobs), this.options.types, rowMode);
|
|
184
237
|
}
|
|
185
238
|
const txHandle = await this.engine.startTransaction(this.dbHandle, options);
|
|
186
239
|
try {
|
|
187
|
-
const result = await this.engine.query(this.dbHandle, txHandle, sql, params);
|
|
240
|
+
const result = await this.engine.query(this.dbHandle, txHandle, statement.sql, this.serialize(statement.params), rowMode, binaryBlobs);
|
|
188
241
|
await this.engine.commit(txHandle);
|
|
189
|
-
return result;
|
|
242
|
+
return (0, value_types_1.applyTypes)(result, this.options.types, rowMode);
|
|
190
243
|
}
|
|
191
244
|
catch (err) {
|
|
192
245
|
// A failed commit finishes the transaction itself, so only a failure
|
|
@@ -195,13 +248,196 @@ class FirebirdBrowser {
|
|
|
195
248
|
throw err;
|
|
196
249
|
}
|
|
197
250
|
}
|
|
251
|
+
/**
|
|
252
|
+
* Re-run a query whenever named events fire.
|
|
253
|
+
*
|
|
254
|
+
* ```ts
|
|
255
|
+
* // A trigger does the posting:
|
|
256
|
+
* // CREATE TRIGGER items_ai FOR items AFTER INSERT
|
|
257
|
+
* // AS BEGIN POST_EVENT 'items_changed'; END
|
|
258
|
+
*
|
|
259
|
+
* const live = await db.live(
|
|
260
|
+
* 'SELECT id, name FROM items ORDER BY id',
|
|
261
|
+
* { events: ['items_changed'] },
|
|
262
|
+
* (rows) => render(rows),
|
|
263
|
+
* );
|
|
264
|
+
* // …later
|
|
265
|
+
* await live.unsubscribe();
|
|
266
|
+
* ```
|
|
267
|
+
*
|
|
268
|
+
* `onChange` is called once immediately with the current rows, so it is the
|
|
269
|
+
* only place results need handling — there is no separate "initial value" to
|
|
270
|
+
* deal with differently.
|
|
271
|
+
*
|
|
272
|
+
* Firebird delivers events **after the posting transaction commits**, so a
|
|
273
|
+
* refresh only ever sees data that survived. That is worth more than
|
|
274
|
+
* immediacy: a live query that showed uncommitted rows would show rows that
|
|
275
|
+
* can vanish.
|
|
276
|
+
*
|
|
277
|
+
* The event names are the caller's to supply. Nothing in Firebird connects a
|
|
278
|
+
* posted event to the tables a statement reads, so inferring them would be
|
|
279
|
+
* guesswork dressed as convenience.
|
|
280
|
+
*/
|
|
281
|
+
async listen(names, onEvent, options = {}) {
|
|
282
|
+
await this.ensureReady();
|
|
283
|
+
const watched = typeof names === 'string' ? [names] : names;
|
|
284
|
+
if (watched.length === 0) {
|
|
285
|
+
throw new RangeError('listen() needs at least one event name');
|
|
286
|
+
}
|
|
287
|
+
const pollIntervalMs = options.pollIntervalMs ?? 250;
|
|
288
|
+
const onError = options.onError ??
|
|
289
|
+
((error) => console.error('[firebird-wasm] event listener failed', error));
|
|
290
|
+
const handle = await this.engine.eventsSubscribe(this.dbHandle, watched);
|
|
291
|
+
let stopped = false;
|
|
292
|
+
let timer = null;
|
|
293
|
+
// One tick at a time: a handler slower than the interval would otherwise
|
|
294
|
+
// pile up, and a later poll could re-arm before an earlier handler had
|
|
295
|
+
// finished with what it delivered.
|
|
296
|
+
let running = false;
|
|
297
|
+
const tick = async () => {
|
|
298
|
+
if (stopped || running)
|
|
299
|
+
return;
|
|
300
|
+
running = true;
|
|
301
|
+
try {
|
|
302
|
+
const counts = await this.engine.eventsPoll(handle);
|
|
303
|
+
// Polling re-arms whether or not anything fired, so the empty case
|
|
304
|
+
// still has to reach the engine — it is not a wasted call.
|
|
305
|
+
const fired = Object.fromEntries(Object.entries(counts).filter(([, count]) => count > 0));
|
|
306
|
+
if (Object.keys(fired).length > 0 && !stopped)
|
|
307
|
+
onEvent(fired);
|
|
308
|
+
}
|
|
309
|
+
catch (err) {
|
|
310
|
+
if (!stopped)
|
|
311
|
+
onError(err instanceof Error ? err : new Error(String(err)));
|
|
312
|
+
}
|
|
313
|
+
finally {
|
|
314
|
+
running = false;
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
const subscription = {
|
|
318
|
+
unsubscribe: async () => {
|
|
319
|
+
if (stopped)
|
|
320
|
+
return;
|
|
321
|
+
stopped = true;
|
|
322
|
+
if (timer !== null)
|
|
323
|
+
clearInterval(timer);
|
|
324
|
+
this.liveQueries.delete(subscription);
|
|
325
|
+
// Best effort: the engine may already be gone if the database was
|
|
326
|
+
// closed first, and a subscription on a closed database is not
|
|
327
|
+
// something a caller can act on.
|
|
328
|
+
await this.engine.eventsCancel(handle).catch(() => undefined);
|
|
329
|
+
},
|
|
330
|
+
};
|
|
331
|
+
timer = setInterval(() => void tick(), pollIntervalMs);
|
|
332
|
+
this.liveQueries.add(subscription);
|
|
333
|
+
return subscription;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Post an event, without writing a trigger to do it.
|
|
337
|
+
*
|
|
338
|
+
* ```ts
|
|
339
|
+
* await db.notify('items_changed');
|
|
340
|
+
* ```
|
|
341
|
+
*
|
|
342
|
+
* The event is delivered **after the transaction posting it commits**, which
|
|
343
|
+
* here is the statement's own auto-commit — so listeners hear about it only
|
|
344
|
+
* once it has actually happened.
|
|
345
|
+
*
|
|
346
|
+
* A trigger remains the better place for anything tied to data changing:
|
|
347
|
+
* `POST_EVENT` in an `AFTER INSERT` fires however the row arrived, including
|
|
348
|
+
* from another connection, while this fires only where it is called.
|
|
349
|
+
*/
|
|
350
|
+
async notify(name) {
|
|
351
|
+
// The name is bound, not interpolated: EXECUTE BLOCK's body is SQL text
|
|
352
|
+
// like any other, and a name reaching it unchecked would be an injection
|
|
353
|
+
// with a trigger's privileges.
|
|
354
|
+
await this.query('EXECUTE BLOCK (event_name VARCHAR(31) = ?) AS BEGIN POST_EVENT :event_name; END', [name]);
|
|
355
|
+
}
|
|
356
|
+
async live(sql, options, onChange) {
|
|
357
|
+
await this.ensureReady();
|
|
358
|
+
if (options.events.length === 0) {
|
|
359
|
+
throw new RangeError('live() needs at least one event name to watch; without one it would ' +
|
|
360
|
+
'never refresh, which a plain query() already does better');
|
|
361
|
+
}
|
|
362
|
+
const statement = (0, sql_tag_1.toStatement)(sql, options.params ?? []);
|
|
363
|
+
const onError = options.onError ??
|
|
364
|
+
((error) => console.error('[firebird-wasm] live query failed', error));
|
|
365
|
+
let rows = [];
|
|
366
|
+
let stopped = false;
|
|
367
|
+
// One refresh at a time: a statement slower than the interval would
|
|
368
|
+
// otherwise pile up, and the last to finish would win rather than the
|
|
369
|
+
// latest to start.
|
|
370
|
+
let running = false;
|
|
371
|
+
const run = async () => {
|
|
372
|
+
const result = await this.query(statement.sql, statement.params);
|
|
373
|
+
rows = result.rows;
|
|
374
|
+
onChange(rows, result);
|
|
375
|
+
};
|
|
376
|
+
// The first results before returning, so a caller that awaits live() has
|
|
377
|
+
// rendered once by the time it continues.
|
|
378
|
+
await run();
|
|
379
|
+
// Built on listen() rather than beside it: the subscription, the polling,
|
|
380
|
+
// the one-at-a-time rule and the teardown are the same problem, and a
|
|
381
|
+
// second copy would be a second thing to keep correct.
|
|
382
|
+
const subscription = await this.listen(options.events, () => {
|
|
383
|
+
if (running || stopped)
|
|
384
|
+
return;
|
|
385
|
+
running = true;
|
|
386
|
+
void run()
|
|
387
|
+
.catch((err) => {
|
|
388
|
+
if (!stopped)
|
|
389
|
+
onError(err instanceof Error ? err : new Error(String(err)));
|
|
390
|
+
})
|
|
391
|
+
.finally(() => {
|
|
392
|
+
running = false;
|
|
393
|
+
});
|
|
394
|
+
}, { pollIntervalMs: options.pollIntervalMs, onError });
|
|
395
|
+
const live = {
|
|
396
|
+
get rows() {
|
|
397
|
+
return rows;
|
|
398
|
+
},
|
|
399
|
+
refresh: async () => {
|
|
400
|
+
if (!stopped)
|
|
401
|
+
await run();
|
|
402
|
+
},
|
|
403
|
+
unsubscribe: async () => {
|
|
404
|
+
if (stopped)
|
|
405
|
+
return;
|
|
406
|
+
stopped = true;
|
|
407
|
+
await subscription.unsubscribe();
|
|
408
|
+
},
|
|
409
|
+
};
|
|
410
|
+
return live;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Describe a statement's shape without running it.
|
|
414
|
+
*
|
|
415
|
+
* ```ts
|
|
416
|
+
* const shape = await db.describeQuery('SELECT id, name FROM items WHERE id = ?');
|
|
417
|
+
* // shape.params → [{ type: 496, typeName: 'INTEGER', … }]
|
|
418
|
+
* // shape.fields → [{ name: 'ID', … }, { name: 'NAME', … }]
|
|
419
|
+
* // shape.statementType → 'SELECT'
|
|
420
|
+
* ```
|
|
421
|
+
*
|
|
422
|
+
* The statement is prepared and dropped, so nothing happens: describing an
|
|
423
|
+
* `INSERT` inserts nothing. Preparing is not free — the engine parses and
|
|
424
|
+
* plans — but it is the only way to learn a shape, and the alternative,
|
|
425
|
+
* running the statement to see what comes back, is not one.
|
|
426
|
+
*
|
|
427
|
+
* A `` sql`…` `` fragment is accepted and its values ignored; only the text
|
|
428
|
+
* decides the shape, and a fragment is often what a caller has to hand.
|
|
429
|
+
*/
|
|
430
|
+
async describeQuery(sql) {
|
|
431
|
+
await this.ensureReady();
|
|
432
|
+
return this.engine.describe(this.dbHandle, 0, (0, sql_tag_1.toStatement)(sql).sql);
|
|
433
|
+
}
|
|
198
434
|
/**
|
|
199
435
|
* Run a function inside an explicit transaction.
|
|
200
436
|
*/
|
|
201
437
|
async transaction(fn, options = {}) {
|
|
202
438
|
await this.ensureReady();
|
|
203
439
|
const txHandle = await this.engine.startTransaction(this.dbHandle, options);
|
|
204
|
-
const tx = new FirebirdBrowserTransaction(this.engine, this.dbHandle, txHandle);
|
|
440
|
+
const tx = new FirebirdBrowserTransaction(this.engine, this.dbHandle, txHandle, this.options.types);
|
|
205
441
|
let result;
|
|
206
442
|
try {
|
|
207
443
|
result = await fn(tx);
|
|
@@ -228,6 +464,28 @@ class FirebirdBrowser {
|
|
|
228
464
|
* Persist the in-memory database pages to IndexedDB.
|
|
229
465
|
* Call this periodically or before the page unloads to avoid data loss.
|
|
230
466
|
*/
|
|
467
|
+
/**
|
|
468
|
+
* The database as bytes, ready to be stored, sent, or handed to
|
|
469
|
+
* {@link FirebirdBrowserOptions.loadDataDir}.
|
|
470
|
+
*
|
|
471
|
+
* ```ts
|
|
472
|
+
* const bytes = await db.dumpDataDir();
|
|
473
|
+
* const url = URL.createObjectURL(new Blob([bytes]));
|
|
474
|
+
* ```
|
|
475
|
+
*
|
|
476
|
+
* Read from the **live** database rather than from IndexedDB, which matters
|
|
477
|
+
* twice over: writes that have not been persisted yet are included, and an
|
|
478
|
+
* ephemeral `memory://` database has no stored copy to read at all. It is
|
|
479
|
+
* the same image `persist()` writes, taken the same way.
|
|
480
|
+
*
|
|
481
|
+
* A `Uint8Array` rather than a `Blob` — a `Blob` is one constructor away and
|
|
482
|
+
* exists only in a browser, while this class also runs in Node against a
|
|
483
|
+
* direct transport.
|
|
484
|
+
*/
|
|
485
|
+
async dumpDataDir() {
|
|
486
|
+
await this.ensureReady();
|
|
487
|
+
return this.engine.readFile(this.dbPath);
|
|
488
|
+
}
|
|
231
489
|
async persist() {
|
|
232
490
|
if (!this.dbHandle || !this.mayPersist)
|
|
233
491
|
return;
|
|
@@ -277,6 +535,11 @@ class FirebirdBrowser {
|
|
|
277
535
|
// Already reported through onPersistError.
|
|
278
536
|
}
|
|
279
537
|
}
|
|
538
|
+
// Before the handle goes: each one holds a subscription on it, and a
|
|
539
|
+
// timer that would otherwise keep firing at a closed database.
|
|
540
|
+
for (const live of [...this.liveQueries]) {
|
|
541
|
+
await live.unsubscribe().catch(() => undefined);
|
|
542
|
+
}
|
|
280
543
|
this.closed = true;
|
|
281
544
|
if (this.dbHandle) {
|
|
282
545
|
// Persist before closing.
|
|
@@ -285,7 +548,19 @@ class FirebirdBrowser {
|
|
|
285
548
|
this.dbHandle = 0;
|
|
286
549
|
}
|
|
287
550
|
try {
|
|
288
|
-
|
|
551
|
+
if (this.opfs) {
|
|
552
|
+
// The mount owns the sync access handle and releases it with the
|
|
553
|
+
// module; nothing here writes, because nothing was ever buffered.
|
|
554
|
+
}
|
|
555
|
+
else if (this.ephemeral) {
|
|
556
|
+
// Reclaim it: the engine's filesystem outlives this instance — the
|
|
557
|
+
// module is cached for the whole page — so a long-lived tab that
|
|
558
|
+
// opened many scratch databases would hold every one of them.
|
|
559
|
+
await this.engine.unlink(this.dbPath).catch(() => undefined);
|
|
560
|
+
}
|
|
561
|
+
else {
|
|
562
|
+
await this.vfs.close();
|
|
563
|
+
}
|
|
289
564
|
await this.engine.dispose();
|
|
290
565
|
}
|
|
291
566
|
finally {
|
|
@@ -310,6 +585,14 @@ class FirebirdBrowser {
|
|
|
310
585
|
* that multi-tab safety exists to prevent.
|
|
311
586
|
*/
|
|
312
587
|
get mayPersist() {
|
|
588
|
+
// Ephemeral first: there is nowhere to persist to, so persist() is a
|
|
589
|
+
// no-op and markDirty() schedules nothing. A caller who writes code that
|
|
590
|
+
// works for both kinds should not have to branch.
|
|
591
|
+
//
|
|
592
|
+
// OPFS for the opposite reason: the engine's writes already went to the
|
|
593
|
+
// file, so there is nothing left to copy and a persist would be pure cost.
|
|
594
|
+
if (this.ephemeral || this.opfs)
|
|
595
|
+
return false;
|
|
313
596
|
return this.shared === null || this.shared.isLeader;
|
|
314
597
|
}
|
|
315
598
|
/** Note that the database has changed and schedule a persist. */
|
|
@@ -397,7 +680,17 @@ class FirebirdBrowser {
|
|
|
397
680
|
// 'shared' deliberately takes no lock here: the transport's election holds
|
|
398
681
|
// it, and a second request from the same tab would queue behind itself.
|
|
399
682
|
await this.engine.init();
|
|
400
|
-
|
|
683
|
+
if (this.opfs) {
|
|
684
|
+
// The mount both opens the file and decides where it lives, so the path
|
|
685
|
+
// comes back rather than being assumed on this side.
|
|
686
|
+
this.opfsPath = await this.engine.mountOpfs(this.fileName);
|
|
687
|
+
}
|
|
688
|
+
else if (!this.ephemeral) {
|
|
689
|
+
// An ephemeral database never touches IndexedDB, so the store is not
|
|
690
|
+
// opened at all — opening it would create an empty one on disk for a
|
|
691
|
+
// database whose whole point is leaving nothing behind.
|
|
692
|
+
await this.vfs.open(this.dbName);
|
|
693
|
+
}
|
|
401
694
|
await this.openDatabase();
|
|
402
695
|
this.attachLifecycleListeners();
|
|
403
696
|
}
|
|
@@ -421,6 +714,18 @@ class FirebirdBrowser {
|
|
|
421
714
|
await this.engine.writeFile(this.dbPath, stored);
|
|
422
715
|
}
|
|
423
716
|
}
|
|
717
|
+
// After the stored image, never before it: `loadDataDir` is what to start
|
|
718
|
+
// from when there is nothing, not what to overwrite with.
|
|
719
|
+
const seed = this.options.loadDataDir;
|
|
720
|
+
if (seed && !(await this.engine.exists(this.dbPath))) {
|
|
721
|
+
if (seed.byteLength === 0) {
|
|
722
|
+
throw new RangeError('loadDataDir is empty; pass the bytes from dumpDataDir() or omit it');
|
|
723
|
+
}
|
|
724
|
+
await this.engine.writeFile(this.dbPath, seed);
|
|
725
|
+
}
|
|
726
|
+
// Works unchanged for OPFS: that filesystem reports a file as existing
|
|
727
|
+
// only once it has bytes, so a database that has never been written is
|
|
728
|
+
// absent here rather than present and empty.
|
|
424
729
|
this.dbHandle = (await this.engine.exists(this.dbPath))
|
|
425
730
|
? await this.engine.attachDatabase(this.dbPath)
|
|
426
731
|
: await this.engine.createDatabase(this.dbPath);
|
|
@@ -457,10 +762,11 @@ exports.FirebirdBrowser = FirebirdBrowser;
|
|
|
457
762
|
* really does undo them.
|
|
458
763
|
*/
|
|
459
764
|
class FirebirdBrowserTransaction {
|
|
460
|
-
constructor(engine, dbHandle, txHandle) {
|
|
765
|
+
constructor(engine, dbHandle, txHandle, types) {
|
|
461
766
|
this.engine = engine;
|
|
462
767
|
this.dbHandle = dbHandle;
|
|
463
768
|
this.txHandle = txHandle;
|
|
769
|
+
this.types = types;
|
|
464
770
|
this.finished = false;
|
|
465
771
|
}
|
|
466
772
|
/** Whether this transaction has already been rolled back. */
|
|
@@ -492,13 +798,15 @@ class FirebirdBrowserTransaction {
|
|
|
492
798
|
*/
|
|
493
799
|
async exec(sql, params = []) {
|
|
494
800
|
this.assertUsable();
|
|
495
|
-
const
|
|
801
|
+
const statement = (0, sql_tag_1.toStatement)(sql, params);
|
|
802
|
+
const affectedRows = await this.engine.execute(this.dbHandle, this.txHandle, statement.sql, (0, value_types_1.applySerializers)(statement.params, this.types?.serializers));
|
|
496
803
|
return { affectedRows };
|
|
497
804
|
}
|
|
498
|
-
|
|
499
|
-
async query(sql, params = []) {
|
|
805
|
+
async query(sql, params = [], options = {}) {
|
|
500
806
|
this.assertUsable();
|
|
501
|
-
|
|
807
|
+
const statement = (0, sql_tag_1.toStatement)(sql, params);
|
|
808
|
+
const rowMode = options.rowMode ?? 'object';
|
|
809
|
+
return (0, value_types_1.applyTypes)(await this.engine.query(this.dbHandle, this.txHandle, statement.sql, (0, value_types_1.applySerializers)(statement.params, this.types?.serializers), rowMode, this.types?.binary === true), this.types, rowMode);
|
|
502
810
|
}
|
|
503
811
|
}
|
|
504
812
|
exports.FirebirdBrowserTransaction = FirebirdBrowserTransaction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebird-browser.js","sourceRoot":"","sources":["../../src/browser/firebird-browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firebird-browser.js","sourceRoot":"","sources":["../../src/browser/firebird-browser.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/index.d.ts
CHANGED
|
@@ -9,10 +9,16 @@
|
|
|
9
9
|
* ```
|
|
10
10
|
*/
|
|
11
11
|
export { FirebirdBrowser, FirebirdBrowserTransaction } from './firebird-browser';
|
|
12
|
-
export type { FirebirdBrowserOptions, ExecResult } from './firebird-browser';
|
|
12
|
+
export type { FirebirdBrowserOptions, ExecResult, LiveQuery, LiveQueryOptions, EventSubscription, ListenOptions, } from './firebird-browser';
|
|
13
|
+
export { sql, SqlFragment, RawSql, isSqlFragment, toStatement } from '../sql-tag';
|
|
14
|
+
export type { SqlTag, Statement } from '../sql-tag';
|
|
13
15
|
export { encodeParams, encodeParamValue } from './params';
|
|
14
16
|
export { firebirdTypeName } from './field-types';
|
|
17
|
+
export { statementKind } from '../statement-types';
|
|
18
|
+
export { decodeDescription, attachBlobs, BLOB_SIDE_CHANNEL } from './engine-transport';
|
|
15
19
|
export { isolationCode, hasTransactionOptions } from './isolation';
|
|
20
|
+
export { applyTypes, applySerializers, hasTypeOptions } from './value-types';
|
|
21
|
+
export type { TypeOptions, Parser, Serializer } from './value-types';
|
|
16
22
|
export { acquireDatabaseLock, databaseLockName, DatabaseLockedError, } from './db-lock';
|
|
17
23
|
export type { DatabaseLock, DatabaseLockOptions } from './db-lock';
|
|
18
24
|
export { splitStatements } from './sql-script';
|
|
@@ -32,5 +38,5 @@ export { IndexedDBVFS } from './indexeddb-vfs';
|
|
|
32
38
|
export type { IndexedDBVFSOptions, VFSMetadata } from './indexeddb-vfs';
|
|
33
39
|
export { loadFirebirdWasm, allocString } from '../wasm-loader';
|
|
34
40
|
export type { FirebirdWasmModule, WasmLoadOptions, EmscriptenFS, FbHandle, } from '../wasm-loader';
|
|
35
|
-
export type { QueryResult, QueryParams, Row, FieldInfo, FirebirdTypeName, TransactionOptions, IsolationLevel, } from '../types';
|
|
41
|
+
export type { QueryResult, QueryParams, Row, FieldInfo, FirebirdTypeName, QueryOptions, QueryDescription, StatementKind, RowMode, ArrayRow, TransactionOptions, IsolationLevel, } from '../types';
|
|
36
42
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACjF,YAAY,EACV,sBAAsB,EACtB,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAClF,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvF,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7E,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAErE,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,eAAe,EACf,YAAY,EACZ,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EACV,QAAQ,EACR,aAAa,EACb,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC/D,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,QAAQ,GACT,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,WAAW,EACX,WAAW,EACX,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,OAAO,EACP,QAAQ,EACR,kBAAkB,EAClB,cAAc,GACf,MAAM,UAAU,CAAC"}
|