firebird-wasm 0.1.1 → 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.
Files changed (68) hide show
  1. package/CHANGELOG.md +203 -0
  2. package/README.md +4 -1
  3. package/dist/.tsbuildinfo.build +1 -1
  4. package/dist/browser/engine-transport.d.ts +56 -5
  5. package/dist/browser/engine-transport.d.ts.map +1 -1
  6. package/dist/browser/engine-transport.js +271 -8
  7. package/dist/browser/engine-transport.js.map +1 -1
  8. package/dist/browser/firebird-browser.d.ts +282 -9
  9. package/dist/browser/firebird-browser.d.ts.map +1 -1
  10. package/dist/browser/firebird-browser.js +435 -42
  11. package/dist/browser/firebird-browser.js.map +1 -1
  12. package/dist/browser/index.d.ts +12 -2
  13. package/dist/browser/index.d.ts.map +1 -1
  14. package/dist/browser/index.js +23 -3
  15. package/dist/browser/index.js.map +1 -1
  16. package/dist/browser/leader-election.d.ts +55 -0
  17. package/dist/browser/leader-election.d.ts.map +1 -0
  18. package/dist/browser/leader-election.js +64 -0
  19. package/dist/browser/leader-election.js.map +1 -0
  20. package/dist/browser/opfs-fs.d.ts +72 -0
  21. package/dist/browser/opfs-fs.d.ts.map +1 -0
  22. package/dist/browser/opfs-fs.js +249 -0
  23. package/dist/browser/opfs-fs.js.map +1 -0
  24. package/dist/browser/shared-transport.d.ts +134 -0
  25. package/dist/browser/shared-transport.d.ts.map +1 -0
  26. package/dist/browser/shared-transport.js +366 -0
  27. package/dist/browser/shared-transport.js.map +1 -0
  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 +8 -2
  42. package/dist/browser/worker-transport.d.ts.map +1 -1
  43. package/dist/browser/worker-transport.js +26 -2
  44. package/dist/browser/worker-transport.js.map +1 -1
  45. package/dist/firebird.d.ts +58 -5
  46. package/dist/firebird.d.ts.map +1 -1
  47. package/dist/firebird.js +161 -52
  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 +38 -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
@@ -23,7 +23,79 @@
23
23
  */
24
24
  import type { IndexedDBVFSOptions } from './indexeddb-vfs';
25
25
  import type { EngineHandle, EngineTransport } from './engine-transport';
26
- import type { QueryResult, Row, QueryParams, TransactionOptions } from '../types';
26
+ import type { TypeOptions } from './value-types';
27
+ import type { SqlFragment } from '../sql-tag';
28
+ import type { ArrayRow, QueryResult, QueryDescription, QueryOptions, Row, QueryParams, RowMode, TransactionOptions } from '../types';
29
+ /** `QueryOptions` with the array mode pinned, for the overloads below. */
30
+ type ArrayModeOptions = QueryOptions & {
31
+ rowMode: 'array';
32
+ };
33
+ /** A running subscription. Returned by {@link FirebirdBrowser.listen}. */
34
+ export interface EventSubscription {
35
+ /** Stop listening and release the subscription. Safe to call twice. */
36
+ unsubscribe(): Promise<void>;
37
+ }
38
+ /** Options for {@link FirebirdBrowser.listen}. */
39
+ export interface ListenOptions {
40
+ /**
41
+ * How often to ask the engine whether anything fired, in milliseconds.
42
+ *
43
+ * This is a poll because the engine's callback runs on an engine thread and
44
+ * re-arming has to happen off it — see `fb_events_poll`. The cost of a tick
45
+ * that finds nothing is one round trip to the Worker.
46
+ *
47
+ * @default 250
48
+ */
49
+ pollIntervalMs?: number;
50
+ /**
51
+ * Called when a poll or a handler throws.
52
+ *
53
+ * A subscription outlives the call that created it, so an error has nowhere
54
+ * else to go. Defaults to `console.error`; polling continues, because one
55
+ * failure does not mean the next will fail.
56
+ */
57
+ onError?: (error: Error) => void;
58
+ }
59
+ /** Options for {@link FirebirdBrowser.live}. */
60
+ export interface LiveQueryOptions {
61
+ /**
62
+ * Event names to watch, as posted by `POST_EVENT`.
63
+ *
64
+ * Required, and deliberately not inferred from the statement. Firebird
65
+ * delivers events a trigger chose to post; nothing connects them to the
66
+ * tables a query reads, so guessing which events matter would be guessing.
67
+ */
68
+ events: string[];
69
+ /** Parameters for the statement, as `query()` takes them. */
70
+ params?: QueryParams;
71
+ /**
72
+ * How often to ask the engine whether anything fired, in milliseconds.
73
+ *
74
+ * This is a poll because the engine's callback runs on an engine thread and
75
+ * re-arming has to happen off it — see `fb_events_poll`. The cost of a tick
76
+ * that finds nothing is one round trip to the Worker.
77
+ *
78
+ * @default 250
79
+ */
80
+ pollIntervalMs?: number;
81
+ /**
82
+ * Called when a refresh fails.
83
+ *
84
+ * A live query outlives the call that created it, so an error has nowhere
85
+ * else to go. Defaults to `console.error`; polling continues, because one
86
+ * failed refresh — a lock conflict, say — does not mean the next will fail.
87
+ */
88
+ onError?: (error: Error) => void;
89
+ }
90
+ /** A running live query. Returned by {@link FirebirdBrowser.live}. */
91
+ export interface LiveQuery<T> {
92
+ /** The most recent rows. Replaced, not mutated, on each refresh. */
93
+ readonly rows: T[];
94
+ /** Re-run the statement now, without waiting for an event. */
95
+ refresh(): Promise<void>;
96
+ /** Stop watching and release the subscription. Safe to call twice. */
97
+ unsubscribe(): Promise<void>;
98
+ }
27
99
  /** What a statement did. Returned by `exec()`. */
