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.
Files changed (77) hide show
  1. package/dist/cf-do/tx-journal.d.ts +6 -5
  2. package/dist/cf-do/tx-journal.d.ts.map +1 -1
  3. package/dist/cf-do/tx-journal.js +116 -27
  4. package/dist/cf-do/tx-journal.js.map +1 -1
  5. package/dist/pg-proxy-browser.d.ts +2 -0
  6. package/dist/pg-proxy-browser.d.ts.map +1 -1
  7. package/dist/pg-proxy-browser.js +56 -102
  8. package/dist/pg-proxy-browser.js.map +1 -1
  9. package/dist/pg-proxy-do-backend.d.ts +8 -0
  10. package/dist/pg-proxy-do-backend.d.ts.map +1 -1
  11. package/dist/pg-proxy-do-backend.js +27 -9
  12. package/dist/pg-proxy-do-backend.js.map +1 -1
  13. package/dist/pg-sqlite-compiler/compiler.d.ts +17 -0
  14. package/dist/pg-sqlite-compiler/compiler.d.ts.map +1 -0
  15. package/dist/pg-sqlite-compiler/compiler.js +80 -0
  16. package/dist/pg-sqlite-compiler/compiler.js.map +1 -0
  17. package/dist/pg-sqlite-compiler/index.d.ts +1 -16
  18. package/dist/pg-sqlite-compiler/index.d.ts.map +1 -1
  19. package/dist/pg-sqlite-compiler/index.js +2 -79
  20. package/dist/pg-sqlite-compiler/index.js.map +1 -1
  21. package/dist/replication/handler.d.ts +8 -7
  22. package/dist/replication/handler.d.ts.map +1 -1
  23. package/dist/replication/handler.js +147 -116
  24. package/dist/replication/handler.js.map +1 -1
  25. package/dist/worker/browser-build-config.d.ts.map +1 -1
  26. package/dist/worker/browser-build-config.js +1 -0
  27. package/dist/worker/browser-build-config.js.map +1 -1
  28. package/dist/worker/browser-embed.d.ts +3 -2
  29. package/dist/worker/browser-embed.d.ts.map +1 -1
  30. package/dist/worker/browser-embed.js +187 -150
  31. package/dist/worker/browser-embed.js.map +1 -1
  32. package/dist/worker/cf-instance-runtime.d.ts +62 -0
  33. package/dist/worker/cf-instance-runtime.d.ts.map +1 -0
  34. package/dist/worker/cf-instance-runtime.js +260 -0
  35. package/dist/worker/cf-instance-runtime.js.map +1 -0
  36. package/dist/worker/cf-patches.d.ts +9 -6
  37. package/dist/worker/cf-patches.d.ts.map +1 -1
  38. package/dist/worker/cf-patches.js +117 -60
  39. package/dist/worker/cf-patches.js.map +1 -1
  40. package/dist/worker/durable-object-websocket-handoff.d.ts +2 -0
  41. package/dist/worker/durable-object-websocket-handoff.d.ts.map +1 -1
  42. package/dist/worker/durable-object-websocket-handoff.js +22 -41
  43. package/dist/worker/durable-object-websocket-handoff.js.map +1 -1
  44. package/dist/worker/embed-generation.d.ts +9 -6
  45. package/dist/worker/embed-generation.d.ts.map +1 -1
  46. package/dist/worker/embed-generation.js +27 -6
  47. package/dist/worker/embed-generation.js.map +1 -1
  48. package/dist/worker/shims/fastify-websocket.d.ts +3 -0
  49. package/dist/worker/shims/fastify-websocket.d.ts.map +1 -0
  50. package/dist/worker/shims/fastify-websocket.js +3 -0
  51. package/dist/worker/shims/fastify-websocket.js.map +1 -0
  52. package/dist/worker/shims/fastify.d.ts +2 -10
  53. package/dist/worker/shims/fastify.d.ts.map +1 -1
  54. package/dist/worker/shims/fastify.js +14 -21
  55. package/dist/worker/shims/fastify.js.map +1 -1
  56. package/dist/worker/shims/postgres-browser.d.ts +1 -1
  57. package/dist/worker/shims/postgres-browser.d.ts.map +1 -1
  58. package/dist/worker/shims/postgres-browser.js +29 -20
  59. package/dist/worker/shims/postgres-browser.js.map +1 -1
  60. package/dist/worker/shims/sqlite-browser.d.ts +2 -3
  61. package/dist/worker/shims/sqlite-browser.d.ts.map +1 -1
  62. package/dist/worker/shims/sqlite-browser.js +2 -3
  63. package/dist/worker/shims/sqlite-browser.js.map +1 -1
  64. package/dist/worker/shims/sqlite.d.ts.map +1 -1
  65. package/dist/worker/shims/sqlite.js +56 -35
  66. package/dist/worker/shims/sqlite.js.map +1 -1
  67. package/dist/worker/shims/ws.d.ts.map +1 -1
  68. package/dist/worker/shims/ws.js +54 -39
  69. package/dist/worker/shims/ws.js.map +1 -1
  70. package/dist/worker/shims/zero-process-env.d.ts.map +1 -1
  71. package/dist/worker/shims/zero-process-env.js +25 -4
  72. package/dist/worker/shims/zero-process-env.js.map +1 -1
  73. package/dist/worker/zero-cache-embed-cf.d.ts +5 -1
  74. package/dist/worker/zero-cache-embed-cf.d.ts.map +1 -1
  75. package/dist/worker/zero-cache-embed-cf.js +105 -137
  76. package/dist/worker/zero-cache-embed-cf.js.map +1 -1
  77. 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
