firebird-wasm 0.2.0 → 0.4.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.
Files changed (68) hide show
  1. package/CHANGELOG.md +199 -0
  2. package/README.md +4 -1
  3. package/dist/.tsbuildinfo.build +1 -1
  4. package/dist/browser/engine-transport.d.ts +63 -5
  5. package/dist/browser/engine-transport.d.ts.map +1 -1
  6. package/dist/browser/engine-transport.js +290 -8
  7. package/dist/browser/engine-transport.js.map +1 -1
  8. package/dist/browser/firebird-browser.d.ts +252 -7
  9. package/dist/browser/firebird-browser.d.ts.map +1 -1
  10. package/dist/browser/firebird-browser.js +373 -20
  11. package/dist/browser/firebird-browser.js.map +1 -1
  12. package/dist/browser/index.d.ts +8 -2
  13. package/dist/browser/index.d.ts.map +1 -1
  14. package/dist/browser/index.js +19 -3
  15. package/dist/browser/index.js.map +1 -1
  16. package/dist/browser/opfs-fs.d.ts +72 -0
  17. package/dist/browser/opfs-fs.d.ts.map +1 -0
  18. package/dist/browser/opfs-fs.js +249 -0
  19. package/dist/browser/opfs-fs.js.map +1 -0
  20. package/dist/browser/params.d.ts +30 -3
  21. package/dist/browser/params.d.ts.map +1 -1
  22. package/dist/browser/params.js +97 -22
  23. package/dist/browser/params.js.map +1 -1
  24. package/dist/browser/shared-transport.d.ts +9 -2
  25. package/dist/browser/shared-transport.d.ts.map +1 -1
  26. package/dist/browser/shared-transport.js +33 -2
  27. package/dist/browser/shared-transport.js.map +1 -1
  28. package/dist/browser/statement-types.d.ts +18 -0
  29. package/dist/browser/statement-types.d.ts.map +1 -0
  30. package/dist/browser/statement-types.js +39 -0
  31. package/dist/browser/statement-types.js.map +1 -0
  32. package/dist/browser/value-types.d.ts +173 -0
  33. package/dist/browser/value-types.d.ts.map +1 -0
  34. package/dist/browser/value-types.js +222 -0
  35. package/dist/browser/value-types.js.map +1 -0
  36. package/dist/browser/worker-entry.d.ts.map +1 -1
  37. package/dist/browser/worker-entry.js +38 -1
  38. package/dist/browser/worker-entry.js.map +1 -1
  39. package/dist/browser/worker-protocol.d.ts +1 -1
  40. package/dist/browser/worker-protocol.d.ts.map +1 -1
  41. package/dist/browser/worker-transport.d.ts +9 -2
  42. package/dist/browser/worker-transport.d.ts.map +1 -1
  43. package/dist/browser/worker-transport.js +29 -2
  44. package/dist/browser/worker-transport.js.map +1 -1
  45. package/dist/firebird.d.ts +69 -5
  46. package/dist/firebird.d.ts.map +1 -1
  47. package/dist/firebird.js +187 -49
  48. package/dist/firebird.js.map +1 -1
  49. package/dist/index.d.ts +4 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +9 -1
  52. package/dist/index.js.map +1 -1
  53. package/dist/sql-tag.d.ts +184 -0
  54. package/dist/sql-tag.d.ts.map +1 -0
  55. package/dist/sql-tag.js +287 -0
  56. package/dist/sql-tag.js.map +1 -0
  57. package/dist/statement-types.d.ts +23 -0
  58. package/dist/statement-types.d.ts.map +1 -0
  59. package/dist/statement-types.js +44 -0
  60. package/dist/statement-types.js.map +1 -0
  61. package/dist/types.d.ts +62 -0
  62. package/dist/types.d.ts.map +1 -1
  63. package/dist/wasm/firebird-embedded.js +1 -1
  64. package/dist/wasm/firebird-embedded.wasm +0 -0
  65. package/dist/wasm-loader.d.ts +44 -2
  66. package/dist/wasm-loader.d.ts.map +1 -1
  67. package/dist/wasm-loader.js.map +1 -1
  68. 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.multiTab = options.multiTab ?? 'exclusive';
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.dbName}.fdb`;
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 statements = (0, sql_script_1.splitStatements)(sql);
153
- if (params.length > 0 && statements.length > 1) {
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) {
@@ -165,28 +222,54 @@ class FirebirdBrowser {
165
222
  return results;
166
223
  }
167
224
  /**
168
- * Execute a SQL query and return the result rows.
225
+ * Execute one statement once per row of parameters: a batch.
169
226
  *
170
- * Parameters are bound with `?` placeholders, as in the Node.js backend:
227
+ * The statement is prepared once and executed for each row, in one
228
+ * transaction that commits when every row went in and rolls back when any
229
+ * failed — a batch is all or nothing. Loading 100,000 rows this way costs
230
+ * the inserts, not 100,000 prepares and transactions; a failure names the
231
+ * row. One statement only: a script cannot say which rows belong to which.
171
232
  *
172
233
  * ```ts
