orez 0.9.7 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/README.md +27 -19
  2. package/dist/config.d.ts +0 -4
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +0 -1
  5. package/dist/config.js.map +1 -1
  6. package/dist/index.d.ts +0 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +5 -43
  9. package/dist/index.js.map +1 -1
  10. package/package.json +7 -71
  11. package/dist/cf-deploy/bundle.d.ts +0 -21
  12. package/dist/cf-deploy/bundle.d.ts.map +0 -1
  13. package/dist/cf-deploy/bundle.js +0 -347
  14. package/dist/cf-deploy/bundle.js.map +0 -1
  15. package/dist/cf-deploy/config.d.ts +0 -52
  16. package/dist/cf-deploy/config.d.ts.map +0 -1
  17. package/dist/cf-deploy/config.js +0 -23
  18. package/dist/cf-deploy/config.js.map +0 -1
  19. package/dist/cf-deploy/index.d.ts +0 -11
  20. package/dist/cf-deploy/index.d.ts.map +0 -1
  21. package/dist/cf-deploy/index.js +0 -17
  22. package/dist/cf-deploy/index.js.map +0 -1
  23. package/dist/cf-deploy/leaves.d.ts +0 -19
  24. package/dist/cf-deploy/leaves.d.ts.map +0 -1
  25. package/dist/cf-deploy/leaves.js +0 -109
  26. package/dist/cf-deploy/leaves.js.map +0 -1
  27. package/dist/cf-deploy/migration.d.ts +0 -40
  28. package/dist/cf-deploy/migration.d.ts.map +0 -1
  29. package/dist/cf-deploy/migration.js +0 -891
  30. package/dist/cf-deploy/migration.js.map +0 -1
  31. package/dist/cf-deploy/nativeMigrations.d.ts +0 -24
  32. package/dist/cf-deploy/nativeMigrations.d.ts.map +0 -1
  33. package/dist/cf-deploy/nativeMigrations.js +0 -185
  34. package/dist/cf-deploy/nativeMigrations.js.map +0 -1
  35. package/dist/cf-deploy/prune.d.ts +0 -14
  36. package/dist/cf-deploy/prune.d.ts.map +0 -1
  37. package/dist/cf-deploy/prune.js +0 -235
  38. package/dist/cf-deploy/prune.js.map +0 -1
  39. package/dist/cf-deploy/shims.d.ts +0 -13
  40. package/dist/cf-deploy/shims.d.ts.map +0 -1
  41. package/dist/cf-deploy/shims.js +0 -737
  42. package/dist/cf-deploy/shims.js.map +0 -1
  43. package/dist/cf-deploy/smoke.d.ts +0 -15
  44. package/dist/cf-deploy/smoke.d.ts.map +0 -1
  45. package/dist/cf-deploy/smoke.js +0 -141
  46. package/dist/cf-deploy/smoke.js.map +0 -1
  47. package/dist/cf-deploy/sources.d.ts +0 -9
  48. package/dist/cf-deploy/sources.d.ts.map +0 -1
  49. package/dist/cf-deploy/sources.js +0 -276
  50. package/dist/cf-deploy/sources.js.map +0 -1
  51. package/dist/cf-deploy/wrangler.d.ts +0 -6
  52. package/dist/cf-deploy/wrangler.d.ts.map +0 -1
  53. package/dist/cf-deploy/wrangler.js +0 -168
  54. package/dist/cf-deploy/wrangler.js.map +0 -1
  55. package/dist/cf-do/application-sql.d.ts +0 -49
  56. package/dist/cf-do/application-sql.d.ts.map +0 -1
  57. package/dist/cf-do/application-sql.js +0 -124
  58. package/dist/cf-do/application-sql.js.map +0 -1
  59. package/dist/cf-do/cdc.d.ts +0 -155
  60. package/dist/cf-do/cdc.d.ts.map +0 -1
  61. package/dist/cf-do/cdc.js +0 -719
  62. package/dist/cf-do/cdc.js.map +0 -1
  63. package/dist/cf-do/cursor-pull.d.ts +0 -27
  64. package/dist/cf-do/cursor-pull.d.ts.map +0 -1
  65. package/dist/cf-do/cursor-pull.js +0 -78
  66. package/dist/cf-do/cursor-pull.js.map +0 -1
  67. package/dist/cf-do/row-undo.d.ts +0 -36
  68. package/dist/cf-do/row-undo.d.ts.map +0 -1
  69. package/dist/cf-do/row-undo.js +0 -221
  70. package/dist/cf-do/row-undo.js.map +0 -1
  71. package/dist/cf-do/tx-journal.d.ts +0 -119
  72. package/dist/cf-do/tx-journal.d.ts.map +0 -1
  73. package/dist/cf-do/tx-journal.js +0 -718
  74. package/dist/cf-do/tx-journal.js.map +0 -1
  75. package/dist/cf-do/watermark.d.ts +0 -29
  76. package/dist/cf-do/watermark.d.ts.map +0 -1
  77. package/dist/cf-do/watermark.js +0 -105
  78. package/dist/cf-do/watermark.js.map +0 -1
  79. package/dist/cf-do/worker.d.ts +0 -287
  80. package/dist/cf-do/worker.d.ts.map +0 -1
  81. package/dist/cf-do/worker.js +0 -1961
  82. package/dist/cf-do/worker.js.map +0 -1
  83. package/dist/do-sql-tracking.d.ts +0 -104
  84. package/dist/do-sql-tracking.d.ts.map +0 -1
  85. package/dist/do-sql-tracking.js +0 -255
  86. package/dist/do-sql-tracking.js.map +0 -1
  87. package/dist/pg-proxy-do-backend.d.ts +0 -211
  88. package/dist/pg-proxy-do-backend.d.ts.map +0 -1
  89. package/dist/pg-proxy-do-backend.js +0 -7884
  90. package/dist/pg-proxy-do-backend.js.map +0 -1
  91. package/dist/pg-sqlite-compiler/catalog/seed.d.ts +0 -67
  92. package/dist/pg-sqlite-compiler/catalog/seed.d.ts.map +0 -1
  93. package/dist/pg-sqlite-compiler/catalog/seed.js +0 -436
  94. package/dist/pg-sqlite-compiler/catalog/seed.js.map +0 -1
  95. package/dist/pg-sqlite-compiler/compiler.d.ts +0 -17
  96. package/dist/pg-sqlite-compiler/compiler.d.ts.map +0 -1
  97. package/dist/pg-sqlite-compiler/compiler.js +0 -86
  98. package/dist/pg-sqlite-compiler/compiler.js.map +0 -1
  99. package/dist/pg-sqlite-compiler/index.d.ts +0 -2
  100. package/dist/pg-sqlite-compiler/index.d.ts.map +0 -1
  101. package/dist/pg-sqlite-compiler/index.js +0 -13
  102. package/dist/pg-sqlite-compiler/index.js.map +0 -1
  103. package/dist/pg-sqlite-compiler/passes/array.d.ts +0 -3
  104. package/dist/pg-sqlite-compiler/passes/array.d.ts.map +0 -1
  105. package/dist/pg-sqlite-compiler/passes/array.js +0 -223
  106. package/dist/pg-sqlite-compiler/passes/array.js.map +0 -1
  107. package/dist/pg-sqlite-compiler/passes/ast-utils.d.ts +0 -48
  108. package/dist/pg-sqlite-compiler/passes/ast-utils.d.ts.map +0 -1
  109. package/dist/pg-sqlite-compiler/passes/ast-utils.js +0 -93
  110. package/dist/pg-sqlite-compiler/passes/ast-utils.js.map +0 -1
  111. package/dist/pg-sqlite-compiler/passes/catalog.d.ts +0 -34
  112. package/dist/pg-sqlite-compiler/passes/catalog.d.ts.map +0 -1
  113. package/dist/pg-sqlite-compiler/passes/catalog.js +0 -30
  114. package/dist/pg-sqlite-compiler/passes/catalog.js.map +0 -1
  115. package/dist/pg-sqlite-compiler/passes/datetime.d.ts +0 -23
  116. package/dist/pg-sqlite-compiler/passes/datetime.d.ts.map +0 -1
  117. package/dist/pg-sqlite-compiler/passes/datetime.js +0 -55
  118. package/dist/pg-sqlite-compiler/passes/datetime.js.map +0 -1
  119. package/dist/pg-sqlite-compiler/passes/dml-cte.d.ts +0 -22
  120. package/dist/pg-sqlite-compiler/passes/dml-cte.d.ts.map +0 -1
  121. package/dist/pg-sqlite-compiler/passes/dml-cte.js +0 -161
  122. package/dist/pg-sqlite-compiler/passes/dml-cte.js.map +0 -1
  123. package/dist/pg-sqlite-compiler/passes/index.d.ts +0 -24
  124. package/dist/pg-sqlite-compiler/passes/index.d.ts.map +0 -1
  125. package/dist/pg-sqlite-compiler/passes/index.js +0 -52
  126. package/dist/pg-sqlite-compiler/passes/index.js.map +0 -1
  127. package/dist/pg-sqlite-compiler/passes/json-functions.d.ts +0 -3
  128. package/dist/pg-sqlite-compiler/passes/json-functions.d.ts.map +0 -1
  129. package/dist/pg-sqlite-compiler/passes/json-functions.js +0 -57
  130. package/dist/pg-sqlite-compiler/passes/json-functions.js.map +0 -1
  131. package/dist/pg-sqlite-compiler/passes/row-json.d.ts +0 -3
  132. package/dist/pg-sqlite-compiler/passes/row-json.d.ts.map +0 -1
  133. package/dist/pg-sqlite-compiler/passes/row-json.js +0 -230
  134. package/dist/pg-sqlite-compiler/passes/row-json.js.map +0 -1
  135. package/dist/pg-sqlite-compiler/passes/schema.d.ts +0 -4
  136. package/dist/pg-sqlite-compiler/passes/schema.d.ts.map +0 -1
  137. package/dist/pg-sqlite-compiler/passes/schema.js +0 -128
  138. package/dist/pg-sqlite-compiler/passes/schema.js.map +0 -1
  139. package/dist/pg-sqlite-compiler/passes/string-functions.d.ts +0 -11
  140. package/dist/pg-sqlite-compiler/passes/string-functions.d.ts.map +0 -1
  141. package/dist/pg-sqlite-compiler/passes/string-functions.js +0 -37
  142. package/dist/pg-sqlite-compiler/passes/string-functions.js.map +0 -1
  143. package/dist/pg-sqlite-compiler/passes/types.d.ts +0 -41
  144. package/dist/pg-sqlite-compiler/passes/types.d.ts.map +0 -1
  145. package/dist/pg-sqlite-compiler/passes/types.js +0 -115
  146. package/dist/pg-sqlite-compiler/passes/types.js.map +0 -1
  147. package/dist/pg-sqlite-compiler/passes/unsupported.d.ts +0 -3
  148. package/dist/pg-sqlite-compiler/passes/unsupported.d.ts.map +0 -1
  149. package/dist/pg-sqlite-compiler/passes/unsupported.js +0 -57
  150. package/dist/pg-sqlite-compiler/passes/unsupported.js.map +0 -1
  151. package/dist/pg-sqlite-compiler/test/oracle.d.ts +0 -34
  152. package/dist/pg-sqlite-compiler/test/oracle.d.ts.map +0 -1
  153. package/dist/pg-sqlite-compiler/test/oracle.js +0 -204
  154. package/dist/pg-sqlite-compiler/test/oracle.js.map +0 -1
  155. package/dist/pg-sqlite-compiler/types.d.ts +0 -66
  156. package/dist/pg-sqlite-compiler/types.d.ts.map +0 -1
  157. package/dist/pg-sqlite-compiler/types.js +0 -2
  158. package/dist/pg-sqlite-compiler/types.js.map +0 -1
  159. package/dist/sync-browser-host/generated/sqlite3-browser.wasm +0 -0
  160. package/dist/sync-browser-host/generated/sync_wasm.js +0 -922
  161. package/dist/sync-browser-host/generated/sync_wasm_bg.wasm +0 -0
  162. package/dist/sync-browser-host/host.d.ts +0 -10
  163. package/dist/sync-browser-host/host.d.ts.map +0 -1
  164. package/dist/sync-browser-host/host.js +0 -496
  165. package/dist/sync-browser-host/host.js.map +0 -1
  166. package/dist/sync-browser-host/idb-snapshot.d.ts +0 -11
  167. package/dist/sync-browser-host/idb-snapshot.d.ts.map +0 -1
  168. package/dist/sync-browser-host/idb-snapshot.js +0 -122
  169. package/dist/sync-browser-host/idb-snapshot.js.map +0 -1
  170. package/dist/sync-browser-host/index.d.ts +0 -5
  171. package/dist/sync-browser-host/index.d.ts.map +0 -1
  172. package/dist/sync-browser-host/index.js +0 -5
  173. package/dist/sync-browser-host/index.js.map +0 -1
  174. package/dist/sync-browser-host/message-port.d.ts +0 -7
  175. package/dist/sync-browser-host/message-port.d.ts.map +0 -1
  176. package/dist/sync-browser-host/message-port.js +0 -188
  177. package/dist/sync-browser-host/message-port.js.map +0 -1
  178. package/dist/sync-browser-host/sqlite-adapter.d.ts +0 -67
  179. package/dist/sync-browser-host/sqlite-adapter.d.ts.map +0 -1
  180. package/dist/sync-browser-host/sqlite-adapter.js +0 -145
  181. package/dist/sync-browser-host/sqlite-adapter.js.map +0 -1
  182. package/dist/sync-browser-host/types.d.ts +0 -52
  183. package/dist/sync-browser-host/types.d.ts.map +0 -1
  184. package/dist/sync-browser-host/types.js +0 -2
  185. package/dist/sync-browser-host/types.js.map +0 -1
  186. package/dist/sync-cf-host.d.ts +0 -2
  187. package/dist/sync-cf-host.d.ts.map +0 -1
  188. package/dist/sync-cf-host.js +0 -2
  189. package/dist/sync-cf-host.js.map +0 -1
  190. package/dist/sync-executor.d.ts +0 -2
  191. package/dist/sync-executor.d.ts.map +0 -1
  192. package/dist/sync-executor.js +0 -2
  193. package/dist/sync-executor.js.map +0 -1
  194. package/dist/wake.d.ts +0 -22
  195. package/dist/wake.d.ts.map +0 -1
  196. package/dist/wake.js +0 -114
  197. package/dist/wake.js.map +0 -1
  198. package/dist/worker/cf-do-shim.d.ts +0 -55
  199. package/dist/worker/cf-do-shim.d.ts.map +0 -1
  200. package/dist/worker/cf-do-shim.js +0 -58
  201. package/dist/worker/cf-do-shim.js.map +0 -1
  202. package/dist/worker/cf-patches.d.ts +0 -43
  203. package/dist/worker/cf-patches.d.ts.map +0 -1
  204. package/dist/worker/cf-patches.js +0 -840
  205. package/dist/worker/cf-patches.js.map +0 -1
  206. package/dist/worker/local-sql-backend.d.ts +0 -35
  207. package/dist/worker/local-sql-backend.d.ts.map +0 -1
  208. package/dist/worker/local-sql-backend.js +0 -217
  209. package/dist/worker/local-sql-backend.js.map +0 -1
  210. package/dist/worker/zero-cache-embed-cf.d.ts +0 -92
  211. package/dist/worker/zero-cache-embed-cf.d.ts.map +0 -1
  212. package/dist/worker/zero-cache-embed-cf.js +0 -764
  213. package/dist/worker/zero-cache-embed-cf.js.map +0 -1
  214. package/dist/worker/zero-sql-write-circuit.d.ts +0 -46
  215. package/dist/worker/zero-sql-write-circuit.d.ts.map +0 -1
  216. package/dist/worker/zero-sql-write-circuit.js +0 -161
  217. package/dist/worker/zero-sql-write-circuit.js.map +0 -1
  218. package/dist/zero-http/encrypted-column-codec.d.ts +0 -46
  219. package/dist/zero-http/encrypted-column-codec.d.ts.map +0 -1
  220. package/dist/zero-http/encrypted-column-codec.js +0 -676
  221. package/dist/zero-http/encrypted-column-codec.js.map +0 -1
  222. package/dist/zero-http/encrypted-column-conformance.d.ts +0 -7
  223. package/dist/zero-http/encrypted-column-conformance.d.ts.map +0 -1
  224. package/dist/zero-http/encrypted-column-conformance.js +0 -161
  225. package/dist/zero-http/encrypted-column-conformance.js.map +0 -1
  226. package/dist/zero-http/fixture-schema.d.ts +0 -127
  227. package/dist/zero-http/fixture-schema.d.ts.map +0 -1
  228. package/dist/zero-http/fixture-schema.js +0 -56
  229. package/dist/zero-http/fixture-schema.js.map +0 -1
  230. package/dist/zero-http/mount.d.ts +0 -71
  231. package/dist/zero-http/mount.d.ts.map +0 -1
  232. package/dist/zero-http/mount.js +0 -594
  233. package/dist/zero-http/mount.js.map +0 -1
  234. package/dist/zero-http/payload-codec.d.ts +0 -91
  235. package/dist/zero-http/payload-codec.d.ts.map +0 -1
  236. package/dist/zero-http/payload-codec.js +0 -10
  237. package/dist/zero-http/payload-codec.js.map +0 -1
  238. package/dist/zero-http/server.d.ts +0 -16
  239. package/dist/zero-http/server.d.ts.map +0 -1
  240. package/dist/zero-http/server.js +0 -270
  241. package/dist/zero-http/server.js.map +0 -1
  242. package/dist/zero-http/test-harness.d.ts +0 -32
  243. package/dist/zero-http/test-harness.d.ts.map +0 -1
  244. package/dist/zero-http/test-harness.js +0 -77
  245. package/dist/zero-http/test-harness.js.map +0 -1
  246. package/dist/zero-http/transport.d.ts +0 -71
  247. package/dist/zero-http/transport.d.ts.map +0 -1
  248. package/dist/zero-http/transport.js +0 -1106
  249. package/dist/zero-http/transport.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"cdc.js","sourceRoot":"","sources":["../../src/cf-do/cdc.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- export type CursorPullTables = Record<string, // EXACT _zero_changes.table_name identity, e.g. 'public.file'
2
- {
3
- clientName: string;
4
- primaryKey: string[];
5
- }>;
6
- export type ChangeLogRow = {
7
- tableName: string;
8
- op: 'INSERT' | 'UPDATE' | 'DELETE';
9
- rowData: Record<string, unknown> | null;
10
- oldData: Record<string, unknown> | null;
11
- };
12
- export type CursorDiffOp = {
13
- op: 'put';
14
- tableName: string;
15
- row: Record<string, unknown>;
16
- } | {
17
- op: 'del';
18
- tableName: string;
19
- pk: Record<string, unknown>;
20
- };
21
- export declare function cursorDiffPatch(opts: {
22
- changes: ChangeLogRow[];
23
- tables: CursorPullTables;
24
- skip: (logTableName: string) => boolean;
25
- readRow: (clientTableName: string, pk: Record<string, unknown>) => Record<string, unknown> | undefined;
26
- }): CursorDiffOp[];
27
- //# sourceMappingURL=cursor-pull.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor-pull.d.ts","sourceRoot":"","sources":["../../src/cf-do/cursor-pull.ts"],"names":[],"mappings":"AAoCA,MAAM,MAAM,gBAAgB,GAAG,MAAM,CACnC,MAAM,EAAE,8DAA8D;AACtE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAC7C,CAAA;AAID,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC9D;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAA;AAgBjE,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,MAAM,EAAE,gBAAgB,CAAA;IAIxB,IAAI,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAA;IAGvC,OAAO,EAAE,CACP,eAAe,EAAE,MAAM,EACvB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACxB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CACzC,GAAG,YAAY,EAAE,CA2BjB"}
@@ -1,78 +0,0 @@
1
- // cursor-pull: the phase-2 delta primitive over the PRODUCTION change log
2
- // (plans/zero-server-rewrite.md "build plan for the production composition").
3
- // maps `_zero_changes` rows since a client's cookie into put/del row patches
4
- // for an http-pull diff response.
5
- //
6
- // semantics follow the Orez zero-http delta suite exactly: collect the pks
7
- // TOUCHED since the cookie, dedup,
8
- // then resolve each against LIVE table state inside the pull transaction —
9
- // row exists → put (current values), row gone → del. old row images in the
10
- // log are used only to find pks (DELETE + pk-changing UPDATE), never as
11
- // patch values, so op-coalescing bugs and serializer fidelity questions
12
- // can't exist.
13
- //
14
- // table identity is EXPLICIT (2026-07-09 design review, blocker 1):
15
- // production `_zero_changes.table_name` is schema-qualified
16
- // (`public.file`, `soot_0.clients` — pg-proxy trackingRequest emits
17
- // `<schema>.<table>`), so `tables` is keyed by the EXACT log identity and
18
- // carries the zero/client table name to emit. rows matching neither the
19
- // synced spec nor the host's `skip` classifier THROW — a silently dropped
20
- // synced change is permanent client divergence, the one failure mode this
21
- // module must never have.
22
- //
23
- // completeness contract (review, high 4): the caller must pass EVERY change
24
- // row with `watermark > cookie` up to the watermark it returns as the next
25
- // cookie, read atomically with the live point-reads. if the host caps the
26
- // change read, it must return the last INCLUDED watermark as the cookie —
27
- // never the global current watermark — so the remainder ships on the next
28
- // pull. pk mutability (review, high 5): the main pg-proxy tracking path
29
- // records old_data=null for UPDATEs, so a pk-changing UPDATE through it
30
- // only surfaces the NEW pk. published-table pks must be immutable (enforce
31
- // host-side) unless the tracker learns to capture old pk images.
32
- //
33
- // the host (soot's project pull endpoint) owns everything else: cookie
34
- // compare against the watermark, floor/epoch snapshot fallback, LMID rows,
35
- // and wire value conversion (its toZeroRow).
36
- // pks touched by a change: NEW row for INSERT/UPDATE, OLD row for
37
- // UPDATE/DELETE (when the tracker provides old images, a pk-changing
38
- // UPDATE touches both, deleting the old pk)
39
- function pksOf(change, primaryKey) {
40
- const out = [];
41
- for (const source of [change.rowData, change.oldData]) {
42
- if (!source)
43
- continue;
44
- const pk = {};
45
- for (const col of primaryKey)
46
- pk[col] = source[col];
47
- out.push(pk);
48
- }
49
- return out;
50
- }
51
- export function cursorDiffPatch(opts) {
52
- const { changes, tables, skip, readRow } = opts;
53
- const touched = new Map();
54
- for (const change of changes) {
55
- const spec = tables[change.tableName];
56
- if (!spec) {
57
- if (skip(change.tableName))
58
- continue;
59
- throw new Error(`cursor-pull: change log row for unmapped table '${change.tableName}' — ` +
60
- `synced tables must be in the spec and internal tables must be classified by skip(); ` +
61
- `silently dropping it would permanently diverge clients`);
62
- }
63
- for (const pk of pksOf(change, spec.primaryKey)) {
64
- const key = `${spec.clientName} ${JSON.stringify(spec.primaryKey.map((c) => pk[c]))}`;
65
- touched.set(key, { clientName: spec.clientName, pk });
66
- }
67
- }
68
- const patch = [];
69
- for (const { clientName, pk } of touched.values()) {
70
- const row = readRow(clientName, pk);
71
- if (row === undefined)
72
- patch.push({ op: 'del', tableName: clientName, pk });
73
- else
74
- patch.push({ op: 'put', tableName: clientName, row });
75
- }
76
- return patch;
77
- }
78
- //# sourceMappingURL=cursor-pull.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor-pull.js","sourceRoot":"","sources":["../../src/cf-do/cursor-pull.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,221 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"row-undo.js","sourceRoot":"","sources":["../../src/cf-do/row-undo.ts"],"names":[],"mappings":"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"}
@@ -1,119 +0,0 @@
1
- /**
2
- * durable transaction journal for the DO SQL backend.
3
- *
4
- * the Durable Object refuses raw SQL BEGIN/COMMIT, so DoBackend emulates pg
5
- * transactions by applying writes eagerly. Parsed DML is rolled back from the
6
- * CDC row before-images captured by the same SQLite statement; unknown writes
7
- * fall back to a first-write table snapshot (`_orez_tx_<txID>_*`). Before this
8
- * journal, the rollback bookkeeping lived only in the client's memory: a DO eviction or
9
- * deploy upgrade-kill mid-transaction persisted the partial writes forever
10
- * (the 2026-06 poisoned cdc changeLog incident — zero's catchup replays
11
- * begin→data→begin and the replicator wedges permanently).
12
- *
13
- * the journal makes the snapshot bookkeeping durable and the commit point
14
- * atomic:
15
- *
16
- * - every row-journal marker or fallback snapshot is recorded in
17
- * `_orez_tx_manifest` atomically with its rollback state.
18
- * - COMMIT = one atomic storage transaction that drops rollback state and
19
- * deletes the manifest rows (plus promoting pending tracked changes in
20
- * ZeroDO). a tx is committed if and only if its manifest rows are gone.
21
- * - ROLLBACK = one atomic storage transaction that restores row before-images
22
- * plus any fallback table snapshots (in reverse order).
23
- * - RECOVERY (`recoverTxJournal`) rolls back every manifest tx for an
24
- * owner whose process generation is known dead (e.g. the zero-cache
25
- * embed at boot, before it opens any pg session), so a partial tx is
26
- * invisible on the next boot.
27
- *
28
- * all functions are synchronous over a minimal sql-exec interface so the
29
- * same core runs inside ZeroDO's ctx.storage.transaction() and inside the
30
- * embed-local backend's transactionSync().
31
- */
32
- import type { DurableSqlStorage } from './watermark.js';
33
- export declare const TX_MANIFEST_TABLE = "_orez_tx_manifest";
34
- export declare const TX_SCHEMA_TABLE = "_orez_tx_schema";
35
- export declare const TX_MANIFEST_DDL: string;
36
- export declare const TX_SCHEMA_DDL: string;
37
- /**
38
- * true when restoreSchemaSnapshot will rebuild `table` during the rollback of
39
- * `txID`: the tx recorded a transactional-DDL schema marker and the table was
40
- * created, dropped, or DDL-changed since the schema snapshot. row-level undo
41
- * consults this to skip such tables — their pre-tx content comes back
42
- * wholesale from the table snapshot, and undoing rows against a dropped or
43
- * rebuilt table either throws or targets the wrong shape. before this,
44
- * recovery of a tx killed mid table rebuild threw on every boot and wedged
45
- * the namespace permanently (2026-07-24 prod fresh-project incident).
46
- */
47
- export declare function schemaRestoreOwnsTable(sql: DurableSqlStorage, txID: string, table: string): boolean;
48
- /**
49
- * Capture the application schema before the first DDL statement and the data
50
- * of each table that a later DDL statement can destructively change. SQLite
51
- * can transact DDL, but the DO protocol spans requests, so rollback needs an
52
- * explicit durable image. The caller must wrap this in one storage transaction.
53
- */
54
- export declare function snapshotTxSchema(sql: DurableSqlStorage, txID: string, owner?: string, affectedTables?: string[]): void;
55
- /** persist one cheap recovery marker only when a transaction first mutates data. */
56
- export declare function beginTxJournal(sql: DurableSqlStorage, txID: string, owner?: string): void;
57
- /**
58
- * commit a journaled transaction: drop its snapshot tables and delete its
59
- * manifest rows. the data writes were applied eagerly during the tx, so once
60
- * the manifest rows are gone the tx is durably committed. must run inside an
61
- * atomic storage transaction.
62
- */
63
- export declare function commitTxJournal(sql: DurableSqlStorage, txID: string): void;
64
- /**
65
- * roll back a journaled transaction: restore every snapshotted table to its
66
- * pre-tx contents (parents before children), drop tables that did not exist at
67
- * first write (null snapshot), then clean up. triggers on restored tables are
68
- * detached during the restore and re-created after, so restore DML doesn't
69
- * re-fire change tracking. must run inside an atomic storage transaction.
70
- */
71
- export declare function rollbackTxJournal(sql: DurableSqlStorage, txID: string): void;
72
- /**
73
- * Point a transaction's journal entry for `table` at a real table snapshot.
74
- *
75
- * DoBackend marks a parsed write row-journaled (an empty snapshot) before the
76
- * DO has said whether it can capture that table. When CDC declines it, because
77
- * the table has no stable row identity, that empty marker promises a row-level
78
- * rollback nothing is able to perform. The owner therefore copies the table and
79
- * rewrites the marker in the same storage transaction as the write, which puts
80
- * the transaction back on the snapshot path recovery already knows how to
81
- * replay. Safe to call repeatedly: only the first write to a table in a
82
- * transaction takes the copy.
83
- */
84
- export declare function upgradeToTableSnapshot(sql: DurableSqlStorage, txID: string, table: string, owner?: string): void;
85
- /** The operation a tracked statement performs on its own table. */
86
- export type TrackedOperation = 'INSERT' | 'UPDATE' | 'DELETE' | 'UPSERT';
87
- /**
88
- * snapshot the source table and the transitive targets of its business
89
- * triggers and cascading/SET foreign keys. trigger SQL and FK metadata name
90
- * every table SQLite can mutate implicitly, so copying unrelated published
91
- * tables only multiplies billable writes during zero-cache startup. if a
92
- * reachable trigger cannot be understood, retain the conservative all-table
93
- * fallback.
94
- *
95
- * reachability is per (table, operation), because SQLite fires implicit writes
96
- * per operation: `ON DELETE CASCADE` only fires when the parent row is deleted,
97
- * and `AFTER DELETE` triggers only fire on a delete. discovering side effects
98
- * from the table alone made every UPDATE pay for its children's delete
99
- * cascades. soot's five-second `sootAgent.runtimeClaimExpiresAt` renewal copied
100
- * the whole `agentEvent` table on each beat purely because `agentEvent`
101
- * references `sootAgent` `ON DELETE CASCADE`: 35 billable rows with an empty
102
- * event table, 1,035 with 1,000 retained events, and the rolling write budget
103
- * tripped from heartbeats alone once the table grew.
104
- */
105
- export declare function snapshotSideEffectWriteTables(sql: DurableSqlStorage, txID: string, sourceTable: string, operation: TrackedOperation): boolean;
106
- /**
107
- * roll back every journaled transaction belonging to `owner` (or every
108
- * transaction when owner is undefined), and sweep `_orez_tx_*` snapshot
109
- * tables no manifest row references (leftovers from pre-journal code).
110
- *
111
- * callers must guarantee none of the matched transactions can still be live
112
- * — i.e. the owning process generation is dead (embed boot before opening pg
113
- * sessions, or a store whose only client lives in the same isolate).
114
- *
115
- * returns the recovered transaction ids so callers can clean up associated
116
- * state (e.g. pending tracked changes).
117
- */
118
- export declare function recoverTxJournal(sql: DurableSqlStorage, owner?: string, beforeRollback?: (txID: string) => void): string[];
119
- //# sourceMappingURL=tx-journal.d.ts.map
@@ -1 +0,0 @@
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;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"}