orez-lite 0.9.7

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 (190) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +12 -0
  3. package/dist/browser/generated/sqlite3-browser.wasm +0 -0
  4. package/dist/browser/generated/sync_wasm.js +922 -0
  5. package/dist/browser/generated/sync_wasm_bg.wasm +0 -0
  6. package/dist/browser/host.d.ts +10 -0
  7. package/dist/browser/host.d.ts.map +1 -0
  8. package/dist/browser/host.js +496 -0
  9. package/dist/browser/host.js.map +1 -0
  10. package/dist/browser/idb-snapshot.d.ts +11 -0
  11. package/dist/browser/idb-snapshot.d.ts.map +1 -0
  12. package/dist/browser/idb-snapshot.js +122 -0
  13. package/dist/browser/idb-snapshot.js.map +1 -0
  14. package/dist/browser/index.d.ts +5 -0
  15. package/dist/browser/index.d.ts.map +1 -0
  16. package/dist/browser/index.js +5 -0
  17. package/dist/browser/index.js.map +1 -0
  18. package/dist/browser/message-port.d.ts +7 -0
  19. package/dist/browser/message-port.d.ts.map +1 -0
  20. package/dist/browser/message-port.js +188 -0
  21. package/dist/browser/message-port.js.map +1 -0
  22. package/dist/browser/sqlite-adapter.d.ts +53 -0
  23. package/dist/browser/sqlite-adapter.d.ts.map +1 -0
  24. package/dist/browser/sqlite-adapter.js +126 -0
  25. package/dist/browser/sqlite-adapter.js.map +1 -0
  26. package/dist/browser/types.d.ts +52 -0
  27. package/dist/browser/types.d.ts.map +1 -0
  28. package/dist/browser/types.js +2 -0
  29. package/dist/browser/types.js.map +1 -0
  30. package/dist/cf-deploy/bundle.d.ts +18 -0
  31. package/dist/cf-deploy/bundle.d.ts.map +1 -0
  32. package/dist/cf-deploy/bundle.js +273 -0
  33. package/dist/cf-deploy/bundle.js.map +1 -0
  34. package/dist/cf-deploy/config.d.ts +12 -0
  35. package/dist/cf-deploy/config.d.ts.map +1 -0
  36. package/dist/cf-deploy/config.js +11 -0
  37. package/dist/cf-deploy/config.js.map +1 -0
  38. package/dist/cf-deploy/index.d.ts +10 -0
  39. package/dist/cf-deploy/index.d.ts.map +1 -0
  40. package/dist/cf-deploy/index.js +12 -0
  41. package/dist/cf-deploy/index.js.map +1 -0
  42. package/dist/cf-deploy/leaves.d.ts +8 -0
  43. package/dist/cf-deploy/leaves.d.ts.map +1 -0
  44. package/dist/cf-deploy/leaves.js +66 -0
  45. package/dist/cf-deploy/leaves.js.map +1 -0
  46. package/dist/cf-deploy/migration.d.ts +27 -0
  47. package/dist/cf-deploy/migration.d.ts.map +1 -0
  48. package/dist/cf-deploy/migration.js +734 -0
  49. package/dist/cf-deploy/migration.js.map +1 -0
  50. package/dist/cf-deploy/nativeMigrations.d.ts +24 -0
  51. package/dist/cf-deploy/nativeMigrations.d.ts.map +1 -0
  52. package/dist/cf-deploy/nativeMigrations.js +185 -0
  53. package/dist/cf-deploy/nativeMigrations.js.map +1 -0
  54. package/dist/cf-deploy/prune.d.ts +14 -0
  55. package/dist/cf-deploy/prune.d.ts.map +1 -0
  56. package/dist/cf-deploy/prune.js +235 -0
  57. package/dist/cf-deploy/prune.js.map +1 -0
  58. package/dist/cf-deploy/readiness.d.ts +11 -0
  59. package/dist/cf-deploy/readiness.d.ts.map +1 -0
  60. package/dist/cf-deploy/readiness.js +56 -0
  61. package/dist/cf-deploy/readiness.js.map +1 -0
  62. package/dist/cf-deploy/sources.d.ts +3 -0
  63. package/dist/cf-deploy/sources.d.ts.map +1 -0
  64. package/dist/cf-deploy/sources.js +24 -0
  65. package/dist/cf-deploy/sources.js.map +1 -0
  66. package/dist/cf-deploy/wrangler.d.ts +9 -0
  67. package/dist/cf-deploy/wrangler.d.ts.map +1 -0
  68. package/dist/cf-deploy/wrangler.js +48 -0
  69. package/dist/cf-deploy/wrangler.js.map +1 -0
  70. package/dist/cf-do/application-sql.d.ts +49 -0
  71. package/dist/cf-do/application-sql.d.ts.map +1 -0
  72. package/dist/cf-do/application-sql.js +124 -0
  73. package/dist/cf-do/application-sql.js.map +1 -0
  74. package/dist/cf-do/cdc.d.ts +155 -0
  75. package/dist/cf-do/cdc.d.ts.map +1 -0
  76. package/dist/cf-do/cdc.js +723 -0
  77. package/dist/cf-do/cdc.js.map +1 -0
  78. package/dist/cf-do/cursor-pull.d.ts +27 -0
  79. package/dist/cf-do/cursor-pull.d.ts.map +1 -0
  80. package/dist/cf-do/cursor-pull.js +78 -0
  81. package/dist/cf-do/cursor-pull.js.map +1 -0
  82. package/dist/cf-do/lite-data-worker.d.ts +171 -0
  83. package/dist/cf-do/lite-data-worker.d.ts.map +1 -0
  84. package/dist/cf-do/lite-data-worker.js +685 -0
  85. package/dist/cf-do/lite-data-worker.js.map +1 -0
  86. package/dist/cf-do/namespace-backup.d.ts +85 -0
  87. package/dist/cf-do/namespace-backup.d.ts.map +1 -0
  88. package/dist/cf-do/namespace-backup.js +470 -0
  89. package/dist/cf-do/namespace-backup.js.map +1 -0
  90. package/dist/cf-do/row-undo.d.ts +36 -0
  91. package/dist/cf-do/row-undo.d.ts.map +1 -0
  92. package/dist/cf-do/row-undo.js +221 -0
  93. package/dist/cf-do/row-undo.js.map +1 -0
  94. package/dist/cf-do/tx-journal.d.ts +118 -0
  95. package/dist/cf-do/tx-journal.d.ts.map +1 -0
  96. package/dist/cf-do/tx-journal.js +717 -0
  97. package/dist/cf-do/tx-journal.js.map +1 -0
  98. package/dist/cf-do/watermark.d.ts +29 -0
  99. package/dist/cf-do/watermark.d.ts.map +1 -0
  100. package/dist/cf-do/watermark.js +105 -0
  101. package/dist/cf-do/watermark.js.map +1 -0
  102. package/dist/cf-do/worker.d.ts +282 -0
  103. package/dist/cf-do/worker.d.ts.map +1 -0
  104. package/dist/cf-do/worker.js +1999 -0
  105. package/dist/cf-do/worker.js.map +1 -0
  106. package/dist/client.d.ts +2 -0
  107. package/dist/client.d.ts.map +1 -0
  108. package/dist/client.js +2 -0
  109. package/dist/client.js.map +1 -0
  110. package/dist/cloudflare-build.d.ts +9 -0
  111. package/dist/cloudflare-build.d.ts.map +1 -0
  112. package/dist/cloudflare-build.js +9 -0
  113. package/dist/cloudflare-build.js.map +1 -0
  114. package/dist/cloudflare-bun-wasm-loader.d.ts +2 -0
  115. package/dist/cloudflare-bun-wasm-loader.d.ts.map +1 -0
  116. package/dist/cloudflare-bun-wasm-loader.js +2 -0
  117. package/dist/cloudflare-bun-wasm-loader.js.map +1 -0
  118. package/dist/cloudflare-query-compiler.d.ts +2 -0
  119. package/dist/cloudflare-query-compiler.d.ts.map +1 -0
  120. package/dist/cloudflare-query-compiler.js +2 -0
  121. package/dist/cloudflare-query-compiler.js.map +1 -0
  122. package/dist/cloudflare-runtime.d.ts +15 -0
  123. package/dist/cloudflare-runtime.d.ts.map +1 -0
  124. package/dist/cloudflare-runtime.js +11 -0
  125. package/dist/cloudflare-runtime.js.map +1 -0
  126. package/dist/cloudflare-sync.d.ts +3 -0
  127. package/dist/cloudflare-sync.d.ts.map +1 -0
  128. package/dist/cloudflare-sync.js +3 -0
  129. package/dist/cloudflare-sync.js.map +1 -0
  130. package/dist/cloudflare-transaction-query.d.ts +2 -0
  131. package/dist/cloudflare-transaction-query.d.ts.map +1 -0
  132. package/dist/cloudflare-transaction-query.js +2 -0
  133. package/dist/cloudflare-transaction-query.js.map +1 -0
  134. package/dist/cloudflare-vite-wasm-loader.d.ts +2 -0
  135. package/dist/cloudflare-vite-wasm-loader.d.ts.map +1 -0
  136. package/dist/cloudflare-vite-wasm-loader.js +2 -0
  137. package/dist/cloudflare-vite-wasm-loader.js.map +1 -0
  138. package/dist/cloudflare.d.ts +3 -0
  139. package/dist/cloudflare.d.ts.map +1 -0
  140. package/dist/cloudflare.js +3 -0
  141. package/dist/cloudflare.js.map +1 -0
  142. package/dist/do-sql-tracking.d.ts +114 -0
  143. package/dist/do-sql-tracking.d.ts.map +1 -0
  144. package/dist/do-sql-tracking.js +280 -0
  145. package/dist/do-sql-tracking.js.map +1 -0
  146. package/dist/index.d.ts +4 -0
  147. package/dist/index.d.ts.map +1 -0
  148. package/dist/index.js +3 -0
  149. package/dist/index.js.map +1 -0
  150. package/dist/wake.d.ts +22 -0
  151. package/dist/wake.d.ts.map +1 -0
  152. package/dist/wake.js +114 -0
  153. package/dist/wake.js.map +1 -0
  154. package/dist/worker/cf-do-shim.d.ts +53 -0
  155. package/dist/worker/cf-do-shim.d.ts.map +1 -0
  156. package/dist/worker/cf-do-shim.js +66 -0
  157. package/dist/worker/cf-do-shim.js.map +1 -0
  158. package/dist/zero-http/encrypted-column-codec.d.ts +46 -0
  159. package/dist/zero-http/encrypted-column-codec.d.ts.map +1 -0
  160. package/dist/zero-http/encrypted-column-codec.js +676 -0
  161. package/dist/zero-http/encrypted-column-codec.js.map +1 -0
  162. package/dist/zero-http/encrypted-column-conformance.d.ts +7 -0
  163. package/dist/zero-http/encrypted-column-conformance.d.ts.map +1 -0
  164. package/dist/zero-http/encrypted-column-conformance.js +161 -0
  165. package/dist/zero-http/encrypted-column-conformance.js.map +1 -0
  166. package/dist/zero-http/fixture-schema.d.ts +127 -0
  167. package/dist/zero-http/fixture-schema.d.ts.map +1 -0
  168. package/dist/zero-http/fixture-schema.js +56 -0
  169. package/dist/zero-http/fixture-schema.js.map +1 -0
  170. package/dist/zero-http/mount.d.ts +71 -0
  171. package/dist/zero-http/mount.d.ts.map +1 -0
  172. package/dist/zero-http/mount.js +594 -0
  173. package/dist/zero-http/mount.js.map +1 -0
  174. package/dist/zero-http/payload-codec.d.ts +91 -0
  175. package/dist/zero-http/payload-codec.d.ts.map +1 -0
  176. package/dist/zero-http/payload-codec.js +10 -0
  177. package/dist/zero-http/payload-codec.js.map +1 -0
  178. package/dist/zero-http/server.d.ts +16 -0
  179. package/dist/zero-http/server.d.ts.map +1 -0
  180. package/dist/zero-http/server.js +270 -0
  181. package/dist/zero-http/server.js.map +1 -0
  182. package/dist/zero-http/test-harness.d.ts +32 -0
  183. package/dist/zero-http/test-harness.d.ts.map +1 -0
  184. package/dist/zero-http/test-harness.js +77 -0
  185. package/dist/zero-http/test-harness.js.map +1 -0
  186. package/dist/zero-http/transport.d.ts +71 -0
  187. package/dist/zero-http/transport.d.ts.map +1 -0
  188. package/dist/zero-http/transport.js +1106 -0
  189. package/dist/zero-http/transport.js.map +1 -0
  190. package/package.json +116 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace-backup.js","sourceRoot":"","sources":["../../src/cf-do/namespace-backup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type JournalRecord } from './cdc.js';