173
- * await db.query('SELECT * FROM items WHERE id = ?', [1]);
234
+ * await db.execBatch('INSERT INTO t (id, name) VALUES (?, ?)', [[1, 'a'], [2, 'b']]);
174
235
  * ```
236
+ *
237
+ * @returns the rows affected over the whole batch.
175
238
  */
176
- async query(sql, params = [], options = {}) {
239
+ async execBatch(sql, rows) {
240
+ await this.ensureReady();
241
+ if (!Array.isArray(rows)) {
242
+ throw new TypeError('execBatch takes an array of parameter rows');
243
+ }
244
+ const statements = (0, sql_script_1.splitStatements)(sql);
245
+ if (statements.length !== 1) {
246
+ throw new Error(`A batch runs one statement, not a script (${statements.length} statements found)`);
247
+ }
248
+ const affectedRows = await this.engine.executeBatch(this.dbHandle, 0, statements[0].sql, rows.map((row) => this.serialize(row)));
249
+ if (rows.length > 0) {
250
+ this.markDirty();
251
+ }
252
+ return { affectedRows };
253
+ }
254
+ async query(sql, paramsOrOptions = [], maybeOptions = {}) {
177
255
  await this.ensureReady();
256
+ const { statement, options } = (0, sql_tag_1.resolveQueryCall)(sql, paramsOrOptions, maybeOptions);
178
257
  // Without options the engine's own auto-commit transaction is used, which
179
258
  // is one fewer round trip to the Worker. With them, the statement has to
180
259
  // run inside a transaction that carries them — matching the Node backend,
181
260
  // which starts one for every query.
261
+ const rowMode = options.rowMode ?? 'object';
262
+ // `types.binary` asks for Uint8Array values; the side channel is how they
263
+ // travel. Same result for the caller, without the base64 round trip.
264
+ const binaryBlobs = this.options.types?.binary === true;
182
265
  if (!(0, isolation_1.hasTransactionOptions)(options)) {
183
- return this.engine.query(this.dbHandle, 0, sql, params);
266
+ 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
267
  }
185
268
  const txHandle = await this.engine.startTransaction(this.dbHandle, options);
186
269
  try {
187
- const result = await this.engine.query(this.dbHandle, txHandle, sql, params);
270
+ const result = await this.engine.query(this.dbHandle, txHandle, statement.sql, this.serialize(statement.params), rowMode, binaryBlobs);
188
271
  await this.engine.commit(txHandle);
189
- return result;
272
+ return (0, value_types_1.applyTypes)(result, this.options.types, rowMode);
190
273
  }
191
274
  catch (err) {
192
275
  // A failed commit finishes the transaction itself, so only a failure
@@ -195,13 +278,196 @@ class FirebirdBrowser {
195
278
  throw err;
196
279
  }
197
280
  }
281
+ /**
282
+ * Re-run a query whenever named events fire.
283
+ *
284
+ * ```ts
285
+ * // A trigger does the posting:
286
+ * // CREATE TRIGGER items_ai FOR items AFTER INSERT
287
+ * // AS BEGIN POST_EVENT 'items_changed'; END
288
+ *
289
+ * const live = await db.live(
290
+ * 'SELECT id, name FROM items ORDER BY id',
291
+ * { events: ['items_changed'] },
292
+ * (rows) => render(rows),
293
+ * );
294
+ * // …later
295
+ * await live.unsubscribe();
296
+ * ```
297
+ *
298
+ * `onChange` is called once immediately with the current rows, so it is the
299
+ * only place results need handling — there is no separate "initial value" to
300
+ * deal with differently.
301
+ *
302
+ * Firebird delivers events **after the posting transaction commits**, so a
303
+ * refresh only ever sees data that survived. That is worth more than
304
+ * immediacy: a live query that showed uncommitted rows would show rows that
305
+ * can vanish.
306
+ *
307
+ * The event names are the caller's to supply. Nothing in Firebird connects a
308
+ * posted event to the tables a statement reads, so inferring them would be
309
+ * guesswork dressed as convenience.
310
+ */
311
+ async listen(names, onEvent, options = {}) {
312
+ await this.ensureReady();
313
+ const watched = typeof names === 'string' ? [names] : names;
314
+ if (watched.length === 0) {
315
+ throw new RangeError('listen() needs at least one event name');
316
+ }
317
+ const pollIntervalMs = options.pollIntervalMs ?? 250;
318
+ const onError = options.onError ??
319
+ ((error) => console.error('[firebird-wasm] event listener failed', error));
320
+ const handle = await this.engine.eventsSubscribe(this.dbHandle, watched);
321
+ let stopped = false;
322
+ let timer = null;
323
+ // One tick at a time: a handler slower than the interval would otherwise
324
+ // pile up, and a later poll could re-arm before an earlier handler had
325
+ // finished with what it delivered.
326
+ let running = false;
327
+ const tick = async () => {
328
+ if (stopped || running)
329
+ return;
330
+ running = true;
331
+ try {
332
+ const counts = await this.engine.eventsPoll(handle);
333
+ // Polling re-arms whether or not anything fired, so the empty case
334
+ // still has to reach the engine — it is not a wasted call.
335
+ const fired = Object.fromEntries(Object.entries(counts).filter(([, count]) => count > 0));
336
+ if (Object.keys(fired).length > 0 && !stopped)
337
+ onEvent(fired);
338
+ }
339
+ catch (err) {
340
+ if (!stopped)
341
+ onError(err instanceof Error ? err : new Error(String(err)));
342
+ }
343
+ finally {
344
+ running = false;
345
+ }
346
+ };
347
+ const subscription = {
348
+ unsubscribe: async () => {
349
+ if (stopped)
350
+ return;
351
+ stopped = true;
352
+ if (timer !== null)
353
+ clearInterval(timer);
354
+ this.liveQueries.delete(subscription);
355
+ // Best effort: the engine may already be gone if the database was
356
+ // closed first, and a subscription on a closed database is not
357
+ // something a caller can act on.
358
+ await this.engine.eventsCancel(handle).catch(() => undefined);
359
+ },
360
+ };
361
+ timer = setInterval(() => void tick(), pollIntervalMs);
362
+ this.liveQueries.add(subscription);
363
+ return subscription;
364
+ }
365
+ /**
366
+ * Post an event, without writing a trigger to do it.
367
+ *
368
+ * ```ts
369
+ * await db.notify('items_changed');
370
+ * ```
371
+ *
372
+ * The event is delivered **after the transaction posting it commits**, which
373
+ * here is the statement's own auto-commit — so listeners hear about it only
374
+ * once it has actually happened.
375
+ *
376
+ * A trigger remains the better place for anything tied to data changing:
377
+ * `POST_EVENT` in an `AFTER INSERT` fires however the row arrived, including
378
+ * from another connection, while this fires only where it is called.
379
+ */
380
+ async notify(name) {
381
+ // The name is bound, not interpolated: EXECUTE BLOCK's body is SQL text
382
+ // like any other, and a name reaching it unchecked would be an injection
383
+ // with a trigger's privileges.
384
+ await this.query('EXECUTE BLOCK (event_name VARCHAR(31) = ?) AS BEGIN POST_EVENT :event_name; END', [name]);
385
+ }
386
+ async live(sql, options, onChange) {
387
+ await this.ensureReady();
388
+ if (options.events.length === 0) {
389
+ throw new RangeError('live() needs at least one event name to watch; without one it would ' +
390
+ 'never refresh, which a plain query() already does better');
391
+ }
392
+ const statement = (0, sql_tag_1.toStatement)(sql, options.params ?? []);
393
+ const onError = options.onError ??
394
+ ((error) => console.error('[firebird-wasm] live query failed', error));
395
+ let rows = [];
396
+ let stopped = false;
397
+ // One refresh at a time: a statement slower than the interval would
398
+ // otherwise pile up, and the last to finish would win rather than the
399
+ // latest to start.
400
+ let running = false;
401
+ const run = async () => {
402
+ const result = await this.query(statement.sql, statement.params);
403
+ rows = result.rows;
404
+ onChange(rows, result);
405
+ };
406
+ // The first results before returning, so a caller that awaits live() has
407
+ // rendered once by the time it continues.
408
+ await run();
409
+ // Built on listen() rather than beside it: the subscription, the polling,
410
+ // the one-at-a-time rule and the teardown are the same problem, and a
411
+ // second copy would be a second thing to keep correct.
412
+ const subscription = await this.listen(options.events, () => {
413
+ if (running || stopped)
414
+ return;
415
+ running = true;
416
+ void run()
417
+ .catch((err) => {
418
+ if (!stopped)
419
+ onError(err instanceof Error ? err : new Error(String(err)));
420
+ })
421
+ .finally(() => {
422
+ running = false;
423
+ });
424
+ }, { pollIntervalMs: options.pollIntervalMs, onError });
425
+ const live = {
426
+ get rows() {
427
+ return rows;
428
+ },
429
+ refresh: async () => {
430
+ if (!stopped)
431
+ await run();
432
+ },
433
+ unsubscribe: async () => {
434
+ if (stopped)
435
+ return;
436
+ stopped = true;
437
+ await subscription.unsubscribe();
438
+ },
439
+ };
440
+ return live;
441
+ }
442
+ /**
443
+ * Describe a statement's shape without running it.
444
+ *
445
+ * ```ts
446
+ * const shape = await db.describeQuery('SELECT id, name FROM items WHERE id = ?');
447
+ * // shape.params → [{ type: 496, typeName: 'INTEGER', … }]
448
+ * // shape.fields → [{ name: 'ID', … }, { name: 'NAME', … }]
449
+ * // shape.statementType → 'SELECT'
450
+ * ```
451
+ *
452
+ * The statement is prepared and dropped, so nothing happens: describing an
453
+ * `INSERT` inserts nothing. Preparing is not free — the engine parses and
454
+ * plans — but it is the only way to learn a shape, and the alternative,
455
+ * running the statement to see what comes back, is not one.
456
+ *
457
+ * A `` sql`…` `` fragment is accepted and its values ignored; only the text
458
+ * decides the shape, and a fragment is often what a caller has to hand.
459
+ */
460
+ async describeQuery(sql) {
461
+ await this.ensureReady();
462
+ return this.engine.describe(this.dbHandle, 0, (0, sql_tag_1.toStatement)(sql).sql);
463
+ }
198
464
  /**
199
465
  * Run a function inside an explicit transaction.
200
466
  */
201
467
  async transaction(fn, options = {}) {
202
468
  await this.ensureReady();
203
469
  const txHandle = await this.engine.startTransaction(this.dbHandle, options);
204
- const tx = new FirebirdBrowserTransaction(this.engine, this.dbHandle, txHandle);
470
+ const tx = new FirebirdBrowserTransaction(this.engine, this.dbHandle, txHandle, this.options.types);
205
471
  let result;
206
472
  try {
207
473
  result = await fn(tx);
@@ -228,6 +494,28 @@ class FirebirdBrowser {
228
494
  * Persist the in-memory database pages to IndexedDB.
229
495
  * Call this periodically or before the page unloads to avoid data loss.
230
496
  */
497
+ /**
498
+ * The database as bytes, ready to be stored, sent, or handed to
499
+ * {@link FirebirdBrowserOptions.loadDataDir}.
500
+ *
501
+ * ```ts
502
+ * const bytes = await db.dumpDataDir();
503
+ * const url = URL.createObjectURL(new Blob([bytes]));
504
+ * ```
505
+ *
506
+ * Read from the **live** database rather than from IndexedDB, which matters
507
+ * twice over: writes that have not been persisted yet are included, and an
508
+ * ephemeral `memory://` database has no stored copy to read at all. It is
509
+ * the same image `persist()` writes, taken the same way.
510
+ *
511
+ * A `Uint8Array` rather than a `Blob` — a `Blob` is one constructor away and
512
+ * exists only in a browser, while this class also runs in Node against a
513
+ * direct transport.
514
+ */
515
+ async dumpDataDir() {
516
+ await this.ensureReady();
517
+ return this.engine.readFile(this.dbPath);
518
+ }
231
519
  async persist() {
232
520
  if (!this.dbHandle || !this.mayPersist)
233
521
  return;
@@ -277,6 +565,11 @@ class FirebirdBrowser {
277
565
  // Already reported through onPersistError.
278
566
  }
279
567
  }
