firebird-wasm 0.8.0 → 0.9.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 (64) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/README.md +30 -14
  3. package/dist/.tsbuildinfo.build +1 -1
  4. package/dist/browser/engine-transport.d.ts +2 -0
  5. package/dist/browser/engine-transport.d.ts.map +1 -1
  6. package/dist/browser/engine-transport.js +38 -3
  7. package/dist/browser/engine-transport.js.map +1 -1
  8. package/dist/browser/index.d.ts +1 -1
  9. package/dist/browser/index.d.ts.map +1 -1
  10. package/dist/browser/index.js +2 -1
  11. package/dist/browser/index.js.map +1 -1
  12. package/dist/browser/params.d.ts +8 -2
  13. package/dist/browser/params.d.ts.map +1 -1
  14. package/dist/browser/params.js +14 -5
  15. package/dist/browser/params.js.map +1 -1
  16. package/dist/electric/index.d.ts +52 -2
  17. package/dist/electric/index.d.ts.map +1 -1
  18. package/dist/electric/index.js +266 -98
  19. package/dist/electric/index.js.map +1 -1
  20. package/dist/electric/serial.d.ts +20 -0
  21. package/dist/electric/serial.d.ts.map +1 -0
  22. package/dist/electric/serial.js +29 -0
  23. package/dist/electric/serial.js.map +1 -0
  24. package/dist/electric/values.d.ts.map +1 -1
  25. package/dist/electric/values.js +17 -3
  26. package/dist/electric/values.js.map +1 -1
  27. package/dist/electric/writes.d.ts +99 -0
  28. package/dist/electric/writes.d.ts.map +1 -0
  29. package/dist/electric/writes.js +282 -0
  30. package/dist/electric/writes.js.map +1 -0
  31. package/dist/electric-server/capture.d.ts +17 -2
  32. package/dist/electric-server/capture.d.ts.map +1 -1
  33. package/dist/electric-server/capture.js +100 -24
  34. package/dist/electric-server/capture.js.map +1 -1
  35. package/dist/electric-server/catalog.d.ts +3 -1
  36. package/dist/electric-server/catalog.d.ts.map +1 -1
  37. package/dist/electric-server/catalog.js +18 -3
  38. package/dist/electric-server/catalog.js.map +1 -1
  39. package/dist/electric-server/index.d.ts +30 -3
  40. package/dist/electric-server/index.d.ts.map +1 -1
  41. package/dist/electric-server/index.js +258 -78
  42. package/dist/electric-server/index.js.map +1 -1
  43. package/dist/electric-server/where.d.ts +30 -0
  44. package/dist/electric-server/where.d.ts.map +1 -0
  45. package/dist/electric-server/where.js +243 -0
  46. package/dist/electric-server/where.js.map +1 -0
  47. package/dist/firebird.d.ts.map +1 -1
  48. package/dist/firebird.js +10 -1
  49. package/dist/firebird.js.map +1 -1
  50. package/dist/index.d.ts +1 -1
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +2 -1
  53. package/dist/index.js.map +1 -1
  54. package/dist/version.d.ts +1 -1
  55. package/dist/version.js +1 -1
  56. package/dist/wasm/firebird-embedded-st.js +1 -1
  57. package/dist/wasm/firebird-embedded-st.wasm +0 -0
  58. package/dist/wasm/firebird-embedded.js +1 -1
  59. package/dist/wasm/firebird-embedded.wasm +0 -0
  60. package/dist/wasm-loader.d.ts +57 -7
  61. package/dist/wasm-loader.d.ts.map +1 -1
  62. package/dist/wasm-loader.js +106 -21
  63. package/dist/wasm-loader.js.map +1 -1
  64. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/electric/values.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/electric/values.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * writes.ts – local writes to synced tables, sent to the app's own API.
