orez 0.5.3 → 0.5.5

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.
@@ -31,7 +31,16 @@
31
31
  */
32
32
  import type { DurableSqlStorage } from './watermark.js';
33
33
  export declare const TX_MANIFEST_TABLE = "_orez_tx_manifest";
34
+ export declare const TX_SCHEMA_TABLE = "_orez_tx_schema";
34
35
  export declare const TX_MANIFEST_DDL: string;
36
+ export declare const TX_SCHEMA_DDL: string;
37
+ /**
38
+ * Capture the application schema before the first DDL statement and the data
39
+ * of each table that a later DDL statement can destructively change. SQLite
40
+ * can transact DDL, but the DO protocol spans requests, so rollback needs an
41
+ * explicit durable image. The caller must wrap this in one storage transaction.
42
+ */
43
+ export declare function snapshotTxSchema(sql: DurableSqlStorage, txID: string, owner?: string, affectedTables?: string[]): void;
35
44
  /**
36
45
  * commit a journaled transaction: drop its snapshot tables and delete its
37
46
  * manifest rows. the data writes were applied eagerly during the tx, so once
@@ -59,7 +68,7 @@ export declare function rollbackTxJournal(sql: DurableSqlStorage, txID: string):
59
68
  * replay. Safe to call repeatedly: only the first write to a table in a
60
69
  * transaction takes the copy.
61
70
  */
62
- export declare function upgradeToTableSnapshot(sql: DurableSqlStorage, txID: string, table: string): void;
71
+ export declare function upgradeToTableSnapshot(sql: DurableSqlStorage, txID: string, table: string, owner?: string): void;
63
72
  /**
64
73
  * Snapshot every user table before a statement whose source table has a
65
74
  * business trigger or is the parent of a cascading/SET foreign-key action.
@@ -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;AAEpD,eAAO,MAAM,eAAe,QAMV,CAAA;AAgFlB;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAM1E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CA0C5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,IAAI,CAsCN;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,CA0CV"}
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"}
@@ -31,12 +31,36 @@
31
31
  */
32
32
  import { restoreTriggers, suspendTriggers, writableColumns } from './cdc.js';
33
33
  export const TX_MANIFEST_TABLE = '_orez_tx_manifest';
34
+ export const TX_SCHEMA_TABLE = '_orez_tx_schema';
34
35
  export const TX_MANIFEST_DDL = `CREATE TABLE IF NOT EXISTS "${TX_MANIFEST_TABLE}" (` +
35
36
  'seq INTEGER PRIMARY KEY AUTOINCREMENT, ' +
36
37
  'tx_id TEXT NOT NULL, ' +
37
38
  "owner TEXT NOT NULL DEFAULT 'default', " +
38
39
  'original TEXT NOT NULL, ' +
39
40
  'snapshot TEXT)';
41
+ export const TX_SCHEMA_DDL = `CREATE TABLE IF NOT EXISTS "${TX_SCHEMA_TABLE}" (` +
42
+ 'seq INTEGER PRIMARY KEY AUTOINCREMENT, ' +
43
+ 'tx_id TEXT NOT NULL, ' +
44
+ "owner TEXT NOT NULL DEFAULT 'default', " +
45
+ 'type TEXT NOT NULL, ' +
46
+ 'name TEXT NOT NULL, ' +
47
+ 'tbl_name TEXT NOT NULL, ' +
48
+ 'sql TEXT)';
49
+ const INTERNAL_TABLES = new Set([
50
+ TX_MANIFEST_TABLE,
51
+ TX_SCHEMA_TABLE,
52
+ '_orez_cdc_tables',
53
+ '_orez_cdc_buffer',
54
+ '_zero_pending_changes',
55
+ '_zero_changes',
56
+ '_zero_change_state',
57
+ '_zero_schema_tables',
58
+ ]);
59
+ function isInternalObject(name) {
60
+ return (INTERNAL_TABLES.has(name) ||
61
+ name.startsWith('_orez_tx_') ||
62
+ name.startsWith('sqlite_'));
63
+ }
40
64
  function quoteIdent(name) {
41
65
  return `"${name.replace(/"/g, '""')}"`;
42
66
  }
@@ -45,6 +69,25 @@ function manifestTableExists(sql) {
45
69
  .exec("SELECT 1 AS ok FROM sqlite_master WHERE type = 'table' AND name = ?", TX_MANIFEST_TABLE)
46
70
  .toArray().length > 0);
47
71
  }