28
100
  export interface ExecResult {
29
101
  /** Rows affected — for INSERT, UPDATE and DELETE. 0 for DDL. */
@@ -53,8 +125,12 @@ export interface FirebirdBrowserOptions {
53
125
  *
54
126
  * Omit it only where blocking the calling thread is acceptable, such as
55
127
  * Node or a test harness driving a stub engine.
128
+ *
129
+ * With `multiTab: 'shared'` this must be a **factory**. It is called only
130
+ * if this tab wins the election, so a follower never downloads and
131
+ * instantiates a 9 MB engine to sit idle beside the one already running.
56
132
  */
57
- worker?: Worker;
133
+ worker?: Worker | (() => Worker);
58
134
  /**
59
135
  * Use a transport of your own. Takes precedence over `worker`; mainly a
60
136
  * seam for tests.
@@ -97,12 +173,16 @@ export interface FirebirdBrowserOptions {
97
173
  *
98
174
  * - `'exclusive'` (default) takes a cross-tab lock and fails with
99
175
  * {@link DatabaseLockedError} if another tab will not release it in time.
176
+ * - `'shared'` elects one tab to run the engine and serves the others from
177
+ * it, so every tab sees the same live database. Needs `worker` to be a
178
+ * factory rather than an instance — a follower must not build an engine it
179
+ * will never use.
100
180
  * - `'allow-unsafe'` skips the lock. Only sound when at most one of the
101
181
  * tabs writes.
102
182
  *
103
183
  * @default 'exclusive'
104
184
  */
105
- multiTab?: 'exclusive' | 'allow-unsafe';
185
+ multiTab?: 'exclusive' | 'shared' | 'allow-unsafe';
106
186
  /**
107
187
  * How long to wait for another tab to release the database, in
108
188
  * milliseconds. `Infinity` waits indefinitely.
@@ -110,6 +190,33 @@ export interface FirebirdBrowserOptions {
110
190
  * @default 5000
111
191
  */
112
192
  lockTimeoutMs?: number;
193
+ /**
194
+ * Convert result values to richer JavaScript types.
195
+ *
196
+ * Off by default: every conversion trades something away, and values as
197
+ * returned today are correct, just awkward. See {@link TypeOptions} for what
198
+ * each one costs — `dates` in particular loses precision and has to choose a
199
+ * time zone Firebird did not store.
200
+ *
201
+ * @example
202
+ * ```ts
203
+ * new FirebirdBrowser('mydb', { worker, types: { bigint: true, binary: true } })
204
+ * ```
205
+ */
206
+ types?: TypeOptions;
207
+ /**
208
+ * Initial contents for the database, as the bytes {@link
209
+ * FirebirdBrowser.dumpDataDir} produced.
210
+ *
211
+ * Used **only when there is no database yet** — a stored one always wins.
212
+ * That is deliberate and is the difference between seeding and destroying:
213
+ * an application passes this on every load, so a seed that replaced what was
214
+ * there would reset the user's data to the snapshot on every page reload.
215
+ *
216
+ * To load a snapshot regardless of what is stored, open it as an ephemeral
217
+ * database: `new FirebirdBrowser('memory://', { loadDataDir: bytes })`.
218
+ */
219
+ loadDataDir?: Uint8Array;
113
220
  }
114
221
  /**
115
222
  * Browser-side Firebird database backed by WASM + IndexedDB.
@@ -119,6 +226,21 @@ export interface FirebirdBrowserOptions {
119
226
  */
120
227
  export declare class FirebirdBrowser {
121
228
  private readonly dbName;
229
+ /** True for a `memory://` database: never stored, discarded on close. */
230
+ private readonly ephemeral;
231
+ /** True for an `opfs://` database: the engine writes its pages straight to a file. */
232
+ private readonly opfs;
233
+ /** Path the engine opens. Set by the OPFS mount, which chooses it. */
234
+ private opfsPath;
235
+ /**
236
+ * Name of the file inside the engine's own filesystem.
237
+ *
238
+ * The same as `dbName` for a stored database. For an ephemeral one it is
239
+ * made unique per instance, so two `memory://` databases in one page cannot
240
+ * land on the same path — the WASM module, and therefore its filesystem, is
241
+ * shared by every instance in a tab.
242
+ */
243
+ private readonly fileName;
122
244
  private readonly options;
123
245
  private readonly vfs;
124
246
  private readonly engine;
@@ -138,14 +260,38 @@ export declare class FirebirdBrowser {
138
260
  private readonly lockTimeoutMs;
139
261
  /** Held for the connection's lifetime; released by close(). */
140
262
  private lock;
263
+ /** Live queries to tear down with the connection. */
264
+ private readonly liveQueries;
265
+ /** Set only in shared mode; owns the election and the channel. */
266
+ private shared;
141
267
  /**
142
268
  * @param dbName Logical database name. Used as the IndexedDB store name
143
269
  * and the filename inside Emscripten's virtual FS.
144
270
  * @param options Optional configuration.
145
271
  */
146
272
  constructor(dbName: string, options?: FirebirdBrowserOptions);
273
+ /** Build the real engine for this tab: a Worker if given one, else direct. */
274
+ private createLocalEngine;
275
+ private createEngine;
276
+ /**
277
+ * Whether this tab is the one actually running the engine.
278
+ *
279
+ * Always true unless `multiTab: 'shared'`, where exactly one tab owns the
280
+ * engine and the rest are served by it. Useful for deciding which tab should
281
+ * do work that must happen once — an import, a migration, a scheduled
282
+ * cleanup — rather than once per open tab.
283
+ */
284
+ get isLeader(): boolean;
147
285
  /** Path of the database inside Emscripten's filesystem. */
148
286
  private get dbPath();
287
+ /**
288
+ * Run any configured serializers over outgoing parameters.
289
+ *
290
+ * Here rather than in the encoder because the encoder may be on the far side
291
+ * of a Worker, where the serializer functions cannot follow — see
292
+ * {@link applySerializers}.
293
+ */
294
+ private serialize;
149
295
  /**
150
296
  * Execute one or more statements that do not return rows.
151
297
  *
@@ -162,17 +308,90 @@ export declare class FirebirdBrowser {
162
308
  *
163
309
  * @returns one result per statement, in order.
164
310
  */
165
- exec(sql: string, params?: QueryParams): Promise<ExecResult[]>;
311
+ exec(sql: string | SqlFragment, params?: QueryParams): Promise<ExecResult[]>;
166
312
  /**
167
313
  * Execute a SQL query and return the result rows.
168
314
  *
169
- * Parameters are bound with `?` placeholders, as in the Node.js backend:
315
+ * Parameters are bound with `?` placeholders, as in the Node.js backend, or
316
+ * interpolated into a `` sql`…` `` fragment:
170
317
  *
171
318
  * ```ts
172
319
  * await db.query('SELECT * FROM items WHERE id = ?', [1]);
320
+ * await db.query(sql`SELECT * FROM items WHERE id = ${1}`);
173
321
  * ```
174
322
  */
175
- query<T extends Row = Row>(sql: string, params?: QueryParams, options?: TransactionOptions): Promise<QueryResult<T>>;
323
+ query(sql: SqlFragment, options: ArrayModeOptions): Promise<QueryResult<ArrayRow>>;
324
+ query(sql: string | SqlFragment, params: QueryParams | undefined, options: ArrayModeOptions): Promise<QueryResult<ArrayRow>>;
325
+ query<T extends Row = Row>(sql: SqlFragment, options?: QueryOptions): Promise<QueryResult<T>>;
326
+ query<T extends Row = Row>(sql: string, params?: QueryParams, options?: QueryOptions): Promise<QueryResult<T>>;
327
+ query<T extends Row = Row>(sql: string | SqlFragment, params?: QueryParams, options?: QueryOptions): Promise<QueryResult<T>>;
328
+ /**
329
+ * Re-run a query whenever named events fire.
330
+ *
331
+ * ```ts
332
+ * // A trigger does the posting:
333
+ * // CREATE TRIGGER items_ai FOR items AFTER INSERT
334
+ * // AS BEGIN POST_EVENT 'items_changed'; END
335
+ *
336
+ * const live = await db.live(
337
+ * 'SELECT id, name FROM items ORDER BY id',
338
+ * { events: ['items_changed'] },
339
+ * (rows) => render(rows),
340
+ * );
341
+ * // …later
342
+ * await live.unsubscribe();
343
+ * ```
344
+ *
345
+ * `onChange` is called once immediately with the current rows, so it is the
346
+ * only place results need handling — there is no separate "initial value" to
347
+ * deal with differently.
348
+ *
349
+ * Firebird delivers events **after the posting transaction commits**, so a
350
+ * refresh only ever sees data that survived. That is worth more than
351
+ * immediacy: a live query that showed uncommitted rows would show rows that
352
+ * can vanish.
353
+ *
354
+ * The event names are the caller's to supply. Nothing in Firebird connects a
355
+ * posted event to the tables a statement reads, so inferring them would be
356
+ * guesswork dressed as convenience.
357
+ */
358
+ listen(names: string | string[], onEvent: (counts: Record<string, number>) => void, options?: ListenOptions): Promise<EventSubscription>;
359
+ /**
360
+ * Post an event, without writing a trigger to do it.
361
+ *
362
+ * ```ts
363
+ * await db.notify('items_changed');
364
+ * ```
365
+ *
366
+ * The event is delivered **after the transaction posting it commits**, which
367
+ * here is the statement's own auto-commit — so listeners hear about it only
368
+ * once it has actually happened.
369
+ *
370
+ * A trigger remains the better place for anything tied to data changing:
371
+ * `POST_EVENT` in an `AFTER INSERT` fires however the row arrived, including
372
+ * from another connection, while this fires only where it is called.
373
+ */
374
+ notify(name: string): Promise<void>;
375
+ live<T extends Row = Row>(sql: string | SqlFragment, options: LiveQueryOptions, onChange: (rows: T[], result: QueryResult<T>) => void): Promise<LiveQuery<T>>;
376
+ /**
377
+ * Describe a statement's shape without running it.
378
+ *
379
+ * ```ts
380
+ * const shape = await db.describeQuery('SELECT id, name FROM items WHERE id = ?');
381
+ * // shape.params → [{ type: 496, typeName: 'INTEGER', … }]
382
+ * // shape.fields → [{ name: 'ID', … }, { name: 'NAME', … }]
383
+ * // shape.statementType → 'SELECT'
384
+ * ```
385
+ *
386
+ * The statement is prepared and dropped, so nothing happens: describing an
387
+ * `INSERT` inserts nothing. Preparing is not free — the engine parses and
388
+ * plans — but it is the only way to learn a shape, and the alternative,
389
+ * running the statement to see what comes back, is not one.
390
+ *
391
+ * A `` sql`…` `` fragment is accepted and its values ignored; only the text
392
+ * decides the shape, and a fragment is often what a caller has to hand.
393
+ */
394
+ describeQuery(sql: string | SqlFragment): Promise<QueryDescription>;
176
395
  /**
177
396
  * Run a function inside an explicit transaction.
178
397
  */
@@ -181,6 +400,25 @@ export declare class FirebirdBrowser {
181
400
  * Persist the in-memory database pages to IndexedDB.
182
401
  * Call this periodically or before the page unloads to avoid data loss.
183
402
  */
403
+ /**
404
+ * The database as bytes, ready to be stored, sent, or handed to
405
+ * {@link FirebirdBrowserOptions.loadDataDir}.
406
+ *
407
+ * ```ts
408
+ * const bytes = await db.dumpDataDir();
409
+ * const url = URL.createObjectURL(new Blob([bytes]));
410
+ * ```
411
+ *
412
+ * Read from the **live** database rather than from IndexedDB, which matters
413
+ * twice over: writes that have not been persisted yet are included, and an
414
+ * ephemeral `memory://` database has no stored copy to read at all. It is
415
+ * the same image `persist()` writes, taken the same way.
416
+ *
417
+ * A `Uint8Array` rather than a `Blob` — a `Blob` is one constructor away and
418
+ * exists only in a browser, while this class also runs in Node against a
419
+ * direct transport.
420
+ */
421
+ dumpDataDir(): Promise<Uint8Array>;
184
422
  persist(): Promise<void>;
185
423
  /**
186
424
  * Close the database and release all resources.
@@ -188,6 +426,15 @@ export declare class FirebirdBrowser {
188
426
  close(): Promise<void>;
189
427
  /** Release the cross-tab lock, if this instance holds one. */
190
428
  private releaseLock;
429
+ /**
430
+ * Whether this tab may write the database image to IndexedDB.
431
+ *
432
+ * In shared mode only the leader may: a follower has no engine, and its
433
+ * `readFile` would fetch the image across the channel only to race the
434
+ * leader writing the same store — reintroducing the whole-image overwrite
435
+ * that multi-tab safety exists to prevent.
436
+ */
437
+ private get mayPersist();
191
438
  /** Note that the database has changed and schedule a persist. */
192
439
  private markDirty;
193
440
  private cancelScheduledPersist;
@@ -213,6 +460,27 @@ export declare class FirebirdBrowser {
213
460
  private readonly onPageHide;
214
461
  private ensureReady;
215
462
  private init;
463
+ /**
464
+ * Restore the stored image if this tab owns the engine, then attach.
465
+ *
466
+ * Separate from init() because it has to run again whenever the engine
467
+ * changes underneath us — in shared mode a leadership change replaces the
468
+ * engine, and every handle it issued dies with it.
469
+ *
470
+ * The restore is guarded by {@link mayPersist} for the same reason
471
+ * persistence is: a follower writing its IndexedDB snapshot into the
472
+ * filesystem would be overwriting the leader's *live* database with a
473
+ * possibly older image.
474
+ */
475
+ private openDatabase;
476
+ /**
477
+ * The engine behind this connection was replaced; attach to the new one.
478
+ *
479
+ * Called on every tab after a leadership change, promoted or not. Silence
480
+ * here would leave the caller holding a handle from an engine that no longer
481
+ * exists, and writes through it would go nowhere — visibly succeeding.
482
+ */
483
+ private reopenAfterEngineChange;
216
484
  }
217
485
  /**
218
486
  * A handle to an active transaction in the browser WASM engine.
@@ -224,8 +492,9 @@ export declare class FirebirdBrowserTransaction {
224
492
  private readonly engine;
225
493
  private readonly dbHandle;
226
494
  private readonly txHandle;
495
+ private readonly types?;
227
496
  private finished;
228
- constructor(engine: EngineTransport, dbHandle: EngineHandle, txHandle: EngineHandle);
497
+ constructor(engine: EngineTransport, dbHandle: EngineHandle, txHandle: EngineHandle, types?: TypeOptions | undefined);
229
498
  /** Whether this transaction has already been rolled back. */
230
499
  get isFinished(): boolean;
231
500
  /**
@@ -242,8 +511,12 @@ export declare class FirebirdBrowserTransaction {
242
511
  *
243
512
  * @returns the number of rows affected.
244
513
  */
245
- exec(sql: string, params?: QueryParams): Promise<ExecResult>;
514
+ exec(sql: string | SqlFragment, params?: QueryParams): Promise<ExecResult>;
246
515
  /** Execute a SELECT inside this transaction and return rows. */
247
- query<T extends Row = Row>(sql: string, params?: QueryParams): Promise<QueryResult<T>>;
516
+ query(sql: string | SqlFragment, params: QueryParams | undefined, options: ArrayModeOptions): Promise<QueryResult<ArrayRow>>;
517
+ query<T extends Row = Row>(sql: string | SqlFragment, params?: QueryParams, options?: {
518
+ rowMode?: RowMode;
519
+ }): Promise<QueryResult<T>>;
248
520
  }
521
+ export {};
249
522
  //# sourceMappingURL=firebird-browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"firebird-browser.d.ts","sourceRoot":"","sources":["../../src/browser/firebird-browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firebird-browser.d.ts","sourceRoot":"","sources":["../../src/browser/firebird-browser.ts"],"names":[],"mappings":"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"}