3
+ *
4
+ * Electric is a read path: a write goes through the app's API to the source
5
+ * and comes back down the shape. This keeps the wait out of sight:
6
+ *
7
+ * - A write is applied to the synced table at once, and recorded in
8
+ * `ELECTRIC_WRITES` in the same transaction, so it survives a reload.
9
+ * - A sender hands the recorded writes, in order, to `send` (the app's API).
10
+ * A failure is retried; a `WriteRejected` rolls the write back.
11
+ * - Each batch the sync applies is followed, in its transaction, by every
12
+ * write still pending on that table, so the server's older state never
13
+ * shows over a local write.
14
+ * - A sent write is dropped once the source's change has come back: when a
15
+ * change carries the transaction id `send` returned (Electric's `txids`,
16
+ * and the shape server's), or, without one, when the sync brings a change
17
+ * to the same row, or at the latest after `confirmTimeoutMs`.
18
+ *
19
+ * Values are what `exec` takes, keyed by the shape's column names (`title`
20
+ * for the Firebird column `TITLE`): strings, numbers, booleans, `null`,
21
+ * `Date` and `Uint8Array`.
22
+ */
23
+ import type { ElectricTransaction } from './apply';
24
+ /** What a write queue needs of a database: `FirebirdBrowser` and `FirebirdLite` have it. */
25
+ export interface WritesDatabase {
26
+ transaction<T>(fn: (tx: ElectricTransaction) => Promise<T>): Promise<T>;
27
+ }
28
+ /** One write, as `send` receives it. */
29
+ export interface LocalWrite {
30
+ /** Its number in this database, in the order it was made. */
31
+ id: number;
32
+ /** The table, as given to the queue. */
33
+ table: string;
34
+ operation: 'insert' | 'update' | 'delete';
35
+ /** The primary key's values, by column name. */
36
+ key: Record<string, unknown>;
37
+ /** The values written (for a delete, none), by column name. */
38
+ value: Record<string, unknown>;
39
+ }
40
+ /** What `send` may return: the source transaction that applied the write. */
41
+ export interface SendResult {
42
+ /** The source's transaction id, as Electric reports it in `txids`. */
43
+ txid?: string | number | bigint;
44
+ }
45
+ /** Thrown by `send` when the source refuses a write: it is rolled back, not retried. */
46
+ export declare class WriteRejected extends Error {
47
+ constructor(message: string);
48
+ }
49
+ /** Options of {@link createWriteQueue}. */
50
+ export interface WriteQueueOptions {
51
+ /** Hand one write to the source (the app's API); throw `WriteRejected` to refuse it. */
52
+ send: (write: LocalWrite) => Promise<SendResult | void>;
53
+ /** Called when a write is rejected and rolled back, and on each failed send. */
54
+ onError?: (error: Error, write: LocalWrite) => void;
55
+ /** How long to wait before sending again after a failure. Default 2000 ms. */
56
+ retryMs?: number;
57
+ /** Drop a sent write whose change has not come back after this long. Default 60 000 ms. */
58
+ confirmTimeoutMs?: number;
59
+ }
60
+ /** A running write queue. Returned by {@link createWriteQueue}. */
61
+ export interface WriteQueue {
62
+ /** Insert (or replace) a row, here at once and at the source in turn. */
63
+ insert(table: string, value: Record<string, unknown>): Promise<LocalWrite>;
64
+ /** Update the row with `key`, setting `value`'s columns. */
65
+ update(table: string, key: Record<string, unknown>, value: Record<string, unknown>): Promise<LocalWrite>;
66
+ /** Delete the row with `key`. */
67
+ delete(table: string, key: Record<string, unknown>): Promise<LocalWrite>;
68
+ /** Writes not yet confirmed by the sync: pending or sent. */
69
+ pending(): Promise<LocalWrite[]>;
70
+ /** Send whatever is pending now, rather than at the next retry. */
71
+ flush(): Promise<void>;
72
+ /** Stop sending. Pending writes stay recorded, for the next queue. */
73
+ close(): Promise<void>;
74
+ /** @internal The sync's part: called inside each batch's transaction. */
75
+ readonly sync: WriteSync;
76
+ }
77
+ /** @internal What the sync calls. */
78
+ export interface WriteSync {
79
+ /**
80
+ * After a batch was applied to `table` in `tx`: drop the writes it
81
+ * confirms, and apply again the ones still pending.
82
+ */
83
+ reconcile(tx: ElectricTransaction, table: string, touched: Set<string> | 'all', txids: Set<string>): Promise<void>;
84
+ /** A sync of `table` that can be asked to fetch its shape again (after a rejection). */
85
+ register(table: string, refetch: () => void): () => void;
86
+ }
87
+ /**
88
+ * The key of a row as one string, for matching a write with what the sync
89
+ * brings: Electric sends every value as text (`"1"` for the `1` written).
90
+ */
91
+ declare function keyText(key: Record<string, unknown>): string;
92
+ /**
93
+ * Start a queue of local writes. Pass it to `syncShapeToTable` /
94
+ * `syncShapesToTables` as `writes`, so that the sync keeps the writes over
95
+ * what it applies and drops them once confirmed.
96
+ */
97
+ export declare function createWriteQueue(given: WritesDatabase, options: WriteQueueOptions): Promise<WriteQueue>;
98
+ export { keyText as writeKeyText };
99
+ //# sourceMappingURL=writes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writes.d.ts","sourceRoot":"","sources":["../../src/electric/writes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,282 @@
1
+ "use strict";
2
+ /**
3
+ * writes.ts – local writes to synced tables, sent to the app's own API.
4
+ *
5
+ * Electric is a read path: a write goes through the app's API to the source
6
+ * and comes back down the shape. This keeps the wait out of sight:
7
+ *
8
+ * - A write is applied to the synced table at once, and recorded in
9
+ * `ELECTRIC_WRITES` in the same transaction, so it survives a reload.
10
+ * - A sender hands the recorded writes, in order, to `send` (the app's API).
11
+ * A failure is retried; a `WriteRejected` rolls the write back.
12
+ * - Each batch the sync applies is followed, in its transaction, by every
13
+ * write still pending on that table, so the server's older state never
14
+ * shows over a local write.
15
+ * - A sent write is dropped once the source's change has come back: when a
16
+ * change carries the transaction id `send` returned (Electric's `txids`,
17
+ * and the shape server's), or, without one, when the sync brings a change
18
+ * to the same row, or at the latest after `confirmTimeoutMs`.
19
+ *
20
+ * Values are what `exec` takes, keyed by the shape's column names (`title`
21
+ * for the Firebird column `TITLE`): strings, numbers, booleans, `null`,
22
+ * `Date` and `Uint8Array`.
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.WriteRejected = void 0;
26
+ exports.createWriteQueue = createWriteQueue;
27
+ exports.writeKeyText = keyText;
28
+ const values_1 = require("./values");
29
+ const serial_1 = require("./serial");
30
+ /** Thrown by `send` when the source refuses a write: it is rolled back, not retried. */
31
+ class WriteRejected extends Error {
32
+ constructor(message) {
33
+ super(message);
34
+ this.name = 'WriteRejected';
35
+ }
36
+ }
37
+ exports.WriteRejected = WriteRejected;
38
+ const WRITES = '"ELECTRIC_WRITES"';
39
+ /** Characters of JSON a write's values may take: the widest UTF-8 VARCHAR a row holds. */
40
+ const MAX_VALUE = 8191;
41
+ /** Values to JSON and back, `Date` and `Uint8Array` included. */
42
+ function encode(value) {
43
+ return JSON.stringify(value, (_, v) => {
44
+ if (v instanceof Uint8Array)
45
+ return { $bytes: Array.from(v) };
46
+ if (typeof v === 'bigint')
47
+ return { $bigint: v.toString() };
48
+ return v;
49
+ });
50
+ }
51
+ function decode(text) {
52
+ return JSON.parse(text, (_, v) => {
53
+ if (v && typeof v === 'object' && Array.isArray(v.$bytes))
54
+ return new Uint8Array(v.$bytes);
55
+ if (v && typeof v === 'object' && typeof v.$bigint === 'string')
56
+ return BigInt(v.$bigint);
57
+ if (typeof v === 'string' && /^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?Z$/.test(v))
58
+ return new Date(v);
59
+ return v;
60
+ });
61
+ }
62
+ /**
63
+ * The key of a row as one string, for matching a write with what the sync
64
+ * brings: Electric sends every value as text (`"1"` for the `1` written).
65
+ */
66
+ function keyText(key) {
67
+ return JSON.stringify(Object.keys(key).sort().map((k) => {
68
+ const v = key[k];
69
+ return [k, v === null || v === undefined ? null : v instanceof Date ? v.toISOString() : String(v)];
70
+ }));
71
+ }
72
+ /**
73
+ * Start a queue of local writes. Pass it to `syncShapeToTable` /
74
+ * `syncShapesToTables` as `writes`, so that the sync keeps the writes over
75
+ * what it applies and drops them once confirmed.
76
+ */
77
+ async function createWriteQueue(given, options) {
78
+ // One transaction at a time with the syncs: see serial.ts.
79
+ const db = (0, serial_1.serialDatabase)(given);
80
+ const retryMs = options.retryMs ?? 2000;
81
+ const confirmTimeoutMs = options.confirmTimeoutMs ?? 60000;
82
+ const report = options.onError ?? ((e) => console.error('[firebird-wasm/electric] write', e));
83
+ await ensureWritesTable(db);
84
+ const keys = new Map();
85
+ /** The primary key of a local table, Firebird column names, from its constraint. */
86
+ const keyOf = async (tx, table) => {
87
+ const name = (0, values_1.firebirdName)(table);
88
+ const known = keys.get(name);
89
+ if (known)
90
+ return known;
91
+ const { rows } = await tx.query('SELECT TRIM(s.RDB$FIELD_NAME) AS F FROM RDB$RELATION_CONSTRAINTS c ' +
92
+ 'JOIN RDB$INDEX_SEGMENTS s ON s.RDB$INDEX_NAME = c.RDB$INDEX_NAME ' +
93
+ "WHERE c.RDB$RELATION_NAME = ? AND c.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY s.RDB$FIELD_POSITION", [name.slice(1, -1).replace(/""/g, '"')]);
94
+ const found = rows.map((r) => String(r['F']));
95
+ if (found.length === 0)
96
+ throw new Error(`Table ${table} has no primary key; local writes need one`);
97
+ keys.set(name, found);
98
+ return found;
99
+ };
100
+ /** Apply one write to its table in `tx`. */
101
+ const applyWrite = async (tx, w) => {
102
+ const table = (0, values_1.firebirdName)(w.table);
103
+ const keyColumns = Object.keys(w.key);
104
+ const where = keyColumns.map((k) => `${(0, values_1.firebirdColumn)(k)} = ?`).join(' AND ');
105
+ const keyValues = keyColumns.map((k) => w.key[k]);
106
+ if (w.operation === 'delete') {
107
+ await tx.exec(`DELETE FROM ${table} WHERE ${where}`, keyValues);
108
+ return;
109
+ }
110
+ const columns = Object.keys(w.value);
111
+ if (w.operation === 'insert') {
112
+ const all = [...new Set([...keyColumns, ...columns])];
113
+ const values = all.map((c) => (c in w.value ? w.value[c] : w.key[c]));
114
+ await tx.exec(`UPDATE OR INSERT INTO ${table} (${all.map(values_1.firebirdColumn).join(', ')}) VALUES (${all.map(() => '?').join(', ')}) ` +
115
+ `MATCHING (${keyColumns.map(values_1.firebirdColumn).join(', ')})`, values);
116
+ return;
117
+ }
118
+ if (columns.length === 0)
119
+ return;
120
+ await tx.exec(`UPDATE ${table} SET ${columns.map((c) => `${(0, values_1.firebirdColumn)(c)} = ?`).join(', ')} WHERE ${where}`, [...columns.map((c) => w.value[c]), ...keyValues]);
121
+ };
122
+ const load = async (tx, table) => {
123
+ const { rows } = await tx.query(`SELECT ID, TABLE_NAME, OP, KEY_JSON, VALUE_JSON, STATE, TXID, SENT_AT FROM ${WRITES}` +
124
+ (table ? ' WHERE TABLE_NAME = ?' : '') + ' ORDER BY ID', table ? [table] : []);
125
+ return rows.map((r) => ({
126
+ id: Number(r['ID']),
127
+ table: String(r['TABLE_NAME']),
128
+ operation: { I: 'insert', U: 'update', D: 'delete' }[String(r['OP']).trim()],
129
+ key: decode(String(r['KEY_JSON'])),
130
+ value: decode(String(r['VALUE_JSON'] ?? '{}')),
131
+ state: String(r['STATE']).trim(),
132
+ txid: r['TXID'] === null || r['TXID'] === undefined ? null : String(r['TXID']).trim(),
133
+ sentAt: r['SENT_AT'] === null || r['SENT_AT'] === undefined ? null : Number(r['SENT_AT']),
134
+ }));
135
+ };
136
+ const write = async (operation, table, keyGiven, value) => {
137
+ const made = await db.transaction(async (tx) => {
138
+ const keyColumns = await keyOf(tx, table);
139
+ // The key by the shape's names: TITLE is title, "camelCase" stays.
140
+ const shapeName = (c) => (/^[A-Z][A-Z0-9_$]*$/.test(c) ? c.toLowerCase() : c);
141
+ const source = keyGiven ?? value;
142
+ const key = {};
143
+ for (const c of keyColumns) {
144
+ const name = shapeName(c);
145
+ if (!(name in source))
146
+ throw new RangeError(`A write to ${table} needs its key column ${name}`);
147
+ key[name] = source[name];
148
+ }
149
+ const json = encode(value);
150
+ if (json.length > MAX_VALUE) {
151
+ throw new RangeError(`A write's values may take ${MAX_VALUE} characters as JSON; this one takes ${json.length}`);
152
+ }
153
+ const { rows } = await tx.query(`SELECT COALESCE(MAX(ID), 0) + 1 AS N FROM ${WRITES}`);
154
+ const w = { id: Number(rows[0]['N']), table, operation, key, value };
155
+ await applyWrite(tx, w);
156
+ await tx.exec(`INSERT INTO ${WRITES} (ID, TABLE_NAME, OP, KEY_JSON, VALUE_JSON, STATE) VALUES (?, ?, ?, ?, ?, 'P')`, [w.id, table, operation[0].toUpperCase(), encode(key), json]);
157
+ return w;
158
+ });
159
+ kick();
160
+ return made;
161
+ };
162
+ const refetchers = new Map();
163
+ let closed = false;
164
+ let sending = null;
165
+ let timer;
166
+ /** Roll a rejected write back: forget it, and have its table fetched again. */
167
+ const reject = async (w, error) => {
168
+ await db.transaction((tx) => tx.exec(`DELETE FROM ${WRITES} WHERE ID = ?`, [w.id]).then(() => undefined));
169
+ for (const refetch of refetchers.get((0, values_1.firebirdName)(w.table)) ?? [])
170
+ refetch();
171
+ report(error, w);
172
+ };
173
+ /** Send every pending write, in order; stop at the first that fails. */
174
+ const sendAll = async () => {
175
+ for (;;) {
176
+ if (closed)
177
+ return;
178
+ const next = (await db.transaction((tx) => load(tx))).find((w) => w.state === 'P');
179
+ if (!next)
180
+ return;
181
+ let result;
182
+ try {
183
+ result = await options.send({ id: next.id, table: next.table, operation: next.operation, key: next.key, value: next.value });
184
+ }
185
+ catch (err) {
186
+ const error = err instanceof Error ? err : new Error(String(err));
187
+ if (error instanceof WriteRejected || error.rejected) {
188
+ await reject(next, error);
189
+ continue;
190
+ }
191
+ report(error, next);
192
+ if (!closed) {
193
+ clearTimeout(timer);
194
+ timer = setTimeout(kick, retryMs);
195
+ }
196
+ return;
197
+ }
198
+ const txid = result && result.txid !== undefined && result.txid !== null ? String(result.txid) : null;
199
+ await db.transaction((tx) => tx.exec(`UPDATE ${WRITES} SET STATE = 'S', TXID = ?, SENT_AT = ? WHERE ID = ?`, [txid, Date.now(), next.id])
200
+ .then(() => undefined));
201
+ }
202
+ };
203
+ function kick() {
204
+ if (closed || sending)
205
+ return;
206
+ sending = sendAll()
207
+ .catch((err) => report(err instanceof Error ? err : new Error(String(err)), undefined))
208
+ .finally(() => { sending = null; });
209
+ }
210
+ const sync = {
211
+ async reconcile(tx, table, touched, txids) {
212
+ const name = (0, values_1.firebirdName)(table);
213
+ const writes = (await load(tx)).filter((w) => (0, values_1.firebirdName)(w.table) === name);
214
+ if (writes.length === 0)
215
+ return;
216
+ const now = Date.now();
217
+ for (const w of writes) {
218
+ // Sent, and its change is back: the source's row now holds it.
219
+ const confirmed = w.state === 'S' && ((w.txid !== null && txids.has(w.txid)) ||
220
+ (w.txid === null && (touched === 'all' || touched.has(keyText(w.key)))) ||
221
+ (w.sentAt !== null && now - w.sentAt > confirmTimeoutMs));
222
+ if (confirmed) {
223
+ await tx.exec(`DELETE FROM ${WRITES} WHERE ID = ?`, [w.id]);
224
+ continue;
225
+ }
226
+ await applyWrite(tx, w);
227
+ }
228
+ },
229
+ register(table, refetch) {
230
+ const name = (0, values_1.firebirdName)(table);
231
+ const set = refetchers.get(name) ?? new Set();
232
+ set.add(refetch);
233
+ refetchers.set(name, set);
234
+ return () => set.delete(refetch);
235
+ },
236
+ };
237
+ // Writes left from before (a reload, offline) go out now.
238
+ kick();
239
+ return {
240
+ insert: (table, value) => write('insert', table, null, value),
241
+ update: (table, key, value) => write('update', table, key, value),
242
+ delete: (table, key) => write('delete', table, key, {}),
243
+ pending: () => db.transaction((tx) => load(tx)).then((ws) => ws.map(({ id, table, operation, key, value }) => ({ id, table, operation, key, value }))),
244
+ flush: async () => {
245
+ clearTimeout(timer);
246
+ kick();
247
+ await sending;
248
+ },
249
+ close: async () => {
250
+ closed = true;
251
+ clearTimeout(timer);
252
+ await sending;
253
+ },
254
+ sync,
255
+ };
256
+ }
257
+ async function ensureWritesTable(db) {
258
+ for (let attempt = 1;; attempt++) {
259
+ try {
260
+ await db.transaction(async (tx) => {
261
+ const { rows } = await tx.query("SELECT 1 AS X FROM RDB$RELATIONS WHERE RDB$RELATION_NAME = 'ELECTRIC_WRITES'");
262
+ if (rows.length > 0)
263
+ return;
264
+ await tx.exec(`CREATE TABLE ${WRITES} (ID INTEGER NOT NULL PRIMARY KEY, TABLE_NAME VARCHAR(255) NOT NULL, ` +
265
+ // Not a BLOB: FirebirdLite reads a BLOB back as a handle, not text.
266
+ 'OP CHAR(1) NOT NULL, KEY_JSON VARCHAR(4000) CHARACTER SET UTF8 NOT NULL, ' +
267
+ `VALUE_JSON VARCHAR(${MAX_VALUE}) CHARACTER SET UTF8, ` +
268
+ "STATE CHAR(1) DEFAULT 'P' NOT NULL, TXID VARCHAR(40), SENT_AT DOUBLE PRECISION)");
269
+ });
270
+ return;
271
+ }
272
+ catch (error) {
273
+ const made = await db.transaction(async (tx) => (await tx.query("SELECT 1 AS X FROM RDB$RELATIONS WHERE RDB$RELATION_NAME = 'ELECTRIC_WRITES'")).rows.length > 0);
274
+ if (made)
275
+ return;
276
+ if (attempt >= 5)
277
+ throw error;
278
+ await new Promise((resolve) => setTimeout(resolve, 20 * attempt));
279
+ }
280
+ }
281
+ }
282
+ //# sourceMappingURL=writes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writes.js","sourceRoot":"","sources":["../../src/electric/writes.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,10 @@ import type { Attachment } from 'node-firebird-driver';
10
10
  import type { TablePlan } from './catalog';
11
11
  export declare const CHANGES = "ELECTRIC_CHANGES";
12
12
  export declare const META = "ELECTRIC_META";
13
+ /** When each commit number was given: what pruning goes by. */
14
+ export declare const STAMPS = "ELECTRIC_STAMPS";
15
+ /** The event each logged change posts, delivered when its transaction commits. */
16
+ export declare const CHANGE_EVENT = "ELECTRIC_CHANGES";
13
17
  /** How many key columns the log has room for. */
14
18
  export declare const KEY_COLUMNS = 4;
15
19
  /** A short, stable trigger name for a table: Firebird 3 allows 31 characters. */
@@ -29,8 +33,19 @@ export declare function tableTrigger(table: TablePlan): string;
29
33
  * is loaded when a connection attaches, so an application connected before
30
34
  * the capture was installed would never run it. A change still being
31
35
  * written is invisible to this READ COMMITTED update and is numbered by a
32
- * later call, after its commit; so numbers follow commits, and one stamper
33
- * at a time (the server's queue) leaves no number to arrive late.
36
+ * later call, after its commit; so numbers follow commits.
37
+ *
38
+ * One numbering at a time, across every server on the database: each takes
39
+ * the ELECTRIC_META row first, and a number is taken only under it. So
40
+ * numbers commit in order, and a snapshot that sees a number sees every
41
+ * number below it. Two servers numbering at once used to fail on each
42
+ * other's rows, or commit a higher number before a lower one.
34
43
  */
35
44
  export declare function stampCommitted(attachment: Attachment): Promise<number>;
45
+ /**
46
+ * Drop what was numbered before `before` from the log, and return the
47
+ * highest number dropped (0 when nothing was). A client whose position is
48
+ * below it is sent back to a snapshot: what it would need is gone.
49
+ */
50
+ export declare function pruneLog(attachment: Attachment, before: Date): Promise<number>;
36
51
  //# sourceMappingURL=capture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/electric-server/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,sBAAsB,CAAC;AAEpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,eAAO,MAAM,OAAO,qBAAqB,CAAC;AAC1C,eAAO,MAAM,IAAI,kBAAkB,CAAC;AAIpC,iDAAiD;AACjD,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOjD;AAYD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C/F;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAkBrD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB5E"}
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../src/electric-server/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,sBAAsB,CAAC;AAEpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,eAAO,MAAM,OAAO,qBAAqB,CAAC;AAC1C,eAAO,MAAM,IAAI,kBAAkB,CAAC;AACpC,+DAA+D;AAC/D,eAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,kFAAkF;AAClF,eAAO,MAAM,YAAY,qBAAqB,CAAC;AAI/C,iDAAiD;AACjD,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOjD;AAYD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuD/F;AAED,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAqBrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAqC5E;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAiCpF"}