2
+ import type { DurableSqlStorage } from './watermark.js';
3
+ export declare const PENDING_CHANGES_TABLE = "_zero_pending_changes";
4
+ type Op = 'INSERT' | 'UPDATE' | 'DELETE';
5
+ export declare function ensurePendingChangesTable(sql: DurableSqlStorage): void;
6
+ export declare function appendPendingChange(sql: DurableSqlStorage, change: {
7
+ transactionID: string;
8
+ physicalTableName?: string;
9
+ tableName: string;
10
+ publish?: boolean;
11
+ op: Op;
12
+ rowData: Record<string, unknown> | null;
13
+ oldData: Record<string, unknown> | null;
14
+ /**
15
+ * Present only for CDC-captured writes. Their absence means the row is
16
+ * published to the changefeed but rolled back by a table snapshot, so undo
17
+ * must skip it.
18
+ */
19
+ rowJournal?: JournalRecord | null;
20
+ oldJournal?: JournalRecord | null;
21
+ newRowid?: string | null;
22
+ oldRowid?: string | null;
23
+ undoable: boolean;
24
+ }): void;
25
+ /**
26
+ * Restore row before-images in reverse statement order. Must run atomically.
27
+ *
28
+ * Every trigger on the touched tables is detached for the duration, business
29
+ * triggers included: a restore replays the inverse DML, and letting the table's
30
+ * own triggers fire on it would write side effects the original transaction
31
+ * never made.
32
+ */
33
+ export declare function rollbackPendingChanges(sql: DurableSqlStorage, transactionID: string): number;
34
+ export declare function deletePendingChanges(sql: DurableSqlStorage, transactionID: string): number;
35
+ export {};
36
+ //# sourceMappingURL=row-undo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-undo.d.ts","sourceRoot":"","sources":["../../src/cf-do/row-undo.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EAEnB,MAAM,UAAU,CAAA;AAGjB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD,eAAO,MAAM,qBAAqB,0BAA0B,CAAA;AAE5D,KAAK,EAAE,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAMxC,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CA6CtE;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE;IACN,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,EAAE,EAAE,EAAE,CAAA;IACN,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvC;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACjC,UAAU,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,OAAO,CAAA;CAClB,GACA,IAAI,CAmBN;AAyED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,aAAa,EAAE,MAAM,GACpB,MAAM,CA6HR;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,iBAAiB,EACtB,aAAa,EAAE,MAAM,GACpB,MAAM,CAQR"}
@@ -0,0 +1,221 @@
1
+ import { journalValueSqlBinding, parseJournalRecord, restoreTriggers, suspendTriggers, tableIdentity, } from './cdc.js';
2
+ import { schemaRestoreOwnsTable } from './tx-journal.js';
3
+ export const PENDING_CHANGES_TABLE = '_zero_pending_changes';
4
+ function quoteIdent(name) {
5
+ return `"${name.replace(/"/g, '""')}"`;
6
+ }
7
+ export function ensurePendingChangesTable(sql) {
8
+ sql.exec(`CREATE TABLE IF NOT EXISTS ${PENDING_CHANGES_TABLE} (` +
9
+ 'id INTEGER PRIMARY KEY AUTOINCREMENT, ' +
10
+ 'transaction_id TEXT NOT NULL, ' +
11
+ 'physical_table_name TEXT, ' +
12
+ 'table_name TEXT NOT NULL, ' +
13
+ 'publish INTEGER NOT NULL DEFAULT 1, ' +
14
+ "op TEXT NOT NULL CHECK (op IN ('INSERT', 'UPDATE', 'DELETE')), " +
15
+ 'row_data TEXT, ' +
16
+ 'old_data TEXT, ' +
17
+ 'row_journal TEXT, ' +
18
+ 'old_journal TEXT, ' +
19
+ 'new_rowid TEXT, ' +
20
+ 'old_rowid TEXT, ' +
21
+ 'undoable INTEGER NOT NULL DEFAULT 0, ' +
22
+ 'created_at INTEGER NOT NULL DEFAULT (unixepoch()))');
23
+ const columns = sql
24
+ .exec(`PRAGMA table_info(${PENDING_CHANGES_TABLE})`)
25
+ .toArray()
26
+ .map((column) => String(column.name ?? ''));
27
+ if (!columns.includes('physical_table_name')) {
28
+ sql.exec(`ALTER TABLE ${PENDING_CHANGES_TABLE} ADD COLUMN physical_table_name TEXT`);
29
+ }
30
+ if (!columns.includes('publish')) {
31
+ sql.exec(`ALTER TABLE ${PENDING_CHANGES_TABLE} ADD COLUMN publish INTEGER NOT NULL DEFAULT 1`);
32
+ }
33
+ for (const column of ['row_journal', 'old_journal', 'new_rowid', 'old_rowid']) {
34
+ if (columns.includes(column))
35
+ continue;
36
+ sql.exec(`ALTER TABLE ${PENDING_CHANGES_TABLE} ADD COLUMN ${column} TEXT`);
37
+ }
38
+ if (!columns.includes('undoable')) {
39
+ sql.exec(`ALTER TABLE ${PENDING_CHANGES_TABLE} ADD COLUMN undoable INTEGER NOT NULL DEFAULT 0`);
40
+ // Rows written before the typed journal claimed row-level undo but only
41
+ // carry the lossy Zero wire image, where a blob is indistinguishable from
42
+ // text and an int64 is already rounded. Restoring from that would corrupt
43
+ // the table, so mark them undoable and let rollback fail loudly on them
44
+ // rather than silently revive a wrong value.
45
+ sql.exec(`UPDATE ${PENDING_CHANGES_TABLE} SET undoable = 1`);
46
+ }
47
+ }
48
+ export function appendPendingChange(sql, change) {
49
+ sql.exec(`INSERT INTO ${PENDING_CHANGES_TABLE} ` +
50
+ '(transaction_id, physical_table_name, table_name, publish, op, row_data, old_data, ' +
51
+ 'row_journal, old_journal, new_rowid, old_rowid, undoable) ' +
52
+ 'VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', change.transactionID, change.physicalTableName || null, change.tableName, change.publish === false ? 0 : 1, change.op, change.rowData ? JSON.stringify(change.rowData) : null, change.oldData ? JSON.stringify(change.oldData) : null, change.rowJournal ? JSON.stringify(change.rowJournal) : null, change.oldJournal ? JSON.stringify(change.oldJournal) : null, change.newRowid ?? null, change.oldRowid ?? null, change.undoable ? 1 : 0);
53
+ }
54
+ /**
55
+ * The WHERE clause that selects exactly the row this change touched.
56
+ *
57
+ * The captured rowid is the strongest identity: it survives primary-key updates
58
+ * and tells two otherwise identical rows of a keyless table apart. WITHOUT ROWID
59
+ * tables have no rowid but always declare a primary key, so they match on that.
60
+ */
61
+ function identityWhere(identity, journal, rowid, table) {
62
+ if (identity.rowidAlias && rowid !== null) {
63
+ return {
64
+ sql: `${identity.rowidAlias} = CAST(? AS INTEGER)`,
65
+ params: [rowid],
66
+ };
67
+ }
68
+ if (identity.keyColumns.length === 0) {
69
+ throw new Error(`cdc undo: ${table} has no stable row identity (no rowid, no primary key)`);
70
+ }
71
+ const clauses = [];
72
+ const params = [];
73
+ for (const column of identity.keyColumns) {
74
+ const encoded = journal?.[column];
75
+ if (encoded === undefined) {
76
+ throw new Error(`cdc undo: ${table} before-image is missing key column ${column}`);
77
+ }
78
+ const binding = journalValueSqlBinding(encoded);
79
+ clauses.push(`${quoteIdent(column)} IS ${binding.expr}`);
80
+ params.push(...binding.params);
81
+ }
82
+ return { sql: clauses.join(' AND '), params };
83
+ }
84
+ /**
85
+ * Run one undo statement and assert it moved exactly one row. A rollback that
86
+ * silently touches zero rows (already gone) or several (a keyless duplicate
87
+ * matched by value) has corrupted the table, so fail the storage transaction
88
+ * instead of leaving the damage behind.
89
+ */
90
+ function execExactlyOneRow(sql, statement, params, context) {
91
+ const affected = sql.exec(`${statement} RETURNING 1 AS ok`, ...params).toArray().length;
92
+ if (affected !== 1) {
93
+ throw new Error(`cdc undo: ${context} matched ${affected} rows, expected exactly 1`);
94
+ }
95
+ }
96
+ function requireCompleteImage(journal, identity, table, label) {
97
+ if (!journal)
98
+ throw new Error(`cdc undo: ${table} has no ${label}`);
99
+ const missing = identity.columns.filter((column) => journal[column] === undefined);
100
+ if (missing.length > 0) {
101
+ throw new Error(`cdc undo: ${table} ${label} is missing column(s): ${missing.join(', ')}`);
102
+ }
103
+ }
104
+ /**
105
+ * Restore row before-images in reverse statement order. Must run atomically.
106
+ *
107
+ * Every trigger on the touched tables is detached for the duration, business
108
+ * triggers included: a restore replays the inverse DML, and letting the table's
109
+ * own triggers fire on it would write side effects the original transaction
110
+ * never made.
111
+ */
112
+ export function rollbackPendingChanges(sql, transactionID) {
113
+ ensurePendingChangesTable(sql);
114
+ const rows = sql
115
+ .exec(`SELECT physical_table_name, op, row_journal, old_journal, new_rowid, old_rowid
116
+ FROM ${PENDING_CHANGES_TABLE}
117
+ WHERE transaction_id = ? AND physical_table_name IS NOT NULL AND undoable != 0
118
+ ORDER BY id DESC`, transactionID)
119
+ .toArray();
120
+ const tables = rows.map((row) => String(row.physical_table_name ?? '')).filter(Boolean);
121
+ const suspended = suspendTriggers(sql, tables);
122
+ const identities = new Map();
123
+ const schemaOwned = new Map();
124
+ try {
125
+ for (const row of rows) {
126
+ const table = String(row.physical_table_name);
127
+ const op = String(row.op);
128
+ const next = parseJournalRecord(row.row_journal);
129
+ const old = parseJournalRecord(row.old_journal);
130
+ const newRowid = row.new_rowid == null ? null : String(row.new_rowid);
131
+ const oldRowid = row.old_rowid == null ? null : String(row.old_rowid);
132
+ // a table created, dropped, or rebuilt by in-tx transactional DDL needs
133
+ // no row undo: the schema rollback (restoreSchemaSnapshot) rebuilds it
134
+ // wholesale from its pre-tx snapshot, and undoing rows against a
135
+ // dropped or reshaped table throws (which used to wedge recovery — and
136
+ // the namespace — permanently).
137
+ if (!schemaOwned.has(table)) {
138
+ schemaOwned.set(table, schemaRestoreOwnsTable(sql, transactionID, table));
139
+ }
140
+ if (schemaOwned.get(table))
141
+ continue;
142
+ if (!identities.has(table))
143
+ identities.set(table, tableIdentity(sql, table));
144
+ const identity = identities.get(table);
145
+ if (!identity) {
146
+ throw new Error(`cdc undo: ${table} has no stable row identity, so its rows cannot be restored`);
147
+ }
148
+ // Every undoable row is written with its before-image in the same SQLite
149
+ // statement as the write itself. A missing one means the row predates the
150
+ // typed journal, and its lossy wire image would restore the wrong value.
151
+ // Fail the whole rollback rather than let a write survive it.
152
+ if ((op === 'INSERT' && !next && newRowid === null) || (op !== 'INSERT' && !old)) {
153
+ throw new Error(`cdc undo: ${op} on ${table} has no usable before-image, so the transaction ` +
154
+ `cannot be rolled back (pending row predates the typed journal)`);
155
+ }
156
+ if (op === 'INSERT' || op === 'UPDATE') {
157
+ requireCompleteImage(next, identity, table, 'new image');
158
+ }
159
+ if (op === 'DELETE' || op === 'UPDATE') {
160
+ requireCompleteImage(old, identity, table, 'old image');
161
+ }
162
+ if (op === 'INSERT') {
163
+ const where = identityWhere(identity, next, newRowid, table);
164
+ execExactlyOneRow(sql, `DELETE FROM ${quoteIdent(table)} WHERE ${where.sql}`, where.params, `INSERT undo on ${table}`);
165
+ continue;
166
+ }
167
+ if (op === 'DELETE') {
168
+ const oldImage = old;
169
+ const columns = [];
170
+ const values = [];
171
+ const params = [];
172
+ for (const column of identity.writableColumns) {
173
+ const encoded = oldImage[column];
174
+ const binding = journalValueSqlBinding(encoded);
175
+ columns.push(quoteIdent(column));
176
+ values.push(binding.expr);
177
+ params.push(...binding.params);
178
+ }
179
+ // Restore the original rowid too, so any earlier change in this
180
+ // transaction that identified a row by rowid still resolves. When the
181
+ // table has an INTEGER PRIMARY KEY that column already is the rowid.
182
+ if (identity.rowidAlias && !identity.rowidColumn && oldRowid !== null) {
183
+ columns.push(identity.rowidAlias);
184
+ values.push('CAST(? AS INTEGER)');
185
+ params.push(oldRowid);
186
+ }
187
+ if (columns.length === 0) {
188
+ throw new Error(`cdc undo: DELETE on ${table} has no writable columns`);
189
+ }
190
+ execExactlyOneRow(sql, `INSERT INTO ${quoteIdent(table)} (${columns.join(', ')}) VALUES (${values.join(', ')})`, params, `DELETE undo on ${table}`);
191
+ continue;
192
+ }
193
+ const assignments = [];
194
+ const params = [];
195
+ const oldImage = old;
196
+ for (const column of identity.writableColumns) {
197
+ const encoded = oldImage[column];
198
+ const binding = journalValueSqlBinding(encoded);
199
+ assignments.push(`${quoteIdent(column)} = ${binding.expr}`);
200
+ params.push(...binding.params);
201
+ }
202
+ if (assignments.length === 0) {
203
+ throw new Error(`cdc undo: UPDATE on ${table} has no writable columns`);
204
+ }
205
+ const where = identityWhere(identity, next, newRowid, table);
206
+ params.push(...where.params);
207
+ execExactlyOneRow(sql, `UPDATE ${quoteIdent(table)} SET ${assignments.join(', ')} WHERE ${where.sql}`, params, `UPDATE undo on ${table}`);
208
+ }
209
+ }
210
+ finally {
211
+ restoreTriggers(sql, suspended);
212
+ }
213
+ return rows.length;
214
+ }
215
+ export function deletePendingChanges(sql, transactionID) {
216
+ ensurePendingChangesTable(sql);
217
+ return sql
218
+ .exec(`DELETE FROM ${PENDING_CHANGES_TABLE} WHERE transaction_id = ? RETURNING 1 AS deleted`, transactionID)
219
+ .toArray().length;
220
+ }
221
+ //# sourceMappingURL=row-undo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-undo.js","sourceRoot":"","sources":["../../src/cf-do/row-undo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * durable transaction journal for the DO SQL backend.
3
+ *
4
+ * Durable Object RPC transactions apply writes eagerly. Parsed DML is rolled back from the
5
+ * CDC row before-images captured by the same SQLite statement; unknown writes
6
+ * fall back to a first-write table snapshot (`_orez_tx_<txID>_*`). Before this
7
+ * journal, the rollback bookkeeping lived only in the client's memory: a DO eviction or
8
+ * deploy upgrade-kill mid-transaction persisted the partial writes forever
9
+ * (the 2026-06 poisoned cdc changeLog incident — zero's catchup replays
10
+ * begin→data→begin and the replicator wedges permanently).
11
+ *
12
+ * the journal makes the snapshot bookkeeping durable and the commit point
13
+ * atomic:
14
+ *
15
+ * - every row-journal marker or fallback snapshot is recorded in
16
+ * `_orez_tx_manifest` atomically with its rollback state.
17
+ * - COMMIT = one atomic storage transaction that drops rollback state and
18
+ * deletes the manifest rows (plus promoting pending tracked changes in
19
+ * ZeroDO). a tx is committed if and only if its manifest rows are gone.
20
+ * - ROLLBACK = one atomic storage transaction that restores row before-images
21
+ * plus any fallback table snapshots (in reverse order).
22
+ * - RECOVERY (`recoverTxJournal`) rolls back every manifest tx for an
23
+ * owner whose process generation is known dead (e.g. the zero-cache
24
+ * embed at boot, before it opens any pg session), so a partial tx is
25
+ * invisible on the next boot.
26
+ *
27
+ * all functions are synchronous over a minimal sql-exec interface so the
28
+ * same core runs inside ZeroDO's ctx.storage.transaction() and inside the
29
+ * embed-local backend's transactionSync().
30
+ */
31
+ import type { DurableSqlStorage } from './watermark.js';
32
+ export declare const TX_MANIFEST_TABLE = "_orez_tx_manifest";
33
+ export declare const TX_SCHEMA_TABLE = "_orez_tx_schema";
34
+ export declare const TX_MANIFEST_DDL: string;
35
+ export declare const TX_SCHEMA_DDL: string;
36
+ /**
37
+ * true when restoreSchemaSnapshot will rebuild `table` during the rollback of
38
+ * `txID`: the tx recorded a transactional-DDL schema marker and the table was
39
+ * created, dropped, or DDL-changed since the schema snapshot. row-level undo
40
+ * consults this to skip such tables — their pre-tx content comes back
41
+ * wholesale from the table snapshot, and undoing rows against a dropped or
42
+ * rebuilt table either throws or targets the wrong shape. before this,
43
+ * recovery of a tx killed mid table rebuild threw on every boot and wedged
44
+ * the namespace permanently (2026-07-24 prod fresh-project incident).
45
+ */
46
+ export declare function schemaRestoreOwnsTable(sql: DurableSqlStorage, txID: string, table: string): boolean;
47
+ /**
48
+ * Capture the application schema before the first DDL statement and the data
49
+ * of each table that a later DDL statement can destructively change. SQLite
50
+ * can transact DDL, but the DO protocol spans requests, so rollback needs an
51
+ * explicit durable image. The caller must wrap this in one storage transaction.
52
+ */
53
+ export declare function snapshotTxSchema(sql: DurableSqlStorage, txID: string, owner?: string, affectedTables?: string[]): void;
54
+ /** persist one cheap recovery marker only when a transaction first mutates data. */
55
+ export declare function beginTxJournal(sql: DurableSqlStorage, txID: string, owner?: string): void;
56
+ /**
57
+ * commit a journaled transaction: drop its snapshot tables and delete its
58
+ * manifest rows. the data writes were applied eagerly during the tx, so once
59
+ * the manifest rows are gone the tx is durably committed. must run inside an
60
+ * atomic storage transaction.
61
+ */
62
+ export declare function commitTxJournal(sql: DurableSqlStorage, txID: string): void;
63
+ /**
64
+ * roll back a journaled transaction: restore every snapshotted table to its
65
+ * pre-tx contents (parents before children), drop tables that did not exist at
66
+ * first write (null snapshot), then clean up. triggers on restored tables are
67
+ * detached during the restore and re-created after, so restore DML doesn't
68
+ * re-fire change tracking. must run inside an atomic storage transaction.
69
+ */
70
+ export declare function rollbackTxJournal(sql: DurableSqlStorage, txID: string): void;
71
+ /**
72
+ * Point a transaction's journal entry for `table` at a real table snapshot.
73
+ *
74
+ * The transaction owner marks a parsed write row-journaled (an empty snapshot) before the
75
+ * DO has said whether it can capture that table. When CDC declines it, because
76
+ * the table has no stable row identity, that empty marker promises a row-level
77
+ * rollback nothing is able to perform. The owner therefore copies the table and
78
+ * rewrites the marker in the same storage transaction as the write, which puts
79
+ * the transaction back on the snapshot path recovery already knows how to
80
+ * replay. Safe to call repeatedly: only the first write to a table in a
81
+ * transaction takes the copy.
82
+ */
83
+ export declare function upgradeToTableSnapshot(sql: DurableSqlStorage, txID: string, table: string, owner?: string): void;
84
+ /** The operation a tracked statement performs on its own table. */
85
+ export type TrackedOperation = 'INSERT' | 'UPDATE' | 'DELETE' | 'UPSERT';
86
+ /**
87
+ * snapshot the source table and the transitive targets of its business
88
+ * triggers and cascading/SET foreign keys. trigger SQL and FK metadata name
89
+ * every table SQLite can mutate implicitly, so copying unrelated published
90
+ * tables only multiplies billable writes during zero-cache startup. if a
91
+ * reachable trigger cannot be understood, retain the conservative all-table
92
+ * fallback.
93
+ *
94
+ * reachability is per (table, operation), because SQLite fires implicit writes
95
+ * per operation: `ON DELETE CASCADE` only fires when the parent row is deleted,
96
+ * and `AFTER DELETE` triggers only fire on a delete. discovering side effects
97
+ * from the table alone made every UPDATE pay for its children's delete
98
+ * cascades. soot's five-second `sootAgent.runtimeClaimExpiresAt` renewal copied
99
+ * the whole `agentEvent` table on each beat purely because `agentEvent`
100
+ * references `sootAgent` `ON DELETE CASCADE`: 35 billable rows with an empty
101
+ * event table, 1,035 with 1,000 retained events, and the rolling write budget
102
+ * tripped from heartbeats alone once the table grew.
103
+ */
104
+ export declare function snapshotSideEffectWriteTables(sql: DurableSqlStorage, txID: string, sourceTable: string, operation: TrackedOperation): boolean;
105
+ /**
106
+ * roll back every journaled transaction belonging to `owner` (or every
107
+ * transaction when owner is undefined), and sweep `_orez_tx_*` snapshot
108
+ * tables no manifest row references (leftovers from pre-journal code).
109
+ *
110
+ * callers must guarantee none of the matched transactions can still be live
111
+ * — i.e. the owning process generation is dead (embed boot before opening pg
112
+ * sessions, or a store whose only client lives in the same isolate).
113
+ *
114
+ * returns the recovered transaction ids so callers can clean up associated
115
+ * state (e.g. pending tracked changes).
116
+ */
117
+ export declare function recoverTxJournal(sql: DurableSqlStorage, owner?: string, beforeRollback?: (txID: string) => void): string[];
118
+ //# sourceMappingURL=tx-journal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-journal.d.ts","sourceRoot":"","sources":["../../src/cf-do/tx-journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;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;AAsJb;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,OAAO,CAoBT;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,SAAY,EACjB,cAAc,GAAE,MAAM,EAAO,GAC5B,IAAI,CAuDN;AAyDD,oFAAoF;AACpF,wBAAgB,cAAc,CAC5B,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,SAAY,GAChB,IAAI,CAUN;AAkKD;;;;;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,CAgE5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,SAAY,GAChB,IAAI,CAuCN;AAmCD,mEAAmE;AACnE,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAmBxE;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,gBAAgB,GAC1B,OAAO,CAiHT;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"}