- * Snapshot every user table before a statement whose source table has a
74
- * business trigger or is the parent of a cascading/SET foreign-key action.
75
- * Those effects can reach unregistered tables, and SQLite's trigger staging
76
- * order is not causal DML order. This conservative fallback is paid only by
77
- * side-effecting writes and makes table snapshots authoritative for them.
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;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAiCT;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"}
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"}
@@ -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
- * Snapshot every user table before a statement whose source table has a
377
- * business trigger or is the parent of a cascading/SET foreign-key action.
378
- * Those effects can reach unregistered tables, and SQLite's trigger staging
379
- * order is not causal DML order. This conservative fallback is paid only by
380
- * side-effecting writes and makes table snapshots authoritative for them.
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 hasBusinessTrigger = sql
384
- .exec("SELECT 1 AS ok FROM sqlite_master WHERE type = 'trigger' AND tbl_name = ? AND name NOT GLOB '_orez_cdc_*' LIMIT 1", sourceTable)
385
- .toArray().length > 0;
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
- .some((row) => {
397
- if (String(row.table ?? '') !== sourceTable)
398
- return false;
399
- return [row.on_update, row.on_delete].some((action) => {
400
- const normalized = String(action ?? 'NO ACTION').toUpperCase();
401
- return normalized !== 'NO ACTION' && normalized !== 'RESTRICT';
402
- });
403
- }));
404
- if (!hasBusinessTrigger && !hasReferentialAction)
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
- for (const table of tables)
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;AAaH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AA+sBlD;;;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,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,CA20CvB"}
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"}
@@ -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
- abortPreviousReplication?.();
1041
+ abort();
1085
1042
  },
1086
1043
  };
1087
- abortPreviousReplication = () => {
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)).catch(() => { });
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 (isDebugWire()) {
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 (isDebugWire()) {
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 (isDebugWire()) {
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
- abortPreviousReplication = abort;
1929
- handleStartReplication(query, writer, db, mutex).catch((err) => {
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 (isDebugWire()) {
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 (isDebugWire())
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 (isDebugWire()) {
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 (isDebugWire()) {
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)