568
+ // Before the handle goes: each one holds a subscription on it, and a
569
+ // timer that would otherwise keep firing at a closed database.
570
+ for (const live of [...this.liveQueries]) {
571
+ await live.unsubscribe().catch(() => undefined);
572
+ }
280
573
  this.closed = true;
281
574
  if (this.dbHandle) {
282
575
  // Persist before closing.
@@ -285,7 +578,19 @@ class FirebirdBrowser {
285
578
  this.dbHandle = 0;
286
579
  }
287
580
  try {
288
- await this.vfs.close();
581
+ if (this.opfs) {
582
+ // The mount owns the sync access handle and releases it with the
583
+ // module; nothing here writes, because nothing was ever buffered.
584
+ }
585
+ else if (this.ephemeral) {
586
+ // Reclaim it: the engine's filesystem outlives this instance — the
587
+ // module is cached for the whole page — so a long-lived tab that
588
+ // opened many scratch databases would hold every one of them.
589
+ await this.engine.unlink(this.dbPath).catch(() => undefined);
590
+ }
591
+ else {
592
+ await this.vfs.close();
593
+ }
289
594
  await this.engine.dispose();
290
595
  }
291
596
  finally {
@@ -310,6 +615,14 @@ class FirebirdBrowser {
310
615
  * that multi-tab safety exists to prevent.
311
616
  */
312
617
  get mayPersist() {
618
+ // Ephemeral first: there is nowhere to persist to, so persist() is a
619
+ // no-op and markDirty() schedules nothing. A caller who writes code that
620
+ // works for both kinds should not have to branch.
621
+ //
622
+ // OPFS for the opposite reason: the engine's writes already went to the
623
+ // file, so there is nothing left to copy and a persist would be pure cost.
624
+ if (this.ephemeral || this.opfs)
625
+ return false;
313
626
  return this.shared === null || this.shared.isLeader;
314
627
  }
315
628
  /** Note that the database has changed and schedule a persist. */
@@ -397,7 +710,17 @@ class FirebirdBrowser {
397
710
  // 'shared' deliberately takes no lock here: the transport's election holds
398
711
  // it, and a second request from the same tab would queue behind itself.
399
712
  await this.engine.init();
400
- await this.vfs.open(this.dbName);
713
+ if (this.opfs) {
714
+ // The mount both opens the file and decides where it lives, so the path
715
+ // comes back rather than being assumed on this side.
716
+ this.opfsPath = await this.engine.mountOpfs(this.fileName);
717
+ }
718
+ else if (!this.ephemeral) {
719
+ // An ephemeral database never touches IndexedDB, so the store is not
720
+ // opened at all — opening it would create an empty one on disk for a
721
+ // database whose whole point is leaving nothing behind.
722
+ await this.vfs.open(this.dbName);
723
+ }
401
724
  await this.openDatabase();
402
725
  this.attachLifecycleListeners();
403
726
  }
@@ -421,6 +744,18 @@ class FirebirdBrowser {
421
744
  await this.engine.writeFile(this.dbPath, stored);
422
745
  }
423
746
  }
747
+ // After the stored image, never before it: `loadDataDir` is what to start
748
+ // from when there is nothing, not what to overwrite with.
749
+ const seed = this.options.loadDataDir;
750
+ if (seed && !(await this.engine.exists(this.dbPath))) {
751
+ if (seed.byteLength === 0) {
752
+ throw new RangeError('loadDataDir is empty; pass the bytes from dumpDataDir() or omit it');
753
+ }
754
+ await this.engine.writeFile(this.dbPath, seed);
755
+ }
756
+ // Works unchanged for OPFS: that filesystem reports a file as existing
757
+ // only once it has bytes, so a database that has never been written is
758
+ // absent here rather than present and empty.
424
759
  this.dbHandle = (await this.engine.exists(this.dbPath))
425
760
  ? await this.engine.attachDatabase(this.dbPath)
426
761
  : await this.engine.createDatabase(this.dbPath);
@@ -457,10 +792,11 @@ exports.FirebirdBrowser = FirebirdBrowser;
457
792
  * really does undo them.
458
793
  */
459
794
  class FirebirdBrowserTransaction {
460
- constructor(engine, dbHandle, txHandle) {
795
+ constructor(engine, dbHandle, txHandle, types) {
461
796
  this.engine = engine;
462
797
  this.dbHandle = dbHandle;
463
798
  this.txHandle = txHandle;
799
+ this.types = types;
464
800
  this.finished = false;
465
801
  }
466
802
  /** Whether this transaction has already been rolled back. */
@@ -492,13 +828,30 @@ class FirebirdBrowserTransaction {
492
828
  */
493
829
  async exec(sql, params = []) {
494
830
  this.assertUsable();
495
- const affectedRows = await this.engine.execute(this.dbHandle, this.txHandle, sql, params);
831
+ const statement = (0, sql_tag_1.toStatement)(sql, params);
832
+ const affectedRows = await this.engine.execute(this.dbHandle, this.txHandle, statement.sql, (0, value_types_1.applySerializers)(statement.params, this.types?.serializers));
833
+ return { affectedRows };
834
+ }
835
+ /**
836
+ * Execute one statement once per row of parameters inside this
837
+ * transaction: prepared once, executed per row. The rows before a failure
838
+ * stay, as statements run one by one would; the transaction decides.
839
+ *
840
+ * @returns the rows affected over the whole batch.
841
+ */
842
+ async execBatch(sql, rows) {
843
+ this.assertUsable();
844
+ if (!Array.isArray(rows)) {
845
+ throw new TypeError('execBatch takes an array of parameter rows');
846
+ }
847
+ const affectedRows = await this.engine.executeBatch(this.dbHandle, this.txHandle, sql, rows.map((row) => (0, value_types_1.applySerializers)(row, this.types?.serializers)));
496
848
  return { affectedRows };
497
849
  }
498
- /** Execute a SELECT inside this transaction and return rows. */
499
- async query(sql, params = []) {
850
+ async query(sql, params = [], options = {}) {
500
851
  this.assertUsable();
501
- return this.engine.query(this.dbHandle, this.txHandle, sql, params);
852
+ const statement = (0, sql_tag_1.toStatement)(sql, params);
853
+ const rowMode = options.rowMode ?? 'object';
854
+ 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
855
  }
503
856
  }
504
857
  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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"}
@@ -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,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEnE,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,kBAAkB,EAClB,cAAc,GACf,MAAM,UAAU,CAAC"}
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"}