orez 0.5.11 → 0.5.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cf-do/tx-journal.d.ts +6 -5
- package/dist/cf-do/tx-journal.d.ts.map +1 -1
- package/dist/cf-do/tx-journal.js +116 -27
- package/dist/cf-do/tx-journal.js.map +1 -1
- package/dist/pg-proxy-browser.d.ts +2 -0
- package/dist/pg-proxy-browser.d.ts.map +1 -1
- package/dist/pg-proxy-browser.js +56 -102
- package/dist/pg-proxy-browser.js.map +1 -1
- package/dist/pg-proxy-do-backend.d.ts +8 -0
- package/dist/pg-proxy-do-backend.d.ts.map +1 -1
- package/dist/pg-proxy-do-backend.js +27 -9
- package/dist/pg-proxy-do-backend.js.map +1 -1
- package/dist/pg-sqlite-compiler/compiler.d.ts +17 -0
- package/dist/pg-sqlite-compiler/compiler.d.ts.map +1 -0
- package/dist/pg-sqlite-compiler/compiler.js +80 -0
- package/dist/pg-sqlite-compiler/compiler.js.map +1 -0
- package/dist/pg-sqlite-compiler/index.d.ts +1 -16
- package/dist/pg-sqlite-compiler/index.d.ts.map +1 -1
- package/dist/pg-sqlite-compiler/index.js +2 -79
- package/dist/pg-sqlite-compiler/index.js.map +1 -1
- package/dist/replication/handler.d.ts +8 -7
- package/dist/replication/handler.d.ts.map +1 -1
- package/dist/replication/handler.js +147 -116
- package/dist/replication/handler.js.map +1 -1
- package/dist/worker/browser-build-config.d.ts.map +1 -1
- package/dist/worker/browser-build-config.js +1 -0
- package/dist/worker/browser-build-config.js.map +1 -1
- package/dist/worker/browser-embed.d.ts +3 -2
- package/dist/worker/browser-embed.d.ts.map +1 -1
- package/dist/worker/browser-embed.js +187 -150
- package/dist/worker/browser-embed.js.map +1 -1
- package/dist/worker/cf-instance-runtime.d.ts +62 -0
- package/dist/worker/cf-instance-runtime.d.ts.map +1 -0
- package/dist/worker/cf-instance-runtime.js +260 -0
- package/dist/worker/cf-instance-runtime.js.map +1 -0
- package/dist/worker/cf-patches.d.ts +9 -6
- package/dist/worker/cf-patches.d.ts.map +1 -1
- package/dist/worker/cf-patches.js +117 -60
- package/dist/worker/cf-patches.js.map +1 -1
- package/dist/worker/durable-object-websocket-handoff.d.ts +2 -0
- package/dist/worker/durable-object-websocket-handoff.d.ts.map +1 -1
- package/dist/worker/durable-object-websocket-handoff.js +22 -41
- package/dist/worker/durable-object-websocket-handoff.js.map +1 -1
- package/dist/worker/embed-generation.d.ts +9 -6
- package/dist/worker/embed-generation.d.ts.map +1 -1
- package/dist/worker/embed-generation.js +27 -6
- package/dist/worker/embed-generation.js.map +1 -1
- package/dist/worker/shims/fastify-websocket.d.ts +3 -0
- package/dist/worker/shims/fastify-websocket.d.ts.map +1 -0
- package/dist/worker/shims/fastify-websocket.js +3 -0
- package/dist/worker/shims/fastify-websocket.js.map +1 -0
- package/dist/worker/shims/fastify.d.ts +2 -10
- package/dist/worker/shims/fastify.d.ts.map +1 -1
- package/dist/worker/shims/fastify.js +14 -21
- package/dist/worker/shims/fastify.js.map +1 -1
- package/dist/worker/shims/postgres-browser.d.ts +1 -1
- package/dist/worker/shims/postgres-browser.d.ts.map +1 -1
- package/dist/worker/shims/postgres-browser.js +29 -20
- package/dist/worker/shims/postgres-browser.js.map +1 -1
- package/dist/worker/shims/sqlite-browser.d.ts +2 -3
- package/dist/worker/shims/sqlite-browser.d.ts.map +1 -1
- package/dist/worker/shims/sqlite-browser.js +2 -3
- package/dist/worker/shims/sqlite-browser.js.map +1 -1
- package/dist/worker/shims/sqlite.d.ts.map +1 -1
- package/dist/worker/shims/sqlite.js +56 -35
- package/dist/worker/shims/sqlite.js.map +1 -1
- package/dist/worker/shims/ws.d.ts.map +1 -1
- package/dist/worker/shims/ws.js +54 -39
- package/dist/worker/shims/ws.js.map +1 -1
- package/dist/worker/shims/zero-process-env.d.ts.map +1 -1
- package/dist/worker/shims/zero-process-env.js +25 -4
- package/dist/worker/shims/zero-process-env.js.map +1 -1
- package/dist/worker/zero-cache-embed-cf.d.ts +5 -1
- package/dist/worker/zero-cache-embed-cf.d.ts.map +1 -1
- package/dist/worker/zero-cache-embed-cf.js +105 -137
- package/dist/worker/zero-cache-embed-cf.js.map +1 -1
- package/package.json +6 -2
|
@@ -70,11 +70,12 @@ export declare function rollbackTxJournal(sql: DurableSqlStorage, txID: string):
|
|
|
70
70
|
*/
|
|
71
71
|
export declare function upgradeToTableSnapshot(sql: DurableSqlStorage, txID: string, table: string, owner?: string): void;
|
|
72
72
|
/**
|
|
73
|
-
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
73
|
+
* snapshot the source table and the transitive targets of its business
|
|
74
|
+
* triggers and cascading/SET foreign keys. trigger SQL and FK metadata name
|
|
75
|
+
* every table SQLite can mutate implicitly, so copying unrelated published
|
|
76
|
+
* tables only multiplies billable writes during zero-cache startup. if a
|
|
77
|
+
* reachable trigger cannot be understood, retain the conservative all-table
|
|
78
|
+
* fallback.
|
|
78
79
|
*/
|
|
79
80
|
export declare function snapshotSideEffectWriteTables(sql: DurableSqlStorage, txID: string, sourceTable: string): boolean;
|
|
80
81
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-journal.d.ts","sourceRoot":"","sources":["../../src/cf-do/tx-journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AACpD,eAAO,MAAM,eAAe,oBAAoB,CAAA;AAEhD,eAAO,MAAM,eAAe,QAMV,CAAA;AAElB,eAAO,MAAM,aAAa,QAQb,CAAA;AAuIb;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,SAAY,EACjB,cAAc,GAAE,MAAM,EAAO,GAC5B,IAAI,CAmDN;AAoHD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAU1E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CA8C5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,SAAY,GAChB,IAAI,CAuCN;
|
|
1
|
+
{"version":3,"file":"tx-journal.d.ts","sourceRoot":"","sources":["../../src/cf-do/tx-journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AACpD,eAAO,MAAM,eAAe,oBAAoB,CAAA;AAEhD,eAAO,MAAM,eAAe,QAMV,CAAA;AAElB,eAAO,MAAM,aAAa,QAQb,CAAA;AAuIb;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,SAAY,EACjB,cAAc,GAAE,MAAM,EAAO,GAC5B,IAAI,CAmDN;AAoHD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAU1E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CA8C5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,SAAY,GAChB,IAAI,CAuCN;AAmCD;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAyFT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,iBAAiB,EACtB,KAAK,CAAC,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACtC,MAAM,EAAE,CA8CV"}
|
package/dist/cf-do/tx-journal.js
CHANGED
|
@@ -372,38 +372,127 @@ export function upgradeToTableSnapshot(sql, txID, table, owner = 'default') {
|
|
|
372
372
|
sql.exec(`CREATE TABLE ${quoteIdent(snapshot)} AS SELECT * FROM ${quoteIdent(table)}`);
|
|
373
373
|
sql.exec(`UPDATE "${TX_MANIFEST_TABLE}" SET snapshot = ? WHERE seq = ?`, snapshot, seq);
|
|
374
374
|
}
|
|
375
|
+
const TRIGGER_WRITE = /\b(?:INSERT(?:\s+OR\s+\w+)?\s+INTO|REPLACE(?:\s+OR\s+\w+)?\s+INTO|UPDATE(?:\s+OR\s+\w+)?|DELETE\s+FROM)\s+(?:"((?:[^"]|"")+)"|`((?:[^`]|``)+)`|\[([^\]]+)\]|([A-Za-z_][\w$]*))(?:\s*\.\s*(?:"((?:[^"]|"")+)"|`((?:[^`]|``)+)`|\[([^\]]+)\]|([A-Za-z_][\w$]*)))?/i;
|
|
376
|
+
function triggerWriteTargets(sql) {
|
|
377
|
+
if (!sql)
|
|
378
|
+
return null;
|
|
379
|
+
const begin = sql.search(/\bBEGIN\b/i);
|
|
380
|
+
const end = sql.search(/\bEND\s*$/i);
|
|
381
|
+
if (begin < 0 || end < begin)
|
|
382
|
+
return null;
|
|
383
|
+
const targets = [];
|
|
384
|
+
for (const statement of sql.slice(begin + 5, end).split(';')) {
|
|
385
|
+
if (!/\b(?:INSERT|REPLACE|UPDATE|DELETE)\b/i.test(statement))
|
|
386
|
+
continue;
|
|
387
|
+
const match = TRIGGER_WRITE.exec(statement);
|
|
388
|
+
if (!match)
|
|
389
|
+
return null;
|
|
390
|
+
const target = match[5] ??
|
|
391
|
+
match[6] ??
|
|
392
|
+
match[7] ??
|
|
393
|
+
match[8] ??
|
|
394
|
+
match[1] ??
|
|
395
|
+
match[2] ??
|
|
396
|
+
match[3] ??
|
|
397
|
+
match[4];
|
|
398
|
+
if (!target)
|
|
399
|
+
return null;
|
|
400
|
+
targets.push(target.replaceAll('""', '"').replaceAll('``', '`'));
|
|
401
|
+
}
|
|
402
|
+
return targets;
|
|
403
|
+
}
|
|
404
|
+
// sqlite's built-in identifier comparison folds ASCII case only.
|
|
405
|
+
function sqliteNoCase(identifier) {
|
|
406
|
+
return identifier.replace(/[A-Z]/g, (character) => character.toLowerCase());
|
|
407
|
+
}
|
|
375
408
|
/**
|
|
376
|
-
*
|
|
377
|
-
*
|
|
378
|
-
*
|
|
379
|
-
*
|
|
380
|
-
*
|
|
409
|
+
* snapshot the source table and the transitive targets of its business
|
|
410
|
+
* triggers and cascading/SET foreign keys. trigger SQL and FK metadata name
|
|
411
|
+
* every table SQLite can mutate implicitly, so copying unrelated published
|
|
412
|
+
* tables only multiplies billable writes during zero-cache startup. if a
|
|
413
|
+
* reachable trigger cannot be understood, retain the conservative all-table
|
|
414
|
+
* fallback.
|
|
381
415
|
*/
|
|
382
416
|
export function snapshotSideEffectWriteTables(sql, txID, sourceTable) {
|
|
383
|
-
const
|
|
384
|
-
.exec("SELECT
|
|
385
|
-
|
|
386
|
-
const tables = sql
|
|
387
|
-
.exec("SELECT name FROM sqlite_master WHERE type = 'table' " +
|
|
388
|
-
"AND name NOT GLOB 'sqlite_*' AND name NOT GLOB '_orez_*' " +
|
|
389
|
-
"AND name NOT GLOB '_zero_*' AND name NOT GLOB '_cf_*' ORDER BY name")
|
|
390
|
-
.toArray()
|
|
391
|
-
.map((row) => String(row.name ?? ''))
|
|
392
|
-
.filter(Boolean);
|
|
393
|
-
const hasReferentialAction = tables.some((child) => sql
|
|
394
|
-
.exec(`PRAGMA foreign_key_list(${quoteIdent(child)})`)
|
|
417
|
+
const relations = sql
|
|
418
|
+
.exec("SELECT name, type FROM sqlite_master WHERE type IN ('table', 'view') " +
|
|
419
|
+
"AND name NOT GLOB 'sqlite_*' AND name NOT GLOB '_cf_*' ORDER BY name")
|
|
395
420
|
.toArray()
|
|
396
|
-
.
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
421
|
+
.map((row) => ({ name: String(row.name ?? ''), type: String(row.type ?? '') }))
|
|
422
|
+
.filter((relation) => relation.name);
|
|
423
|
+
const knownRelations = new Set(relations.map((relation) => sqliteNoCase(relation.name)));
|
|
424
|
+
const snapshotTables = new Map(relations
|
|
425
|
+
.filter((relation) => relation.type === 'table' &&
|
|
426
|
+
!relation.name.startsWith('_orez_') &&
|
|
427
|
+
!relation.name.startsWith('_zero_'))
|
|
428
|
+
.map((relation) => [sqliteNoCase(relation.name), relation.name]));
|
|
429
|
+
const edges = new Map();
|
|
430
|
+
const unsafeTriggerSources = new Set();
|
|
431
|
+
const addEdge = (from, to) => {
|
|
432
|
+
const fromKey = sqliteNoCase(from);
|
|
433
|
+
const targets = edges.get(fromKey) ?? new Set();
|
|
434
|
+
targets.add(sqliteNoCase(to));
|
|
435
|
+
edges.set(fromKey, targets);
|
|
436
|
+
};
|
|
437
|
+
const triggers = sql
|
|
438
|
+
.exec("SELECT tbl_name, sql FROM sqlite_master WHERE type = 'trigger' " +
|
|
439
|
+
"AND name NOT GLOB '_orez_cdc_*'")
|
|
440
|
+
.toArray();
|
|
441
|
+
for (const row of triggers) {
|
|
442
|
+
const from = String(row.tbl_name ?? '');
|
|
443
|
+
const targets = triggerWriteTargets(row.sql === null || row.sql === undefined ? null : String(row.sql));
|
|
444
|
+
if (!targets)
|
|
445
|
+
unsafeTriggerSources.add(sqliteNoCase(from));
|
|
446
|
+
else {
|
|
447
|
+
for (const target of targets) {
|
|
448
|
+
if (!knownRelations.has(sqliteNoCase(target))) {
|
|
449
|
+
unsafeTriggerSources.add(sqliteNoCase(from));
|
|
450
|
+
}
|
|
451
|
+
else {
|
|
452
|
+
addEdge(from, target);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
for (const child of relations) {
|
|
458
|
+
if (child.type !== 'table')
|
|
459
|
+
continue;
|
|
460
|
+
for (const row of sql
|
|
461
|
+
.exec(`PRAGMA foreign_key_list(${quoteIdent(child.name)})`)
|
|
462
|
+
.toArray()) {
|
|
463
|
+
const parent = String(row.table ?? '');
|
|
464
|
+
const hasAction = [row.on_update, row.on_delete].some((action) => {
|
|
465
|
+
const normalized = String(action ?? 'NO ACTION').toUpperCase();
|
|
466
|
+
return normalized !== 'NO ACTION' && normalized !== 'RESTRICT';
|
|
467
|
+
});
|
|
468
|
+
if (parent && hasAction)
|
|
469
|
+
addEdge(parent, child.name);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
const reachable = new Set();
|
|
473
|
+
const pending = [sqliteNoCase(sourceTable)];
|
|
474
|
+
let hasSideEffect = false;
|
|
475
|
+
let mustSnapshotAll = false;
|
|
476
|
+
while (pending.length > 0) {
|
|
477
|
+
const table = pending.pop();
|
|
478
|
+
if (reachable.has(table))
|
|
479
|
+
continue;
|
|
480
|
+
reachable.add(table);
|
|
481
|
+
if (unsafeTriggerSources.has(table))
|
|
482
|
+
mustSnapshotAll = true;
|
|
483
|
+
for (const target of edges.get(table) ?? []) {
|
|
484
|
+
hasSideEffect = true;
|
|
485
|
+
pending.push(target);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
if (!hasSideEffect && !mustSnapshotAll)
|
|
405
489
|
return false;
|
|
406
|
-
|
|
490
|
+
const selected = mustSnapshotAll
|
|
491
|
+
? [...snapshotTables.values()]
|
|
492
|
+
: [...reachable]
|
|
493
|
+
.map((table) => snapshotTables.get(table))
|
|
494
|
+
.filter((table) => table !== undefined);
|
|
495
|
+
for (const table of selected.sort())
|
|
407
496
|
upgradeToTableSnapshot(sql, txID, table);
|
|
408
497
|
return true;
|
|
409
498
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx-journal.js","sourceRoot":"","sources":["../../src/cf-do/tx-journal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tx-journal.js","sourceRoot":"","sources":["../../src/cf-do/tx-journal.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,8 @@ export interface BrowserProxyExternalSession {
|
|
|
50
50
|
close(): Promise<void>;
|
|
51
51
|
}
|
|
52
52
|
export declare function createBrowserProxy(dbInput: PGlite | PGliteInstances, config: {
|
|
53
|
+
debugWire?: boolean;
|
|
54
|
+
instanceId?: string;
|
|
53
55
|
pgPassword: string;
|
|
54
56
|
pgUser: string;
|
|
55
57
|
pgPort?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg-proxy-browser.d.ts","sourceRoot":"","sources":["../src/pg-proxy-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"pg-proxy-browser.d.ts","sourceRoot":"","sources":["../src/pg-proxy-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAcH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AA+nBlD;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAA;AAErE,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,qBAAqB,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,2BAA2B,CAAA;IAC/E;;;;;;;;OAQG;IACH,KAAK,CACH,MAAM,EAAE,kBAAkB,EAC1B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtD,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;CACxF;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,CACH,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtD,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAC3D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AA4CD,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,GAAG,eAAe,EACjC,MAAM,EAAE;IACN,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GACA,OAAO,CAAC,YAAY,CAAC,CA82CvB"}
|
package/dist/pg-proxy-browser.js
CHANGED
|
@@ -14,29 +14,10 @@
|
|
|
14
14
|
import { PostgresConnection } from 'pg-gateway';
|
|
15
15
|
import { log } from './log.js';
|
|
16
16
|
import { Mutex } from './mutex.js';
|
|
17
|
-
import { createReplicationFeedbackParser, handleReplicationQuery, handleStartReplication, signalReplicationChange, } from './replication/handler.js';
|
|
17
|
+
import { createReplicationFeedbackParser, handleReplicationQuery, handleStartReplication, noteConfirmedFlushLsn, signalReplicationChange, } from './replication/handler.js';
|
|
18
18
|
// shared encoder/decoder instances
|
|
19
19
|
const textEncoder = new TextEncoder();
|
|
20
20
|
const textDecoder = new TextDecoder();
|
|
21
|
-
// verbose wire-protocol logging. off by default — every postgres message hits
|
|
22
|
-
// the hot path, so unconditional console.debug calls are surprisingly expensive
|
|
23
|
-
// even when devtools is set to hide them (the interpolated strings still get
|
|
24
|
-
// built, and devtools retains them).
|
|
25
|
-
//
|
|
26
|
-
// re-evaluated on every call so you can flip it at runtime from any iframe,
|
|
27
|
-
// worker, or console without restarting. toggle via either:
|
|
28
|
-
// - env: OREZ_DEBUG_WIRE=1 (picked up at process start)
|
|
29
|
-
// - global: globalThis.__OREZ_DEBUG_WIRE__ = true (works anywhere, anytime)
|
|
30
|
-
function isDebugWire() {
|
|
31
|
-
try {
|
|
32
|
-
if (globalThis.__OREZ_DEBUG_WIRE__ === true)
|
|
33
|
-
return true;
|
|
34
|
-
if (typeof process !== 'undefined' && process.env?.OREZ_DEBUG_WIRE)
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
catch { }
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
21
|
// postgres frontend/backend message type bytes — only used for debug-wire logging
|
|
41
22
|
const PG_MSG_TYPE_NAMES = {
|
|
42
23
|
0x50: 'Parse',
|
|
@@ -109,8 +90,6 @@ function extractQueryText(data) {
|
|
|
109
90
|
}
|
|
110
91
|
return null;
|
|
111
92
|
}
|
|
112
|
-
// abort previous replication handler when a new one starts
|
|
113
|
-
let abortPreviousReplication = null;
|
|
114
93
|
// clean version string: strip emscripten compiler info that breaks pg_restore/pg_dump
|
|
115
94
|
const PG_VERSION_STRING = "'PostgreSQL 17.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 12.2.0, 64-bit'";
|
|
116
95
|
// query rewrites: make pglite look like real postgres with logical replication
|
|
@@ -552,7 +531,6 @@ function stripResponseMessages(data, stripRfq) {
|
|
|
552
531
|
* readable receives Uint8Array messages from the port.
|
|
553
532
|
* writable sends Uint8Array messages via the port.
|
|
554
533
|
*/
|
|
555
|
-
let _globalWriteCount = 0;
|
|
556
534
|
function messagePortToDuplexWithInject(port) {
|
|
557
535
|
let readController;
|
|
558
536
|
let msgCount = 0;
|
|
@@ -593,52 +571,6 @@ function messagePortToDuplexWithInject(port) {
|
|
|
593
571
|
};
|
|
594
572
|
return { duplex: { readable, writable }, rawWrite, injectMessage };
|
|
595
573
|
}
|
|
596
|
-
function messagePortToDuplex(port) {
|
|
597
|
-
let msgCount = 0;
|
|
598
|
-
const readable = new ReadableStream({
|
|
599
|
-
start(controller) {
|
|
600
|
-
port.onmessage = (ev) => {
|
|
601
|
-
msgCount++;
|
|
602
|
-
if (isDebugWire() && msgCount <= 3) {
|
|
603
|
-
console.debug(`[pg-proxy-duplex] msg#${msgCount} type=${typeof ev.data} isAB=${ev.data instanceof ArrayBuffer} isU8=${ev.data instanceof Uint8Array} len=${ev.data?.byteLength ?? ev.data?.length ?? '?'}`);
|
|
604
|
-
}
|
|
605
|
-
if (ev.data instanceof ArrayBuffer) {
|
|
606
|
-
controller.enqueue(new Uint8Array(ev.data));
|
|
607
|
-
}
|
|
608
|
-
else if (ev.data instanceof Uint8Array) {
|
|
609
|
-
controller.enqueue(ev.data);
|
|
610
|
-
}
|
|
611
|
-
else {
|
|
612
|
-
console.warn(`[pg-proxy-duplex] unexpected data type:`, typeof ev.data, ev.data);
|
|
613
|
-
}
|
|
614
|
-
};
|
|
615
|
-
},
|
|
616
|
-
cancel() {
|
|
617
|
-
port.close();
|
|
618
|
-
},
|
|
619
|
-
});
|
|
620
|
-
const writable = new WritableStream({
|
|
621
|
-
write(chunk) {
|
|
622
|
-
_globalWriteCount++;
|
|
623
|
-
if (isDebugWire() && _globalWriteCount <= 200) {
|
|
624
|
-
console.debug(`[pg-proxy-ws-write] #${_globalWriteCount} len=${chunk.byteLength}`);
|
|
625
|
-
}
|
|
626
|
-
// CF workerd MessagePort does not support transfer lists.
|
|
627
|
-
const buf = chunk.buffer.slice(chunk.byteOffset, chunk.byteOffset + chunk.byteLength);
|
|
628
|
-
port.postMessage(buf);
|
|
629
|
-
},
|
|
630
|
-
close() {
|
|
631
|
-
port.close();
|
|
632
|
-
},
|
|
633
|
-
});
|
|
634
|
-
// raw write function for injecting data outside of pg-gateway's stream
|
|
635
|
-
// (e.g. parameter status messages during onAuthenticated)
|
|
636
|
-
const rawWrite = (data) => {
|
|
637
|
-
const buf = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
|
|
638
|
-
port.postMessage(buf);
|
|
639
|
-
};
|
|
640
|
-
return { duplex: { readable, writable }, rawWrite };
|
|
641
|
-
}
|
|
642
574
|
function hasProtocolSessionFactory(db) {
|
|
643
575
|
return (typeof db.createProtocolSession === 'function');
|
|
644
576
|
}
|
|
@@ -660,6 +592,8 @@ function createConnectionContext(ctx) {
|
|
|
660
592
|
};
|
|
661
593
|
}
|
|
662
594
|
export async function createBrowserProxy(dbInput, config) {
|
|
595
|
+
const debugWire = config.debugWire === true;
|
|
596
|
+
const isDebugWire = () => debugWire;
|
|
663
597
|
// normalize input: single PGlite instance = use it for all databases (backwards compat for tests)
|
|
664
598
|
const instances = 'postgres' in dbInput
|
|
665
599
|
? dbInput
|
|
@@ -767,13 +701,30 @@ export async function createBrowserProxy(dbInput, config) {
|
|
|
767
701
|
signalPending = true;
|
|
768
702
|
queueMicrotask(() => {
|
|
769
703
|
signalPending = false;
|
|
770
|
-
signalReplicationChange();
|
|
704
|
+
signalReplicationChange(config.instanceId);
|
|
771
705
|
});
|
|
772
706
|
}
|
|
773
707
|
let closed = false;
|
|
774
708
|
let closePromise = null;
|
|
775
709
|
const activeConnectionClosers = new Set();
|
|
776
710
|
const unreportedConnectionCleanupErrors = new Set();
|
|
711
|
+
let abortPreviousReplication = null;
|
|
712
|
+
const activeReplicationTasks = new Set();
|
|
713
|
+
const replicationRuntime = {
|
|
714
|
+
replace(abort) {
|
|
715
|
+
abortPreviousReplication?.();
|
|
716
|
+
abortPreviousReplication = abort;
|
|
717
|
+
},
|
|
718
|
+
track(promise, abort, onError) {
|
|
719
|
+
let tracked;
|
|
720
|
+
tracked = promise.catch(onError).finally(() => {
|
|
721
|
+
activeReplicationTasks.delete(tracked);
|
|
722
|
+
if (abortPreviousReplication === abort)
|
|
723
|
+
abortPreviousReplication = null;
|
|
724
|
+
});
|
|
725
|
+
activeReplicationTasks.add(tracked);
|
|
726
|
+
},
|
|
727
|
+
};
|
|
777
728
|
function handleConnection(port) {
|
|
778
729
|
if (closed) {
|
|
779
730
|
port.close();
|
|
@@ -1063,9 +1014,15 @@ export async function createBrowserProxy(dbInput, config) {
|
|
|
1063
1014
|
.replace(/\0$/, '');
|
|
1064
1015
|
const upper = query.trim().toUpperCase();
|
|
1065
1016
|
if (upper.startsWith('START_REPLICATION')) {
|
|
1066
|
-
if (abortPreviousReplication)
|
|
1067
|
-
abortPreviousReplication();
|
|
1068
1017
|
let aborted = false;
|
|
1018
|
+
const abort = () => {
|
|
1019
|
+
if (aborted)
|
|
1020
|
+
return;
|
|
1021
|
+
aborted = true;
|
|
1022
|
+
connClosed = true;
|
|
1023
|
+
port.close();
|
|
1024
|
+
void closeSession();
|
|
1025
|
+
};
|
|
1069
1026
|
const writer = {
|
|
1070
1027
|
write(chunk) {
|
|
1071
1028
|
if (!connClosed && !aborted) {
|
|
@@ -1081,20 +1038,15 @@ export async function createBrowserProxy(dbInput, config) {
|
|
|
1081
1038
|
return connClosed || aborted;
|
|
1082
1039
|
},
|
|
1083
1040
|
close() {
|
|
1084
|
-
|
|
1041
|
+
abort();
|
|
1085
1042
|
},
|
|
1086
1043
|
};
|
|
1087
|
-
|
|
1088
|
-
aborted = true;
|
|
1089
|
-
connClosed = true;
|
|
1090
|
-
port.close();
|
|
1091
|
-
void closeSession();
|
|
1092
|
-
};
|
|
1044
|
+
replicationRuntime.replace(abort);
|
|
1093
1045
|
// client→server traffic on a replication connection carries
|
|
1094
1046
|
// standby status updates: the consumer's confirmed-flush LSN
|
|
1095
1047
|
// drives purging of _zero_changes (rows are retained until the
|
|
1096
1048
|
// consumer durably commits them, like real pg WAL retention).
|
|
1097
|
-
const feedbackParser = createReplicationFeedbackParser();
|
|
1049
|
+
const feedbackParser = createReplicationFeedbackParser((lsn) => noteConfirmedFlushLsn(lsn, config.instanceId));
|
|
1098
1050
|
port.onmessage = (ev) => {
|
|
1099
1051
|
const incoming = ev.data instanceof ArrayBuffer
|
|
1100
1052
|
? new Uint8Array(ev.data)
|
|
@@ -1102,7 +1054,7 @@ export async function createBrowserProxy(dbInput, config) {
|
|
|
1102
1054
|
if (incoming instanceof Uint8Array)
|
|
1103
1055
|
feedbackParser(incoming);
|
|
1104
1056
|
};
|
|
1105
|
-
handleStartReplication(query, writer, db, transactionAwareMutex(db, mutex, txState, null))
|
|
1057
|
+
replicationRuntime.track(handleStartReplication(query, writer, db, transactionAwareMutex(db, mutex, txState, null), config.instanceId), abort, () => { });
|
|
1106
1058
|
return;
|
|
1107
1059
|
}
|
|
1108
1060
|
// replication queries (IDENTIFY_SYSTEM, SET ..., CREATE/DROP SLOT).
|
|
@@ -1120,7 +1072,7 @@ export async function createBrowserProxy(dbInput, config) {
|
|
|
1120
1072
|
// open tx and commits with it.
|
|
1121
1073
|
await mutex.acquire();
|
|
1122
1074
|
try {
|
|
1123
|
-
const response = await handleReplicationQuery(query, db);
|
|
1075
|
+
const response = await handleReplicationQuery(query, db, config.instanceId);
|
|
1124
1076
|
if (response) {
|
|
1125
1077
|
write(response);
|
|
1126
1078
|
return;
|
|
@@ -1312,8 +1264,9 @@ export async function createBrowserProxy(dbInput, config) {
|
|
|
1312
1264
|
// signal writes
|
|
1313
1265
|
if (dbName === 'postgres' && msgType === 0x51) {
|
|
1314
1266
|
const qn = extractQueryText(data)?.trimStart().toLowerCase();
|
|
1315
|
-
if (qn && isWriteNormalized(qn))
|
|
1316
|
-
signalReplicationChange();
|
|
1267
|
+
if (qn && isWriteNormalized(qn)) {
|
|
1268
|
+
signalReplicationChange(config.instanceId);
|
|
1269
|
+
}
|
|
1317
1270
|
}
|
|
1318
1271
|
write(result);
|
|
1319
1272
|
}
|
|
@@ -1482,7 +1435,7 @@ export async function createBrowserProxy(dbInput, config) {
|
|
|
1482
1435
|
return handleReplicationMessageBrowser(data, rawWrite, () => connClosed, () => {
|
|
1483
1436
|
connClosed = true;
|
|
1484
1437
|
port.close();
|
|
1485
|
-
}, instances.postgres, mutexes.postgres, connection);
|
|
1438
|
+
}, instances.postgres, mutexes.postgres, connection, config.instanceId, replicationRuntime, debugWire);
|
|
1486
1439
|
}
|
|
1487
1440
|
const msgType = data[0];
|
|
1488
1441
|
const { db, mutex, txState } = getDbContext(dbName);
|
|
@@ -1645,7 +1598,7 @@ export async function createBrowserProxy(dbInput, config) {
|
|
|
1645
1598
|
result = stripResponseMessages(result, stripRfq);
|
|
1646
1599
|
// signal replication handler on postgres writes for instant sync
|
|
1647
1600
|
if (dbName === 'postgres' && queryNorm && isWriteNormalized(queryNorm)) {
|
|
1648
|
-
signalReplicationChange();
|
|
1601
|
+
signalReplicationChange(config.instanceId);
|
|
1649
1602
|
}
|
|
1650
1603
|
return result;
|
|
1651
1604
|
},
|
|
@@ -1850,12 +1803,16 @@ export async function createBrowserProxy(dbInput, config) {
|
|
|
1850
1803
|
closed = true;
|
|
1851
1804
|
signalPending = false;
|
|
1852
1805
|
closePromise = (async () => {
|
|
1806
|
+
abortPreviousReplication?.();
|
|
1807
|
+
abortPreviousReplication = null;
|
|
1808
|
+
signalReplicationChange(config.instanceId);
|
|
1853
1809
|
const results = await Promise.allSettled([...activeConnectionClosers].map((closeConnection) => Promise.resolve().then(() => closeConnection())));
|
|
1854
1810
|
const errors = new Set(unreportedConnectionCleanupErrors);
|
|
1855
1811
|
for (const result of results) {
|
|
1856
1812
|
if (result.status === 'rejected')
|
|
1857
1813
|
errors.add(result.reason);
|
|
1858
1814
|
}
|
|
1815
|
+
await Promise.all([...activeReplicationTasks]);
|
|
1859
1816
|
unreportedConnectionCleanupErrors.clear();
|
|
1860
1817
|
if (errors.size > 0) {
|
|
1861
1818
|
throw new AggregateError([...errors], 'browser proxy connection cleanup failed');
|
|
@@ -1868,19 +1825,19 @@ export async function createBrowserProxy(dbInput, config) {
|
|
|
1868
1825
|
exec: externalExec,
|
|
1869
1826
|
};
|
|
1870
1827
|
}
|
|
1871
|
-
async function handleReplicationMessageBrowser(data, rawWrite, isClosed, closeConn, db, mutex, connection) {
|
|
1872
|
-
if (
|
|
1828
|
+
async function handleReplicationMessageBrowser(data, rawWrite, isClosed, closeConn, db, mutex, connection, instanceId, replicationRuntime, debugWire) {
|
|
1829
|
+
if (debugWire) {
|
|
1873
1830
|
console.debug(`[pg-proxy-repl] ENTRY type=0x${data[0].toString(16)} len=${data.length}`);
|
|
1874
1831
|
}
|
|
1875
1832
|
// for non-SimpleQuery messages (extended protocol), execute against PGlite directly.
|
|
1876
1833
|
if (data[0] !== 0x51) {
|
|
1877
|
-
if (
|
|
1834
|
+
if (debugWire) {
|
|
1878
1835
|
console.debug(`[pg-proxy-repl] ext protocol msg type=0x${data[0].toString(16)} len=${data.length}`);
|
|
1879
1836
|
}
|
|
1880
1837
|
await mutex.acquire();
|
|
1881
1838
|
try {
|
|
1882
1839
|
const result = await db.execProtocolRaw(data, { syncToFs: false });
|
|
1883
|
-
if (
|
|
1840
|
+
if (debugWire) {
|
|
1884
1841
|
console.debug(`[pg-proxy-repl] ext protocol result len=${result.length}`);
|
|
1885
1842
|
}
|
|
1886
1843
|
return result;
|
|
@@ -1896,11 +1853,6 @@ async function handleReplicationMessageBrowser(data, rawWrite, isClosed, closeCo
|
|
|
1896
1853
|
// check if this is a START_REPLICATION command
|
|
1897
1854
|
if (upper.startsWith('START_REPLICATION')) {
|
|
1898
1855
|
await connection.detach();
|
|
1899
|
-
// abort any previous replication handler to prevent zombies
|
|
1900
|
-
if (abortPreviousReplication) {
|
|
1901
|
-
log.proxy('aborting previous replication handler');
|
|
1902
|
-
abortPreviousReplication();
|
|
1903
|
-
}
|
|
1904
1856
|
let aborted = false;
|
|
1905
1857
|
const writer = {
|
|
1906
1858
|
write(chunk) {
|
|
@@ -1922,30 +1874,32 @@ async function handleReplicationMessageBrowser(data, rawWrite, isClosed, closeCo
|
|
|
1922
1874
|
},
|
|
1923
1875
|
};
|
|
1924
1876
|
const abort = () => {
|
|
1877
|
+
if (aborted)
|
|
1878
|
+
return;
|
|
1925
1879
|
aborted = true;
|
|
1926
1880
|
closeConn();
|
|
1927
1881
|
};
|
|
1928
|
-
|
|
1929
|
-
handleStartReplication(query, writer, db, mutex)
|
|
1882
|
+
replicationRuntime.replace(abort);
|
|
1883
|
+
replicationRuntime.track(handleStartReplication(query, writer, db, mutex, instanceId), abort, (err) => {
|
|
1930
1884
|
log.proxy(`replication stream ended: ${err}`);
|
|
1931
1885
|
});
|
|
1932
1886
|
return undefined;
|
|
1933
1887
|
}
|
|
1934
1888
|
// handle replication queries + fallthrough to pglite, all under mutex
|
|
1935
|
-
if (
|
|
1889
|
+
if (debugWire) {
|
|
1936
1890
|
console.debug(`[pg-proxy-repl] query: ${query.slice(0, 100)}`);
|
|
1937
1891
|
console.debug(`[pg-proxy-repl] acquiring mutex...`);
|
|
1938
1892
|
}
|
|
1939
1893
|
await mutex.acquire();
|
|
1940
|
-
if (
|
|
1894
|
+
if (debugWire)
|
|
1941
1895
|
console.debug(`[pg-proxy-repl] mutex acquired, testing db access...`);
|
|
1942
1896
|
try {
|
|
1943
1897
|
const testResult = await db.query('SELECT 1 as test');
|
|
1944
|
-
if (
|
|
1898
|
+
if (debugWire) {
|
|
1945
1899
|
console.debug(`[pg-proxy-repl] db.query works: ${JSON.stringify(testResult.rows)}`);
|
|
1946
1900
|
}
|
|
1947
|
-
const response = await handleReplicationQuery(query, db);
|
|
1948
|
-
if (
|
|
1901
|
+
const response = await handleReplicationQuery(query, db, instanceId);
|
|
1902
|
+
if (debugWire) {
|
|
1949
1903
|
console.debug(`[pg-proxy-repl] handleReplicationQuery result: ${response ? 'bytes(' + response.length + ')' : 'null'}`);
|
|
1950
1904
|
}
|
|
1951
1905
|
if (response)
|