72
+ function schemaTableExists(sql) {
73
+ return (sql
74
+ .exec("SELECT 1 AS ok FROM sqlite_master WHERE type = 'table' AND name = ?", TX_SCHEMA_TABLE)
75
+ .toArray().length > 0);
76
+ }
77
+ function schemaRows(sql, txID) {
78
+ if (!schemaTableExists(sql))
79
+ return [];
80
+ return sql
81
+ .exec(`SELECT seq, type, name, tbl_name, sql FROM "${TX_SCHEMA_TABLE}" WHERE tx_id = ? ORDER BY seq`, txID)
82
+ .toArray()
83
+ .map((row) => ({
84
+ seq: Number(row.seq),
85
+ type: String(row.type),
86
+ name: String(row.name),
87
+ table: String(row.tbl_name),
88
+ sql: row.sql === null || row.sql === undefined ? null : String(row.sql),
89
+ }));
90
+ }
48
91
  function manifestRows(sql, txID) {
49
92
  return sql
50
93
  .exec(`SELECT seq, tx_id, original, snapshot FROM "${TX_MANIFEST_TABLE}" WHERE tx_id = ? ORDER BY seq`, txID)
@@ -98,6 +141,132 @@ function parentFirst(sql, rows) {
98
141
  ordered.push(row);
99
142
  return ordered;
100
143
  }
144
+ /**
145
+ * Capture the application schema before the first DDL statement and the data
146
+ * of each table that a later DDL statement can destructively change. SQLite
147
+ * can transact DDL, but the DO protocol spans requests, so rollback needs an
148
+ * explicit durable image. The caller must wrap this in one storage transaction.
149
+ */
150
+ export function snapshotTxSchema(sql, txID, owner = 'default', affectedTables = []) {
151
+ sql.exec(TX_SCHEMA_DDL);
152
+ const exists = sql
153
+ .exec(`SELECT 1 AS ok FROM "${TX_SCHEMA_TABLE}" WHERE tx_id = ? LIMIT 1`, txID)
154
+ .toArray();
155
+ if (exists.length === 0) {
156
+ const objects = sql
157
+ .exec('SELECT type, name, tbl_name, sql FROM sqlite_master ' +
158
+ "WHERE type IN ('table', 'index', 'trigger', 'view') AND sql IS NOT NULL " +
159
+ 'ORDER BY rowid')
160
+ .toArray()
161
+ .map((row) => ({
162
+ type: String(row.type ?? ''),
163
+ name: String(row.name ?? ''),
164
+ table: String(row.tbl_name ?? ''),
165
+ sql: String(row.sql ?? ''),
166
+ }))
167
+ .filter((row) => row.name && !isInternalObject(row.name));
168
+ // A marker makes even an empty pre-transaction schema recoverable after a
169
+ // kill between CREATE TABLE and the client COMMIT/ROLLBACK.
170
+ sql.exec(`INSERT INTO "${TX_SCHEMA_TABLE}" (tx_id, owner, type, name, tbl_name, sql) VALUES (?, ?, 'marker', '', '', NULL)`, txID, owner);
171
+ for (const object of objects) {
172
+ sql.exec(`INSERT INTO "${TX_SCHEMA_TABLE}" (tx_id, owner, type, name, tbl_name, sql) VALUES (?, ?, ?, ?, ?, ?)`, txID, owner, object.type, object.name, object.table, object.sql);
173
+ }
174
+ }
175
+ for (const table of new Set(affectedTables)) {
176
+ if (!table || isInternalObject(table))
177
+ continue;
178
+ const tableExists = sql
179
+ .exec("SELECT 1 AS ok FROM sqlite_master WHERE type = 'table' AND name = ? LIMIT 1", table)
180
+ .toArray();
181
+ if (tableExists.length > 0)
182
+ upgradeToTableSnapshot(sql, txID, table, owner);
183
+ }
184
+ }
185
+ function restoreSchemaSnapshot(sql, txID, schema, manifest) {
186
+ const current = sql
187
+ .exec('SELECT type, name, tbl_name, sql FROM sqlite_master ' +
188
+ "WHERE type IN ('table', 'index', 'trigger', 'view') AND sql IS NOT NULL " +
189
+ 'ORDER BY rowid DESC')
190
+ .toArray()
191
+ .map((row) => ({
192
+ type: String(row.type ?? ''),
193
+ name: String(row.name ?? ''),
194
+ table: String(row.tbl_name ?? ''),
195
+ sql: String(row.sql ?? ''),
196
+ }))
197
+ .filter((row) => row.name && !isInternalObject(row.name));
198
+ const original = schema.filter((row) => row.type !== 'marker' && row.sql);
199
+ const key = (row) => `${row.type}\0${row.name}`;
200
+ const originalByKey = new Map(original.map((row) => [key(row), row]));
201
+ const currentByKey = new Map(current.map((row) => [key(row), row]));
202
+ const originalTables = original.filter((row) => row.type === 'table');
203
+ const currentTables = current.filter((row) => row.type === 'table');
204
+ const changedOriginalTables = new Set(originalTables
205
+ .filter((row) => currentByKey.get(key(row))?.sql !== row.sql)
206
+ .map((row) => row.name));
207
+ const createdTables = new Set(currentTables.filter((row) => !originalByKey.has(key(row))).map((row) => row.name));
208
+ const tablesToDrop = new Set([...changedOriginalTables, ...createdTables]);
209
+ const snapshotByTable = new Map(manifest
210
+ .filter((row) => row.snapshot)
211
+ .map((row) => [row.original, row.snapshot]));
212
+ for (const table of changedOriginalTables) {
213
+ if (!snapshotByTable.has(table)) {
214
+ throw new Error(`transactional DDL rollback is missing table snapshot: ${table}`);
215
+ }
216
+ }
217
+ sql.exec('PRAGMA defer_foreign_keys = ON');
218
+ const changedCurrentObject = (object) => {
219
+ const before = originalByKey.get(key(object));
220
+ return !before || before.sql !== object.sql || tablesToDrop.has(object.table);
221
+ };
222
+ // Views can depend on tables. Indexes and triggers disappear with their
223
+ // table, while changed standalone objects are explicitly removed.
224
+ for (const object of current.filter((object) => object.type === 'view' && changedCurrentObject(object))) {
225
+ sql.exec(`DROP VIEW IF EXISTS ${quoteIdent(object.name)}`);
226
+ }
227
+ for (const object of current.filter((object) => object.type === 'trigger' && changedCurrentObject(object))) {
228
+ sql.exec(`DROP TRIGGER IF EXISTS ${quoteIdent(object.name)}`);
229
+ }
230
+ for (const object of current.filter((object) => object.type === 'index' && changedCurrentObject(object))) {
231
+ sql.exec(`DROP INDEX IF EXISTS ${quoteIdent(object.name)}`);
232
+ }
233
+ for (const table of tablesToDrop)
234
+ sql.exec(`DROP TABLE IF EXISTS ${quoteIdent(table)}`);
235
+ const tables = originalTables.filter((row) => changedOriginalTables.has(row.name));
236
+ for (const row of tables)
237
+ sql.exec(row.sql);
238
+ for (const row of tables) {
239
+ const snapshot = snapshotByTable.get(row.name);
240
+ const columns = writableColumns(sql, row.name);
241
+ if (columns.length > 0) {
242
+ const columnList = columns.map(quoteIdent).join(', ');
243
+ sql.exec(`INSERT INTO ${quoteIdent(row.name)} (${columnList}) SELECT ${columnList} FROM ${quoteIdent(snapshot)}`);
244
+ }
245
+ }
246
+ // Restore secondary objects only after all table rows are back. This keeps
247
+ // business triggers from firing while the snapshot data is inserted.
248
+ for (const type of ['index', 'trigger', 'view']) {
249
+ for (const row of original.filter((item) => item.type === type)) {
250
+ const after = currentByKey.get(key(row));
251
+ if (!after || after.sql !== row.sql || changedOriginalTables.has(row.table)) {
252
+ sql.exec(row.sql);
253
+ }
254
+ }
255
+ }
256
+ // Consume only the snapshots used for schema restoration. Any remaining
257
+ // manifest entries belong to ordinary DML in the same transaction and must
258
+ // still run through the row/table rollback path below.
259
+ if (manifestTableExists(sql)) {
260
+ for (const table of changedOriginalTables) {
261
+ const snapshot = snapshotByTable.get(table);
262
+ if (snapshot)
263
+ dropTable(sql, snapshot);
264
+ sql.exec(`DELETE FROM "${TX_MANIFEST_TABLE}" WHERE tx_id = ? AND original = ?`, txID, table);
265
+ }
266
+ }
267
+ sql.exec(`DELETE FROM "${TX_SCHEMA_TABLE}" WHERE tx_id = ?`, txID);
268
+ rollbackTxJournal(sql, txID);
269
+ }
101
270
  /**
102
271
  * commit a journaled transaction: drop its snapshot tables and delete its
103
272
  * manifest rows. the data writes were applied eagerly during the tx, so once
@@ -105,13 +274,16 @@ function parentFirst(sql, rows) {
105
274
  * atomic storage transaction.
106
275
  */
107
276
  export function commitTxJournal(sql, txID) {
108
- if (!manifestTableExists(sql))
109
- return;
110
- for (const row of manifestRows(sql, txID)) {
111
- if (row.snapshot)
112
- dropTable(sql, row.snapshot);
277
+ if (manifestTableExists(sql)) {
278
+ for (const row of manifestRows(sql, txID)) {
279
+ if (row.snapshot)
280
+ dropTable(sql, row.snapshot);
281
+ }
282
+ sql.exec(`DELETE FROM "${TX_MANIFEST_TABLE}" WHERE tx_id = ?`, txID);
283
+ }
284
+ if (schemaTableExists(sql)) {
285
+ sql.exec(`DELETE FROM "${TX_SCHEMA_TABLE}" WHERE tx_id = ?`, txID);
113
286
  }
114
- sql.exec(`DELETE FROM "${TX_MANIFEST_TABLE}" WHERE tx_id = ?`, txID);
115
287
  }
116
288
  /**
117
289
  * roll back a journaled transaction: restore every snapshotted table to its
@@ -121,9 +293,12 @@ export function commitTxJournal(sql, txID) {
121
293
  * re-fire change tracking. must run inside an atomic storage transaction.
122
294
  */
123
295
  export function rollbackTxJournal(sql, txID) {
124
- if (!manifestTableExists(sql))
296
+ const schema = schemaRows(sql, txID);
297
+ const rows = manifestTableExists(sql) ? manifestRows(sql, txID).reverse() : [];
298
+ if (schema.length > 0) {
299
+ restoreSchemaSnapshot(sql, txID, schema, rows);
125
300
  return;
126
- const rows = manifestRows(sql, txID).reverse();
301
+ }
127
302
  if (rows.length === 0)
128
303
  return;
129
304
  const restoredTables = rows.filter((row) => row.snapshot).map((row) => row.original);
@@ -171,7 +346,7 @@ export function rollbackTxJournal(sql, txID) {
171
346
  * replay. Safe to call repeatedly: only the first write to a table in a
172
347
  * transaction takes the copy.
173
348
  */
174
- export function upgradeToTableSnapshot(sql, txID, table) {
349
+ export function upgradeToTableSnapshot(sql, txID, table, owner = 'default') {
175
350
  sql.exec(TX_MANIFEST_DDL);
176
351
  const existing = sql
177
352
  .exec(`SELECT seq, snapshot FROM "${TX_MANIFEST_TABLE}" WHERE tx_id = ? AND original = ? ORDER BY seq`, txID, table)
@@ -190,7 +365,7 @@ export function upgradeToTableSnapshot(sql, txID, table) {
190
365
  const seq = existing.length > 0
191
366
  ? Number(existing[0].seq)
192
367
  : Number(sql
193
- .exec(`INSERT INTO "${TX_MANIFEST_TABLE}" (tx_id, owner, original, snapshot) VALUES (?, 'default', ?, '') RETURNING seq`, txID, table)
368
+ .exec(`INSERT INTO "${TX_MANIFEST_TABLE}" (tx_id, owner, original, snapshot) VALUES (?, ?, ?, '') RETURNING seq`, txID, owner, table)
194
369
  .toArray()[0]?.seq);
195
370
  const snapshot = `_orez_tx_undo_${seq}`;
196
371
  sql.exec(`DROP TABLE IF EXISTS ${quoteIdent(snapshot)}`);
@@ -211,7 +386,7 @@ export function snapshotSideEffectWriteTables(sql, txID, sourceTable) {
211
386
  const tables = sql
212
387
  .exec("SELECT name FROM sqlite_master WHERE type = 'table' " +
213
388
  "AND name NOT GLOB 'sqlite_*' AND name NOT GLOB '_orez_*' " +
214
- "AND name NOT GLOB '_zero_*' ORDER BY name")
389
+ "AND name NOT GLOB '_zero_*' AND name NOT GLOB '_cf_*' ORDER BY name")
215
390
  .toArray()
216
391
  .map((row) => String(row.name ?? ''))
217
392
  .filter(Boolean);
@@ -246,18 +421,23 @@ export function snapshotSideEffectWriteTables(sql, txID, sourceTable) {
246
421
  */
247
422
  export function recoverTxJournal(sql, owner, beforeRollback) {
248
423
  const recovered = [];
249
- if (manifestTableExists(sql)) {
424
+ const transactionIDs = new Set();
425
+ for (const table of [TX_MANIFEST_TABLE, TX_SCHEMA_TABLE]) {
426
+ const exists = table === TX_MANIFEST_TABLE ? manifestTableExists(sql) : schemaTableExists(sql);
427
+ if (!exists)
428
+ continue;
250
429
  const txRows = owner === undefined
251
- ? sql.exec(`SELECT DISTINCT tx_id FROM "${TX_MANIFEST_TABLE}"`).toArray()
430
+ ? sql.exec(`SELECT DISTINCT tx_id FROM ${quoteIdent(table)}`).toArray()
252
431
  : sql
253
- .exec(`SELECT DISTINCT tx_id FROM "${TX_MANIFEST_TABLE}" WHERE owner = ?`, owner)
432
+ .exec(`SELECT DISTINCT tx_id FROM ${quoteIdent(table)} WHERE owner = ?`, owner)
254
433
  .toArray();
255
- for (const row of txRows) {
256
- const txID = String(row.tx_id);
257
- beforeRollback?.(txID);
258
- rollbackTxJournal(sql, txID);
259
- recovered.push(txID);
260
- }
434
+ for (const row of txRows)
435
+ transactionIDs.add(String(row.tx_id));
436
+ }
437
+ for (const txID of transactionIDs) {
438
+ beforeRollback?.(txID);
439
+ rollbackTxJournal(sql, txID);
440
+ recovered.push(txID);
261
441
  }
262
442
  // sweep snapshot tables nothing references: pre-journal leftovers from a
263
443
  // killed tx. live transactions (any owner) are protected by their manifest
@@ -272,7 +452,7 @@ export function recoverTxJournal(sql, owner, beforeRollback) {
272
452
  .exec("SELECT name FROM sqlite_master WHERE type = 'table' AND name LIKE '\\_orez\\_tx\\_%' ESCAPE '\\' AND name != ?", TX_MANIFEST_TABLE)
273
453
  .toArray()
274
454
  .map((row) => String(row.name))
275
- .filter((name) => !referenced.has(name));
455
+ .filter((name) => name !== TX_SCHEMA_TABLE && !referenced.has(name));
276
456
  for (const name of orphanTables)
277
457
  dropTable(sql, name);
278
458
  return recovered;
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAI5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;AACpD,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAA;AAEhD,MAAM,CAAC,MAAM,eAAe,GAC1B,+BAA+B,iBAAiB,KAAK;IACrD,yCAAyC;IACzC,uBAAuB;IACvB,yCAAyC;IACzC,0BAA0B;IAC1B,gBAAgB,CAAA;AAElB,MAAM,CAAC,MAAM,aAAa,GACxB,+BAA+B,eAAe,KAAK;IACnD,yCAAyC;IACzC,uBAAuB;IACvB,yCAAyC;IACzC,sBAAsB;IACtB,sBAAsB;IACtB,0BAA0B;IAC1B,WAAW,CAAA;AAEb,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,iBAAiB;IACjB,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,uBAAuB;IACvB,eAAe;IACf,oBAAoB;IACpB,qBAAqB;CACtB,CAAC,CAAA;AAEF,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,CACL,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAC3B,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAA;AACxC,CAAC;AASD,SAAS,mBAAmB,CAAC,GAAsB;IACjD,OAAO,CACL,GAAG;SACA,IAAI,CACH,qEAAqE,EACrE,iBAAiB,CAClB;SACA,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CACxB,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAsB;IAC/C,OAAO,CACL,GAAG;SACA,IAAI,CACH,qEAAqE,EACrE,eAAe,CAChB;SACA,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CACxB,CAAA;AACH,CAAC;AAUD,SAAS,UAAU,CAAC,GAAsB,EAAE,IAAY;IACtD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IACtC,OAAO,GAAG;SACP,IAAI,CACH,+CAA+C,eAAe,gCAAgC,EAC9F,IAAI,CACL;SACA,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC3B,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;KACxE,CAAC,CAAC,CAAA;AACP,CAAC;AAED,SAAS,YAAY,CAAC,GAAsB,EAAE,IAAY;IACxD,OAAO,GAAG;SACP,IAAI,CACH,+CAA+C,iBAAiB,gCAAgC,EAChG,IAAI,CACL;SACA,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,QAAQ,EACN,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;KACpF,CAAC,CAAC,CAAA;AACP,CAAC;AAED,SAAS,SAAS,CAAC,GAAsB,EAAE,KAAa;IACtD,GAAG,CAAC,IAAI,CAAC,wBAAwB,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AACvD,CAAC;AAED,kGAAkG;AAClG,SAAS,WAAW,CAAC,GAAsB,EAAE,IAAmB;IAC9D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IAC/D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC,CAAC,CAAA;IAC3E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,GAAG;aAChB,IAAI,CAAC,2BAA2B,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;aAC9D,OAAO,EAAE;aACT,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;QACxC,KAAK,MAAM,MAAM,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,KAAK,CAAC,QAAQ;gBAAE,SAAQ;YAC/D,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAA;YACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAAE,SAAQ;YAC1C,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC5B,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IACpE,MAAM,OAAO,GAAkB,EAAE,CAAA;IACjC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,EAAG,CAAA;QAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjB,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;YAC5C,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YAC1B,IAAI,KAAK,KAAK,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IACD,2EAA2E;IAC3E,4EAA4E;IAC5E,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACrE,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAsB,EACtB,IAAY,EACZ,KAAK,GAAG,SAAS,EACjB,iBAA2B,EAAE;IAE7B,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACvB,MAAM,MAAM,GAAG,GAAG;SACf,IAAI,CAAC,wBAAwB,eAAe,2BAA2B,EAAE,IAAI,CAAC;SAC9E,OAAO,EAAE,CAAA;IACZ,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,GAAG;aAChB,IAAI,CACH,sDAAsD;YACpD,0EAA0E;YAC1E,gBAAgB,CACnB;aACA,OAAO,EAAE;aACT,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAC5B,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;YACjC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;SAC3B,CAAC,CAAC;aACF,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAE3D,0EAA0E;QAC1E,4DAA4D;QAC5D,GAAG,CAAC,IAAI,CACN,gBAAgB,eAAe,mFAAmF,EAClH,IAAI,EACJ,KAAK,CACN,CAAA;QACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CACN,gBAAgB,eAAe,uEAAuE,EACtG,IAAI,EACJ,KAAK,EACL,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,GAAG,CACX,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,IAAI,gBAAgB,CAAC,KAAK,CAAC;YAAE,SAAQ;QAC/C,MAAM,WAAW,GAAG,GAAG;aACpB,IAAI,CACH,6EAA6E,EAC7E,KAAK,CACN;aACA,OAAO,EAAE,CAAA;QACZ,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,sBAAsB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IAC7E,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,GAAsB,EACtB,IAAY,EACZ,MAAmB,EACnB,QAAuB;IAEvB,MAAM,OAAO,GAAG,GAAG;SAChB,IAAI,CACH,sDAAsD;QACpD,0EAA0E;QAC1E,qBAAqB,CACxB;SACA,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC;QACjC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;KAC3B,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAE3D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IACzE,MAAM,GAAG,GAAG,CAAC,GAAmC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,CAAA;IAC/E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IACrE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IACnE,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;IACrE,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;IACnE,MAAM,qBAAqB,GAAG,IAAI,GAAG,CACnC,cAAc;SACX,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC;SAC5D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAC1B,CAAA;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CACnF,CAAA;IACD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,qBAAqB,EAAE,GAAG,aAAa,CAAC,CAAC,CAAA;IAC1E,MAAM,eAAe,GAAG,IAAI,GAAG,CAC7B,QAAQ;SACL,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC;SAC7B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAS,CAAU,CAAC,CACxD,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,qBAAqB,EAAE,CAAC;QAC1C,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,yDAAyD,KAAK,EAAE,CAAC,CAAA;QACnF,CAAC;IACH,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAC1C,MAAM,oBAAoB,GAAG,CAAC,MAAgC,EAAE,EAAE;QAChE,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QAC7C,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/E,CAAC,CAAA;IACD,wEAAwE;IACxE,kEAAkE;IAClE,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,CACjC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,oBAAoB,CAAC,MAAM,CAAC,CACnE,EAAE,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,uBAAuB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC5D,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,CACjC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,oBAAoB,CAAC,MAAM,CAAC,CACtE,EAAE,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,0BAA0B,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/D,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,CACjC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,oBAAoB,CAAC,MAAM,CAAC,CACpE,EAAE,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,wBAAwB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7D,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,YAAY;QAAE,GAAG,CAAC,IAAI,CAAC,wBAAwB,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAEvF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAClF,KAAK,MAAM,GAAG,IAAI,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,CAAC,CAAA;IAE5C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAE,CAAA;QAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACrD,GAAG,CAAC,IAAI,CACN,eAAe,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,UAAU,YAAY,UAAU,SAAS,UAAU,CAAC,QAAQ,CAAC,EAAE,CACxG,CAAA;QACH,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,qEAAqE;IACrE,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;QAChD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YAChE,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;YACxC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,IAAI,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5E,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAI,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,2EAA2E;IAC3E,uDAAuD;IACvD,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,qBAAqB,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC3C,IAAI,QAAQ;gBAAE,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;YACtC,GAAG,CAAC,IAAI,CACN,gBAAgB,iBAAiB,oCAAoC,EACrE,IAAI,EACJ,KAAK,CACN,CAAA;QACH,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,gBAAgB,eAAe,mBAAmB,EAAE,IAAI,CAAC,CAAA;IAClE,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAsB,EAAE,IAAY;IAClE,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;YAC1C,IAAI,GAAG,CAAC,QAAQ;gBAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;QAChD,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,gBAAgB,iBAAiB,mBAAmB,EAAE,IAAI,CAAC,CAAA;IACtE,CAAC;IACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,gBAAgB,eAAe,mBAAmB,EAAE,IAAI,CAAC,CAAA;IACpE,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAsB,EAAE,IAAY;IACpE,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,qBAAqB,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;QAC9C,OAAM;IACR,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAE7B,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACpF,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IACrD,wEAAwE;IACxE,2EAA2E;IAC3E,2EAA2E;IAC3E,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAC1C,MAAM,YAAY,GAAG,WAAW,CAC9B,GAAG,EACH,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,CACnE,CAAA;IACD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,eAAe,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACrD,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5C,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,QAAS,CAAC,CAAA;QAChD,yEAAyE;QACzE,+DAA+D;QAC/D,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAA;QAClD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrD,GAAG,CAAC,IAAI,CACN,0BAA0B,WAAW,KAAK,UAAU,YAAY,UAAU,SAAS,cAAc,EAAE,CACpG,CAAA;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,QAAS,CAAC,CAAA;QAChD,GAAG,CAAC,IAAI,CAAC,wBAAwB,cAAc,EAAE,CAAC,CAAA;IACpD,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,wBAAwB,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;QAC9D,CAAC;QACD,uEAAuE;QACvE,uEAAuE;IACzE,CAAC;IACD,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC9B,GAAG,CAAC,IAAI,CAAC,gBAAgB,iBAAiB,mBAAmB,EAAE,IAAI,CAAC,CAAA;AACtE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAAsB,EACtB,IAAY,EACZ,KAAa,EACb,KAAK,GAAG,SAAS;IAEjB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACzB,MAAM,QAAQ,GAAG,GAAG;SACjB,IAAI,CACH,8BAA8B,iBAAiB,iDAAiD,EAChG,IAAI,EACJ,KAAK,CACN;SACA,OAAO,EAAE,CAAA;IACZ,4EAA4E;IAC5E,8EAA8E;IAC9E,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAC/B,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,KAAK,EAAE,CACpE,CAAA;IACD,IAAI,WAAW;QAAE,OAAM;IAEvB,4EAA4E;IAC5E,6EAA6E;IAC7E,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,eAAe;IACf,MAAM,GAAG,GACP,QAAQ,CAAC,MAAM,GAAG,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACzB,CAAC,CAAC,MAAM,CACJ,GAAG;aACA,IAAI,CACH,gBAAgB,iBAAiB,yEAAyE,EAC1G,IAAI,EACJ,KAAK,EACL,KAAK,CACN;aACA,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CACrB,CAAA;IACP,MAAM,QAAQ,GAAG,iBAAiB,GAAG,EAAE,CAAA;IACvC,GAAG,CAAC,IAAI,CAAC,wBAAwB,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACxD,GAAG,CAAC,IAAI,CAAC,gBAAgB,UAAU,CAAC,QAAQ,CAAC,qBAAqB,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACtF,GAAG,CAAC,IAAI,CAAC,WAAW,iBAAiB,kCAAkC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;AACzF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAC3C,GAAsB,EACtB,IAAY,EACZ,WAAmB;IAEnB,MAAM,kBAAkB,GACtB,GAAG;SACA,IAAI,CACH,mHAAmH,EACnH,WAAW,CACZ;SACA,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;IACzB,MAAM,MAAM,GAAG,GAAG;SACf,IAAI,CACH,sDAAsD;QACpD,2DAA2D;QAC3D,qEAAqE,CACxE;SACA,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SACpC,MAAM,CAAC,OAAO,CAAC,CAAA;IAClB,MAAM,oBAAoB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACjD,GAAG;SACA,IAAI,CAAC,2BAA2B,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;SACrD,OAAO,EAAE;SACT,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACZ,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,WAAW;YAAE,OAAO,KAAK,CAAA;QACzD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACpD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,WAAW,EAAE,CAAA;YAC9D,OAAO,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,UAAU,CAAA;QAChE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CACL,CAAA;IACD,IAAI,CAAC,kBAAkB,IAAI,CAAC,oBAAoB;QAAE,OAAO,KAAK,CAAA;IAE9D,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,sBAAsB,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;IACpE,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAsB,EACtB,KAAc,EACd,cAAuC;IAEvC,MAAM,SAAS,GAAa,EAAE,CAAA;IAC9B,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAA;IACxC,KAAK,MAAM,KAAK,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GACV,KAAK,KAAK,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAA;QACjF,IAAI,CAAC,MAAM;YAAE,SAAQ;QACrB,MAAM,MAAM,GACV,KAAK,KAAK,SAAS;YACjB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;YACvE,CAAC,CAAC,GAAG;iBACA,IAAI,CACH,8BAA8B,UAAU,CAAC,KAAK,CAAC,kBAAkB,EACjE,KAAK,CACN;iBACA,OAAO,EAAE,CAAA;QAClB,KAAK,MAAM,GAAG,IAAI,MAAM;YAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACjE,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,cAAc,EAAE,CAAC,IAAI,CAAC,CAAA;QACtB,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC5B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtB,CAAC;IAED,yEAAyE;IACzE,2EAA2E;IAC3E,8DAA8D;IAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,mBAAmB,CAAC,GAAG,CAAC;QACtB,CAAC,CAAC,GAAG;aACA,IAAI,CAAC,yBAAyB,iBAAiB,8BAA8B,CAAC;aAC9E,OAAO,EAAE;aACT,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC,CAAC,EAAE,CACP,CAAA;IACD,MAAM,YAAY,GAAG,GAAG;SACrB,IAAI,CACH,gHAAgH,EAChH,iBAAiB,CAClB;SACA,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SAC9B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACtE,KAAK,MAAM,IAAI,IAAI,YAAY;QAAE,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAErD,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -61,6 +61,7 @@ export declare class ZeroDO extends DurableObject {
61
61
  * manifest rows are gone (committed) or recovery rolls the tx back.
62
62
  */
63
63
  private handleCommitTransaction;
64
+ private handleSnapshotTransactionSchema;
64
65
  private handleRollbackTransaction;
65
66
  /**
66
67
  * roll back orphaned transactions for a dead process generation. callers
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/cf-do/worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AA8BlD;;;;;;;;;;;;;GAaG;AAEH,UAAU,GAAG;IACX,OAAO,EAAE,sBAAsB,CAAA;IAC/B,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAClC,8BAA8B,CAAC,EAAE,MAAM,CAAA;IACvC,gCAAgC,CAAC,EAAE,MAAM,CAAA;IACzC,6BAA6B,CAAC,EAAE,MAAM,CAAA;CACvC;AAqID,qBAAa,MAAO,SAAQ,aAAa;IACvC,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,qBAAqB,CAAoB;IACjD,OAAO,CAAC,uBAAuB,CAAqC;IACpE,OAAO,CAAC,yBAAyB,CAAQ;IAEzC,OAAO,CAAC,qBAAqB;YA6Bf,wBAAwB;gBAO1B,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IAmDvC,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;YA+ClC,uBAAuB;IAgBrC,OAAO,CAAC,iBAAiB;IA0CnB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW;IA8B3E,cAAc,CACZ,OAAO,EAAE,SAAS,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,OAAO;IAGpB,OAAO,CAAC,mBAAmB;IAgC3B,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,UAAU;YAqBJ,cAAc;IA4B5B,OAAO,CAAC,UAAU;YAcJ,UAAU;IAwCxB,2EAA2E;YAC7D,WAAW;YAyEX,0BAA0B;IAkBxC,OAAO,CAAC,qBAAqB;IAO7B;;;;;;OAMG;YACW,uBAAuB;YAyBvB,yBAAyB;IAyBvC;;;;OAIG;YACW,yBAAyB;YAmBzB,aAAa;YAuCb,cAAc;IAmB5B;;;;;;;;;;OAUG;YACW,UAAU;IASxB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,UAAU;IAoHlB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,2BAA2B;IAkCnC,OAAO,CAAC,mBAAmB;IAgC3B,OAAO,CAAC,mCAAmC;IAW3C,OAAO,CAAC,iCAAiC;IAMzC,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,2BAA2B;IAKnC,OAAO,CAAC,0BAA0B;IAKlC,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,YAAY;IASpB,iFAAiF;IACjF,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,mBAAmB;IA0C3B,OAAO,CAAC,4BAA4B;IAmBpC,OAAO,CAAC,gCAAgC;IAMxC,OAAO,CAAC,6BAA6B;IAKrC,OAAO,CAAC,2BAA2B;IAuBnC,OAAO,CAAC,2BAA2B;IAKnC,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,YAAY;IAsCpB,OAAO,CAAC,YAAY;IA8BpB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,qBAAqB;IAsC7B,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,YAAY;CAOrB;;mBAGsB,OAAO,OAAO,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;;AAD5D,wBAQC;AAqBD,UAAU,kBAAkB;IAC1B,OAAO,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;KAAE,CAAA;IAC3E,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACzD,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAA;CACzC"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/cf-do/worker.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { DurableObject } from 'cloudflare:workers';
3
3
  import { isSqlMutation, isSqlRowMutation, RollingRowWriteBudget, trackSqlCursorRowsWritten, trackedChangeRow, WriteBudgetExceededError, } from '../do-sql-tracking.js';
4
4
  import { TransactionalCdc, } from './cdc.js';
5
5
  import { appendPendingChange, deletePendingChanges, ensurePendingChangesTable, rollbackPendingChanges, } from './row-undo.js';
6
- import { commitTxJournal, recoverTxJournal, rollbackTxJournal, snapshotSideEffectWriteTables, upgradeToTableSnapshot, } from './tx-journal.js';
6
+ import { commitTxJournal, recoverTxJournal, rollbackTxJournal, snapshotSideEffectWriteTables, snapshotTxSchema, upgradeToTableSnapshot, } from './tx-journal.js';
7
7
  import { DurableWatermarkState } from './watermark.js';
8
8
  const SCHEMA_VERSION = 1;
9
9
  const SQL_ERROR_SNIPPET_RADIUS = 1600;
@@ -178,6 +178,8 @@ export class ZeroDO extends DurableObject {
178
178
  return this.handleExec(request);
179
179
  if (url.pathname === '/batch' && request.method === 'POST')
180
180
  return this.handleBatch(request);
181
+ if (url.pathname === '/snapshot-tx-schema' && request.method === 'POST')
182
+ return this.handleSnapshotTransactionSchema(request);
181
183
  if (url.pathname === '/commit-tx' && request.method === 'POST')
182
184
  return this.handleCommitTransaction(request);
183
185
  if (url.pathname === '/rollback-tx' && request.method === 'POST')
@@ -564,6 +566,26 @@ export class ZeroDO extends DurableObject {
564
566
  this.activeWriteMeasurements = null;
565
567
  }
566
568
  }
569
+ async handleSnapshotTransactionSchema(request) {
570
+ try {
571
+ const body = (await request.json());
572
+ const transactionID = String(body.transactionID || '');
573
+ if (!transactionID)
574
+ throw new Error('missing transactionID');
575
+ const owner = body.owner === undefined ? 'default' : String(body.owner);
576
+ const affectedTables = Array.isArray(body.affectedTables)
577
+ ? body.affectedTables.map(String)
578
+ : [];
579
+ await this.atomically(() => snapshotTxSchema(this.sql, transactionID, owner, affectedTables));
580
+ return Response.json({ ok: true });
581
+ }
582
+ catch (err) {
583
+ const budgetResponse = await this.writeBudgetErrorResponse(err);
584
+ if (budgetResponse)
585
+ return budgetResponse;
586
+ return Response.json({ error: err.message }, { status: 500 });
587
+ }
588
+ }
567
589
  async handleRollbackTransaction(request) {
568
590
  const measurements = this.startWriteMeasurement(request);
569
591
  try {
@@ -576,6 +598,7 @@ export class ZeroDO extends DurableObject {
576
598
  rollbackTxJournal(this.sql, transactionID);
577
599
  return this.deletePendingTrackedChanges(transactionID);
578
600
  });
601
+ this.invalidateSchemaCaches();
579
602
  return Response.json({
580
603
  ok: true,
581
604
  count,
@@ -610,6 +633,7 @@ export class ZeroDO extends DurableObject {
610
633
  this.deletePendingTrackedChanges(txID);
611
634
  return recovered;
612
635
  });
636
+ this.invalidateSchemaCaches();
613
637
  return Response.json({ ok: true, transactionIDs });
614
638
  }
615
639
  catch (err) {